2014-09-03 3 views
2

Я новый для Umbraco, я просмотрел видео Umbraco.tv и хочу использовать Umbraco в проекте как cms для управления и редактирования контента. Я очень благодарен за руководство, время и ваши мысли на 3 вопроса:Архитектура приложения Umbraco

  1. Как на основе Umbraco управляемых данными proejct должны architecutured? Для пользовательских таблиц базы данных вы используете отдельную базу данных или такую ​​же базу данных Umbraco?

  2. Как вы работаете с пользовательскими данными (без содержания)? Вы делаете все тип документа, даже если это данные, которые вы не собираетесь создавать, например, простые данные, представленные в форме?

  3. Для DAL какая технология или ORM вы используете? Предоставляет ли Umbraco какой-либо API для сохранения простых данных, которые не являются типом контента или документа?

Еще раз спасибо.

ответ

2

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

Обычно я рекомендую отдельную базу данных для данных, отличных от Umbraco, поскольку это сохраняет все прекрасно независимым и управляемым, особенно по мере роста проектов. Это также означает, что данные, специфичные для CMS (то есть контент), могут храниться отдельно от данных не-CMS, например. регистрация пользователей.

Однако, если проект небольшой и вряд ли будет расти, сохраните его просто. Используйте ту же базу данных, что и копирование Umbraco в ORM Petapoco. Например:

ApplicationContext.DatabaseContext.Database.Save (new Thing());

Или

вар вещь = ApplicationContext.DatabaseContext.Database.Single (thingId);

Для пользовательских данных, опять же, это вопрос о необходимости, ремонтопригодность и простота. Используйте только типы документов, для которых требуется , которые могут храниться в CMS. Мое личное правило заключается в том, что, если оно не является содержимым или организует контент, оно не принадлежит к CMS. Например, новости и категории новостей, очевидно, принадлежат к CMS. Однако комментарии, сделанные в статье, не имеют оснований для использования в CMS.

Что касается DAL, как я уже сказал, Umbraco имеет реализацию Petapoco, которую можно использовать из коробки. Если проект достаточно прост, просто используйте его. Нет смысла использовать что-либо еще, если вам не нужно какое-то разделение и/или какое-то дополнительное ворчание, в каком случае я бы рекомендовал использовать NHibernate или EF.

В дополнение к вышеуказанным пунктам,

  • Использование NuGet;
  • Используйте режим MVC Umbraco, так как он обеспечит вам большую гибкость. Просмотрите номер Hybrid Framework, поскольку он является очень хорошей отправной точкой для надежной и гибкой архитектуры проекта;
+0

Спасибо @Digbyswift, Не могли бы вы объяснить: «Нет смысла использовать что-либо еще, если вам не нужно какое-то разделение и/или какое-то дополнительное ворчание, в этом случае я бы рекомендовал использовать NHibernate или EF». Не можем ли мы сцепиться с помощью Petapoco в отдельном DAL? – user576510

+0

любезно объяснить могут быть ситуации, когда для некоторых дополнительных потребностей мне может понадобиться EF или Nhibernate? – user576510

+1

Вы можете утверждать, что если вы собираетесь использовать отдельную установку Petapoco, тогда вы можете просто использовать реализацию Umbraco, особенно если проект недостаточно сложный, чтобы гарантировать это. Однако вы правы, вы можете использовать свой собственный Petapoco, и я имею несколько случаев. EF и NHibernate предлагают множество преимуществ по сравнению с микроорганизмами, такими как Petapoco. Например, NHibernate имеет кеширующие слои для предотвращения вызова объектов дважды в одном сеансе, а также зрелого API запросов. – Digbyswift

2
    • Вы всегда нужен доктайп в Umbraco, даже если страница не предлагает любой тип WYSIWYG редактируемость
    • Я бы рекомендовал использовать сервис-ориентированной архитектуры, а также. dll, которые вы попадаете в Umbraco, может позвонить в службу. Затем вы можете развернуть эту службу и полностью контролировать доступ к данным. Выберите любой метод, который вы хотите. Большинство современных сайтов используют ORM, и не имеет значения, какие, хотя nHIbernate и Entity Framework являются фаворитами. Не пугайтесь смешивать и сопоставлять более прямую форму доступа к данным, поскольку они могут дать вам больше контроля, особенно в ситуациях, когда важна оптимизация производительности больших запросов.

Если вы не знакомы с добавлением пользовательских функций .NET в Umbraco, Пробуя добавления пользовательских элементов управления .NET в Umbraco даст вам хороший старт, и, чтобы помочь вам понять, как вы можете использовать собственные библиотек .dll в Umbraco:

http://umbraco.com/help-and-support/video-tutorials/introduction-to-umbraco/developer-introduction/using-net-user-controls.aspx

1
  1. Вы можете использовать базу данных, содержащую таблицы Umbraco для таблиц, не используемых в Umbraco. Если у вас нет проблем с хостингом для использования нескольких баз данных, вы можете просто ссылаться на вторую базу данных в web.config - это было бы безопаснее, чем использование базы данных Umbraco по умолчанию, поскольку пакеты Umbraco часто добавляют таблицы базы данных &, там могут быть конфликты имен.

  2. Просмотр данных без Umbraco (например, из базы данных) лучше всего осуществляется путем добавления макросов, которые имеют доступ к данным, используя стандартные .Net шаблоны (например, сценарии бритв, .Net управления пользователя) & затем в Umbraco добавить в ссылке к макросу в шаблоне (просмотр). Вы можете использовать несколько шаблонов (видов) для любого типа документа; поэтому, если у вас есть тип документа, называемый «формами», который не содержит данных, вы можете использовать флажки «разрешенные шаблоны», чтобы сказать, какие виды (ы) действительны для этого типа документа.Когда вы добавляете элемент контента, вы должны указать тип документа в начале, но шаблон (представление) можно изменить в любое время.

  3. При хранении данных любого .Net ORM будет работать с Umbraco (см http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET) Я использовал Linq для Sql, Дозвуковой & Dapper до сих пор - но есть много вариантов.

+0

Спасибо @amelvin, я очень ценю ваш ответ. Наряду с Petapoco у нас есть и другие ORM/библиотеки. Как вы считаете Петапопо? какой из них вы считаете лучшим? – user576510

+1

Мне очень нравятся дозвуковые и шаблоны T4, например, для создания POCOs для каждой таблицы базы данных (и избегайте многого ввода) - поскольку petapoco использует этот аспект Subsonic, и большая часть синтаксиса очень похожа на дозвуковое обновление, если заявленное повышение производительности является точным. – amelvin

2
  1. Все пользовательские я положил в той же базе данных моей установки Umbraco, но все в пользовательских таблицах. Я не касаюсь вкладок Umbraco, я бы не хотел влиять на мои будущие обновления версий.
  2. Форма данных, которые я храню в своих собственных таблицах, я избегаю создания узлов контента с ними, это часто сложно и не дает мне гибкости, которую мне часто нужно.Вместо этого я создаю тип документа «Admin», который находится за логином (жестко закодированный доступ, но легко подключается к пользователям/членам Umbraco, если он нужен) и использует собственный пользовательский интерфейс для отображения моих сохраненных пользовательских данных.
  3. Я использую PetaPoto (http://www.toptensoftware.com/petapoco/), это микро ORM, который добавляется через один файл (установка так проста), используя ту же строку соединения db. Затем я создаю собственные модели по мере необходимости и с частями MVC. Я обычно держусь подальше от захвата маршрута и скорее использую Surface Controllers, и ajax вызывает почти все.

Надеюсь, это поможет!

Смежные вопросы