Чертков Р.А.

Белорусский Государственный Университет Информатики и Радиоэлектроники

Инфраструктура Orchard CMS для разработки веб-приложений

В данной статье предлагается рассмотреть возможности по созданию веб-приложений, предоставляемые достаточно новой (первая стабильная версия вышла только в 2011г.) Orchard CMS. Сравнить её с двумя другими популярными CMS на платформе .NET Framework (DotNetNuke и Umbraco), с целью демонстрации возможностей данной системы управления содержимым при построении веб-приложений.

Orchard CMS – это бесплатная, открытая, сообщество-ориентированная платформа, которая позволяет строить качественные веб-приложения для различных целей. Изучение этой CMS затруднено из-за новизны проекта, использования самых современных технологий платформы .NET и недостаточного количества документации.

Orchard CMS построена на ASP.NET MVC 3 и максимально использует возможности Dynamic Language Runtime, в отличии от DotNetNuke и Umbraco, построенных с использованием «обычного» ASP.NET, который еще иногда называют ASP.NET Web Forms, т.к. он предлагает модель программирования, напоминающую разработку обычных оконных приложений.

В качестве уровня работы с данными в Orchard используется Nhibernate (в DotNetNuke - LinqToSql). Nhibernate позволяет при разработке применять code-first подход. Т.е. разработчик может в коде описывать структуру БД, основываясь на классах модели. Так же за счет использования Nhibernate, Orchard теоретически может использовать любую БД, для которой существует Nhibernate провайдер.

За счет использования code-first от Nhibernate, в Orchard введена концепция миграций, которой нет ни в DotNetNuke, ни в Umbraco CMS. При создании модуля (module, единица расширения Orchard) и его таблиц в БД, разработчик в методе Create возвращает номер версии. При добавлении новых записей или таблиц разработчик пишет метод UpdateFromX, где x – номер версии, и возвращает номер новой версии. А Orchard умеет автоматически определять установленную версию, проверять модуль на обновления и обновлять.

Важной особенностью Orchard, отличающей её от других систем управления содержимым, является хорошо развитая динамическая система типов. Основными понятиями являются content item (объект содержимого), content type (тип содержимого), content part (часть содержимого) и content field (поле содержимого).

Тип содержимого – это аналог класса в ООП (аналог в Umbraco – это document type), а объект содержимого – аналог экземпляра класса. Типы содержимого включают в себя части и поля содержимого. Часть – это член типа, который инкапсулирует данные и поведение. Поле инкапсулирует простые данные (в Umbraco аналогом поля являются свойства (properties) типа документа).

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

Связующим звеном между данными частей содержимого и их представлением является shape (формы). Формы – динамические объекты, которые обладают представлением (view). Представления возвращаются драйверами (drivers), которые являются аналогами контроллеров в ASP.NET MVC.

Тема в Orchard — это набор стилей и базовой разметки (layout) страниц, которая состоит из зон (zone). Зона – это место вывода представлений форм.

Orchard содержит уникальную концепцию расположения контента в виде виджетов (widgets), а также включает концепции событий (events), действий (actions) и проекций (projections).

Вообще Orchard, несмотря на прекрасно развитую административную часть (конфигурированию поддается абсолютно все, и при наличии определенного набора частей и полей содержимого вы можете создать все, что пожелаете), это CMS заметно больше ориентирована на разработчика, в отличии от DotNetNuke и Umbraco. Даже беглый обзор сайта проекта Orchard содержит очень много описания архитектуры данной системы управления содержимым, примеры написания модулей, когда у конкурентов основной упор сделан на демонстрацию возможностей по быстрому развертыванию сайта из готовых частей.

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

 

Литература:

1.     Официальный сайт проекта Orchard [Электронный ресурс]// URL: www.orchardproject.net

2.     Официальный сайт проекта Umbraco [Электронный ресурс]// URL: http://umbraco.com

3.     Официальный сайт проекта DotNetNuke [Электронный ресурс]// URL: www.dotnetnuke.com

4.     Bertrand Le Roy, Orchard Extensibility [Электронный ресурс]// URL: http://msdn.microsoft.com/en-us/magazine/hh708754.aspx