2009-08-05 6 views
6

Мы создаем первую миграцию в Sitecore. У нас есть несколько многоязычных сайтов с содержанием, хранящимся в полях базы данных с LCID. Пользовательские элементы управления делают вызовы базы данных отображаемыми на разных языках. Мы переносим наш контент на элементы Sitecore и хотели бы использовать API Sitecore для получения контента из наших пользовательских элементов управления для создания структур данных.Рекомендации по использованию Sitecore

Я хотел бы знать, как структурировать проекты Visual Studio для разработки Sitecore, чтобы использовать существующие решения VS. Дублируем ли файлы Sitecore .dll и конфиги ко всем решениям или совместно используем одну установку Sitecore?

Кроме того, как вы устанавливаете необходимые файлы для производства нескольких сайтов, которые существуют как отдельные веб-сайты в IIS? Нужно ли иметь дубликаты всех необходимых DLL-файлов и файлов конфигурации в отдельной папке /sitecore для каждого веб-сайта или мы делим одну папку с виртуальной папкой на каждом сайте, указывая на одну и ту же физическую папку /sitecore?

ответ

4

В целом мы рекомендуем запускать все, что находится на 1 веб-сайте IIS. Это экономит много проблем с настройкой и развертыванием. Кроме того, нет необходимости использовать несколько веб-сайтов.

Настройки проектов можно сделать довольно прямолинейно. Просто убедитесь, что цели сборки установлены в папку/Website/bin для установки Sitecore. Если это так, вы можете повторно использовать что угодно. Вы можете связать Sitecore.Kernel как элемент решения в Visual Studio.

В целом я думаю, что вам следует проконсультироваться с местным офисом Sitecore, чтобы подумать, как вы настраиваете это решение. Поскольку мы имеем дело с такими миграциями, мы рады предоставить вам правильный совет и обсудить все варианты.

6

В моем опыте, «все под 1 IIS Веб-сайт» для нескольких сайтов с Sitecore работает только тогда, когда вы не имеете следующее:

  1. Различные SSL сертификатов на сайте: IIS только позволит один сертификат SSL для каждого IP-адреса/комбинации портов и только один на веб-сайт в IIS. У нас есть 4 разных сертификата сертификатов SSL (для 4 разных базовых доменов), поэтому у нас должно быть как минимум 4 отдельных веб-сайта IIS.
  2. Различные виртуальные каталоги на сайт: Если вы хотите, чтобы виртуальный каталог был доступен на одном веб-сайте, но не в другом, вы должны иметь разные веб-сайты в IIS.

Если у вас есть одно из этих требований, они должны быть разными веб-сайтами в IIS (или требования должны быть обработаны за пределами IIS).

Что касается того, как вы это устанавливаете, нужно иметь в виду, что нам сказали, что для нескольких установок Sitecore на сервере требуется наличие разных/нескольких лицензий.

Для нас нам пришлось разделить одну и ту же установку с несколькими сайтами в IIS, потому что у нас были оба эти требования (и только одна лицензия). У нас были все веб-сайты с одинаковой установкой Sitecore (все общие файлы, включая библиотеки DLL и web.config).Жеребьевка спины этого являются:

  • что любые конфигурации или DLL изменения вызывают перезапуск всех сайтов
  • , что каждый сайт имеет свой собственный домен приложения (так умножает требования к памяти, а в памяти кэш ISN» t shared)
  • этот домен приложения - это в основном отдельный процесс, поэтому любое обслуживание или запланированная операция (например, очистка медиа-кэша) выполняется на каждом веб-сайте и обращается к тем же файлам. Это может вызвать проблемы с производительностью и параллелизмом. Мы должны были запустить некоторые из этих процессов из задач, запланированных извне, и только на нашем веб-сайте редактирования, чтобы предотвратить конфликты.
  • Поскольку у нас есть только один файл конфигурации, мы не могли отключить функции редактирования для веб-сайтов доставки контента. Это означает, что нам пришлось использовать функции IIS для предотвращения редактирования на веб-сайтах доставки контента.
  • нам пришлось рассматривать его как многосерверную установку sitecore, а это значит, что нам нужно было настроить стойку для очистки кеша при публикации. мы использовали стойку, доступную в Библиотеке общего источника.
