Перенести данные Umbraco с сайта разработки на сайт в реальном времени программно - PullRequest
7 голосов
/ 27 апреля 2011

Я нахожусь в ситуации, когда мне было поручено создать приложение или расширение для Umbraco, которое позволяет внутренним пользователям выполнять миграцию своих изменений на сайте разработки на действующий сайт. Предполагается, что эта миграция происходит один раз в день или когда бэкэнд-пользователи нажимают кнопку в бэкэнде.

Мне известно, что Umbraco предлагает это в пакете Courier, но, видимо, для этого случая он работает недостаточно хорошо.

Еще несколько деталей:

Сайт разработки и живой сайт находятся на одном сервере, как и их базы данных. Данные просто нужно будет перенести из одной папки в другую, и то же самое с таблицами в базе данных.

Как я вижу, есть два способа сделать это.

1) Вы выполняете полную миграцию, где вы в основном разбираете действующую базу данных и обновляете ее до новой версии. Затем вы также копируете все нужные вам файлы.

2) Вы создаете пакет, содержащий типы документов и т. Д., Который вы изменили на своем сайте разработчика, и загружаете этот пакет на действующий сайт.

Проблема с номером 1 заключается в том, что, по-видимому, вам необходимо переиздать весь сайт после завершения передачи. Насколько я понял, вы можете сделать это с помощью веб-службы, но я бы предпочел, чтобы вместо этого я использовал консольное приложение.

Тогда у меня вопрос:

Есть ли способ создавать пакеты программным способом и загружать их таким же образом, или каков был бы наилучший способ достичь этой миграции программно?

Любые предложения будут высоко оценены, так как я в некотором затруднении из-за способа сделать это:)

EDIT

Я фактически закончил полное зеркалирование в том смысле, что использовал Robocopy для передачи всех файлов, которые были изменены в папках, а затем я сделал резервную копию сайта разработки с помощью команды SQL, а затем восстановил в действующей базе данных с помощью команды RESTORE SQL.

В командах SQL необходимо выполнить несколько настроек, но они работают без сбоев, и полная передача занимает до 10 секунд в зависимости от количества файлов, которые были изменены.

И последнее. Если вы хотите, чтобы изменения были видны, вам нужно перезагрузить Umbraco. Это можно сделать, изменив файл web.config вручную или установив его LastWriteTime программно.

1 Ответ

4 голосов
/ 27 апреля 2011

Вы всегда можете создать пользовательский контроль, который будет обрабатывать переиздание всего сайта для вас, это можно вызвать из вашего консольного приложения.

Вы также можете присоединиться к программе Courier 2 beta , которая действительно достаточно хороша (во всяком случае, я не тестировал ее самостоятельно).

Другим маршрутом может быть предложение всех узлов в виде ленты XML и использование функции планирования CMSImport для автоматической миграции узлов.

Это сложный вопрос, вариантов много, но пока нет серебряной пули. Я очень надеюсь, что Courier 2 подойдет для этого и с нетерпением ждет его выхода.

...