Лучшая практика для проекта Sitecore

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

Какой был бы лучший подход для запуска проекта Sitecore? Как бы вы настроили свой проект? Каким будет ваш подход к переработке кода в будущих проектах?

Вкратце: какой опыт у вас есть (если вы работали или работаете над проектами Sitecore) и как вы порекомендуете другим людям работать с Sitecore.

Сейчас мы заняты созданием блоков Sitecore, которые мы можем просто перерабатывать в других проектах, но я точно знаю, что есть 1001 полезные советы и трюки. Надеюсь, у нас есть один Sitecore pro @stackoverflow, который может немного помочь.

Ответы

Ответ 1

Это, как вы сказали, довольно большой вопрос. Вот некоторые из моих мыслей:

Разработка среды

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

Я открываю Visual Studio и создаю решение и включаю необходимые файлы. Я создаю какой-то рендеринг HelloWorld и пытаюсь создать решение, чтобы я мог проверить, что все работает так, как должно.

Когда все запущено и работает, я создаю zip файл всего решения, включая папку данных. Теперь пришло время добавить это к какой-то системе управления версиями, в моем случае Subversion.

Я добавляю zip файл в subversion, а также добавляю все файлы, которые, я думаю, будут изменены во время проекта, обычно я говорю subversion, чтобы игнорировать папку sitecore, это ускоряет производительность при проверке файлов.

После выполнения действия фиксации другие члены моей команды могут проверить код и начать разработку (после распаковки zip файла, вне курса)

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

Мы могли бы разработать несколько разных проектов, используя одну и ту же установку Sitecore, но поскольку почти все клиенты используют разные версии Sitecore, мы нашли этот подход немного громоздким.

Часто мы настраиваем автоматизированный сервер сборки, но это еще одна проблема.

Многоразовый код и рендеринг

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

Загрузка кода клиенту

Это делается через пакеты sitecore, обычно с каким-то динамическим выбором для включения файлов, скажем, все ascx файлы в определенной папке меняли последние 5 дней.

Там у вас есть.

Ответ 2

Вот общая информация об установке, основанная на том, как мы это делаем.

Subversion Это не Sitecore, но мы создали наш репозиторий, подобный этому

  • ветки. Это используется для работы с большими обновлениями на сайте, которые могут занять некоторое время. Скажем, например, я хотел обновить, как все боковые панели на сайте работали, и это займет несколько недель. Мы создаем новую ветку и настраиваем еще один экземпляр sitecore для этой ветки dev и делаем то, что нам нужно делать. Когда он будет завершен, мы объединим его обратно в багажник для тестирования и развертывания.
  • теги. Это используется для хранения копии кода, которая никогда не будет объединена обратно в соединительную линию (это разница между этим и ветвями), например, когда мы развертываем обновление до на сайте мы можем создать тег указанного кода, чтобы мы могли вернуться к нему, если это необходимо.
  • trunk. Активный код, все, что здесь указано, всегда должно быть развертываемым.

Багажник Именно здесь мы активно разрабатываем/исправляем ошибки, в зависимости от того, в какой части проекта мы находимся. Мы установили что-то вроде этого (в качестве примера проект называется TheProject)

Мы сохраняем файл решения в корне этой папки, это будет ссылаться на различные библиотеки в папке src, а также на веб-проект в папке веб-сайта.

  • docs. Место для размещения документации по сайту. Я настоятельно рекомендую, чтобы при заполнении функций/разделов вы пишете небольшое руководство о любых специальных знаниях, необходимых для его работы. Поэтому скажите, что я работаю над отображаемым содержимым на целевой странице. Этот блок автоматически вытащит некоторый контент, если он явно не переопределен. Что я делаю, когда я заканчиваю что-то вроде этого, я пишу руководство для клиента, используя множество скриншотов. Я отправляю руководство клиенту, а также помещаю его в папку документов. Это помогает клиенту обучать своих сотрудников, а также помогает новым разработчикам быстро справляться с тем, как это делается.
  • lib. Здесь мы храним любые DLL, которые нам понадобятся для ссылок в наших проектах.
  • test - место для тестирования модулей.
  • src. Здесь мы храним код библиотеки для конкретного проекта. Итак, у нас будет папка TheProject.Library, и в ней будет проект визуальной студии для упомянутых
  • web/Веб-сайт. Здесь мы установили Sitecore и являемся корнем сайта. Здесь у нас есть проект, называемый чем-то по строкам TheProject.Web. В проекте мы добавляем все общие вещи, такие как папка web.config/layouts и т.д.

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

Итак, когда мы закончили со всем этим, у нас есть что-то вроде структуры решения/проекта

TheProject (Решение)

  • TheProject.Library
  • TheProject.Web
  • MyCompany.SitecoreLibrary(наша общая библиотека sitecore)

Инструменты Это еще одна общая вещь, но я считаю, что это может действительно помочь ускорить разработку Sitecore. Если вы обнаружите, что делаете что-то снова и снова в Sitecore, используя API, напишите инструмент, чтобы сделать это за вас. Это не только помогает решить любую проблему, которую вы решаете, но также помогает вам лучше ознакомиться с API.

Resharper Это скорее общее предложение .NET для разработки, используйте Resharper (http://www.jetbrains.com/resharper/index.html). Я своего рода ребята-рехарпера, он делает так много вещей с развитием проще и быстрее. На мой взгляд, самое большое преимущество заключается в том, насколько легко он делает код рефакторинга, что очень важно делать со временем, чтобы вещи были чистыми и понятными.

Я надеюсь, что это поможет.

Гейб

Ответ 3

Посмотрите эту серию.

В частности, часть архитектуры компонентов увеличила наш уровень повторного использования.

Ответ 4

При создании проекта Visual Studio в корневой папке Sitecore вы будете хранить все файлы DLL Sitecore внутри каталога bin, не забудьте добавить к проектам ссылки на все эти файлы:

bin\ComponentArt.Web.UI.dll
bin\HtmlAgilityPack.dll
bin\ITHit.WebDAV.Server.dll
bin\Lucene.Net.dll
bin\Mvp.Xml.dll
bin\Newtonsoft.Json.dll
bin\RadEditor.Net2.dll
bin\Sitecore.Kernel.dll
bin\Sitecore.Logging.dll
bin\Sitecore.NVelocity.dll
bin\Sitecore.Zip.dll

Потому что, когда вы очищаете свой проект, и у вас будет только ссылка Sitecore.Kernel.dll(в большинстве случаев), вы потеряете большую часть DLL из каталога bin!!