2
  • Вы должны начать с чистым решением веб-приложениями без каких-либо/Sitecore файлов на всех. Если вам нужно добавить файл или изменить файл sitcore, создайте структуру папок в своем проекте, чтобы при развертывании он перезаписал существующий файл sitecore.
  • Все изменения конфигурации Sitecore должны быть в решении в папке/App_Confif/Include/z_ [Client].
  • Все ваши DLL для Sitecore должны поступать из официального файла sitecore NuGet feed, где вы указываете версию sitecore, не используя «новейшую» версию в NuGet.
  • Ваш web.config должен быть из коробки Sitecore web.config и использовать преобразования, чтобы сделать web.config тем, что нужно для сборки.
  • Для вашей структуры проекта вы должны разработать в Helix guidelines.
  • Все изменения в файле Sitecore должны отслеживаться при выборе программного обеспечения для сериализации. Будь то его TDS или Unicorn.

Мой тест лакмусовой бумажки, если я могу создать сайт с помощью инструмента «Сим» и развернуть код проекта и его элементы, работает ли мой сайт? В некоторых ситуациях мы вытягиваем контент производства/сцены из Sitecore using PowerShell, копируем пакет на сервер Nuget и развертываем его для разработки/CI с помощью PowerShell.

Чтобы создать сайт, я использовал инструменты Sim с командной строкой или с этим Powershell script.

Вы не одиноки в своем разочаровании. Я столкнулся с несколькими клиентами, у которых есть веб-сайт Entier Sitecore в своем решении. Развертывания и обновления всегда очень сложны. Но если вы разработаете решение, которое не содержит фактических файлов Sitecore и может быть развернуто на пустой сайт через CI. Тогда вы будете в отличной форме.

1

На вопрос № 2:

Helix guidelines/Habitat Мы используем, кажется, быть источником Sitecore передового опыта. Все тренировки sitecore говорят о создании проекта за пределами Sitecore и только импортируют вещи по мере необходимости. Для Конфигурации я бы предложил быстро прочитать this

Это правда о SSL и пулах приложений может стать проблемой.Развертывание на одном сайте клиента приведет к снижению всех, в зависимости от настройки.

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

0

Для моего понимания, я могу видеть, что у вас есть две проблемы здесь:

1. Как структурировать проект Sitecore

Я являюсь разработчиком Sitecore более 3-х лет, на основе моих опыт, лучшая оценка - создать единый проект Sitecore, который является самым высоким уровнем вашего решения. Вам не нужно устанавливать файлы sitecore для всех проектов, просто сохраните свой старый код как есть и переведите его в базовый код. Например, я только что закончил проект, который клиент хочет, чтобы перейти к использованию Sitecore, решение уже есть, то есть 4 проекта:

  1. ABC.Web ==> высокий слой
  2. ABC.Data ==> работает со слоем данных
  3. ABC.Services => обработка бизнес-слой
  4. ABC.Domain ==> Общий слой

Мы создали новый проект, который должен быть установить Sitecore DLL, которые на самом деле заменить ABC.Web (самый высокий уровень), который будет содержать весь код Sitecore MVC и ничего не изменит для старого кода. С этого момента мы можем работать как с данными из старой системы (путем ссылки на DLL ABC.Services), так и из Sitecore.

2. Как вы устанавливаете требуемые файлы на производстве для поддержки нескольких сайтов?

Sitecore поддерживает многопользовательскую структуру, структурируя дерево контента Sitecore и конфигурацию litte. Вам DON «T нужно создавать отдельные сайты в IIS, , они на самом деле являются одним веб-сайтом с разными доменами. В конфигурационном файле с именем SiteDefinition.config (или вы можете добавить свой собственный файл конфигурации) вы в основном устанавливаете домен с начальным элементом Sitecore распознает домен, который совпадает с доменом в файле конфигурации, и будет перенаправлять на начальный элемент соответственно. Например, на картинке я создал 2 сайта (по существу, они являются двумя ветвями дерева контента sitecore), причем начальные элементы (moj-sait1 и MySite2)

enter image description here

это мой конфиг

<sites> 
     <site name="MySite1" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite1/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
     <site name="MySite2" patch:before="site[@name='website']" 
      virtualFolder="/" 
      physicalFolder="/" 
      rootPath="/sitecore/content" 
      startItem="/content/MySite2/home" 
      database="web" 
      domain="extranet" 
      allowDebug="true" 
      cacheHtml="true" 
      htmlCacheSize="50MB" 
      enablePreview="true" 
      enableWebEdit="true" 
      enableDebugger="true" 
      disableClientData="false"/> 
    </sites> 

Вы можете ссылаться на этот учебник для более подробной информации

https://briancaos.wordpress.com/2010/03/01/working-with-multiple-sites-in-sitecore/