Orchard - система управления контентом на ASP.NET MVC

воскресенье, 21 ноября 2010, Александр Краковецкий

Последнее время я занимался поиском нового движка для нашего сайта в связи с тем, что Community Server очень прожорлив, что очень плохо сказывается на удобстве работы с ним. Это можно было наблюдать некоторое время назад - время загрузки сайта было очень велико. К сожалению, приемлемого решения кроме как купить свой выделенный сервер (ха-ха) или использовать что-то более легковесное, нет. 

В первую очередь расскажу о тех CMS, с которыми мне пришлось познакомиться более подробно. Список достаточно большой - dotnetnuke, N2, mojoPortal, Umbraco, TheBeerHouse, Oxite, Telligent Graffiti, Composite C1, MonoX, Sitefinity... Требования были более чем простые - мультиблогинг с поддержкой нескольких авторов, простые комментарии, возможность кастомизировать дизайн и добавлять свои функциональные блоги аля твиттер, очень желательно календарь мероприятий и простенький каталог. Кроме того, вопрос нагрузки на сервер vs. функциональность стоял очень остро. Вроде ничего сложного, скажете вы, и будете правы. Но на практике все намного сложнее - либо CMS больше похожа на комбайн аля все-в-одном (в итоге менять Community Server, например, на dotNetNuke смысла нет), либо чего-то и списка требований не было, либо при минимальной кастомизации все скатывалось в полную ж...

В итоге после долгих поисков взгляд остановился на Oxite. Эта система очень молодая, она написана на ASP.NET MVC, ее представляла Microsoft на MIX10 и PDC10. Кроме того, сайты этих конференций также сделаны на Oxite. Все бы хорошо, но Oxite - система для разработчиков и в принципе не готова для использования из коробки. Тогда взгляд переместился на Orchard CMS, которая является старшой сестрой Oxite. Orchard, в целом, понравился, поэтому дальше остановимся на нем более подробно.

Установка Orchard CMS

Идем на сайт http://orchard.codeplex.com/, качаем последний стабильный (ха-ха) билд и запускаем проект. Сразу оговорюсь, что в данный момент версия Orchard - 0.8, что как бы намекает... но видимый прогресс в разработке + галерея расширений + open source вселяет надежду на скорое счастье. Основной сайт проекта все же http://orchardproject.net/, где есть документация, галерея, и ссылки для скачивания, которые ведут на codeplex. Также можно использовать для установки Web Platform Installer, процесс которого описан здесь.

Установка очень проста, причем, она действительно простая, если сравнивать с другими системами. Поддерживается из коробки SQLLite и Microsoft SQL Server. Удобно, с учетом того, что нужно было быстро попробовать ее на хостинге, а SQL Server установлен не был.

Внешний вид немного кастомизированного приложения на Orchard:

http://orchardproject.net/content/images/screenshots/orchard-site.png

Внутренности Orchard

Остановлюсь на основных принципах Orchard:

  • плагинная архитектура, что позволяет писать свои плагины, модули, типы контентов. Также есть галерея, с помощью которой можно устанавливать дополнительные модули, которых нет из коробки
  • Orchard написан на ASP.NET MVC 3, использует движок Razor
  • админка простая, но достаточно удобная
  • есть возможность создавать блоги, пользователей, страницы, свои типы данных

Структура Orchard:

Как вы видите, все возможности оформлены как отдельные модули, есть проекты Core и Framework, объединяющие всех их воедино.

Что есть на данный момент (правда, не все возможности реализованы полностью):

  • Basic admin panel and login
  • CMS page creation and management
  • Content zones within pages
  • Content – Different content types/metadata, viewers and editors for content
  • Content editing and publication (drafts, scheduling, preview)
  • Extensibility - Initial content type and composability infrastructure (based on MVC2 areas)
  • Media management (basic support for uploading and rendering images in content)
  • Users, roles, membership and profile data (Users/Roles/Permissions, Mgmt)
  • XML-RPC (Live Writer, MetaWebBlog) support for blogs
  • Basic blog (create and manage blogs and posts, RSS/Atom, draft/publish, archives)
  • Comments – Associate comments with content types, manage comments, spam protection
  • Tags – Associate tags with content types, browse by tag
  • Settings – App-level, extension-level settings definition and UI/management
  • Themes – Theming model, UI to install/remove themes, preview themes
  • Setup
  • Simple navigation
  • Multi-tenancy
  • Azure support
  • Command-line tooling
  • Event model (a.k.a. plugins)
  • App Localization (of admin panel, modules, themes)
  • Content Localization (multi-lingual sites)
  • Search and Indexing
  • Module extensibility API and packaging
  • Scaffolding of Modules (cmd-line)
  • Creation of arbitrary content types and items - fields, parts
  • Define content types, parts, and fields using the admin panel or code
  • Add fields to content types using the admin panel or code
  • Associate content parts to types using the admin panel or code
  • Add fields or parts to existing content types using the admin panel or code
  • Command-line support (bin/orchard.exe)
  • Enabling features of modules
  • Data migrations on module activation/upgrade
  • Reporting (event logs)
  • Search (based on Lucene)
  • Application localization
  • Content localization
  • Module packaging
  • Dynamic compilation of modules
  • Data migrations
  • Custom content types built from parts and fields
  • Theme re-foundation: Razor integration, Page Object Model, naming conventions and helpers
  • Script and stylesheet registration
  • Theme packaging
  • Widgets
  • Content item lists

В данный момент поддерживаются такие плагины:

Orchard поддерживает разные контент-зоны:

Любой тип контента может быть размещен в любой зоне. Кстати о контент типах. Админ может создавать свои типы контента, что избавляет от необходимости создания конкретных сущностей аля "событие", "календарь", "user group" и т.д., ведь это можно сделать с помощью унифицированного сценария.

Например, если мы хотим создать контент тип "компания", то мы можем добавить такие поля как название, адрес, телефон, расположение, twitter и т.д. Единственной проблемой, с которой я столкнулся, что типов свойств всего два - текстовое поля и поле date (есть еще одно дополнительное - taxonomy, если подключить плагин из галереи). Этот функционал не позволяет создать, к примеру, поле-ссылку, но хорошая новость в том, что можно создавать свои типы полей.

Тем в данный момент не так много - одна, но вся задача пр кастомизации - подправить CSS стили, все остальное зашито в моделях конкретных контент типов.

Imagine Cup

Перспективность данной CMS подтверждает тот факт, что написание модулей для Orchard включили отдельным конкурсом на Imagine Cup - ежегодном соревновании для студентов, которое состоится в следующем году в Америке. Если вас заинтересовал Orchard и вы студент, то вам сюда: http://imaginecup.com/competitions/orchard.

Замеченные недостатки и достоинства

Их тоже не так чтобы много, но они крайне неприятные:

  • комментарии можно добавлять только plain text, т.е. даже параграфы не поддерживаются. Я пытался эту проблему решить, и один из вариантов решения опишу в одном из следующих постов
  • имя автора блог поста не показывается [:@]
  • RSS как-то муторно работают, нужно поковырять более глубоко
  • уже упомянутое отсутствие определенного количества field types
  • при переходе на страницу со списком постов, помеченных определенным тэгом, при переходе на пост выдается исключение из-за неправильной обработки роутинга
  • в виджете с последними комментариями не был замечен paging, хотя для блогов он работает

Из достоинств можно выделить:

  • возможность сообщить на codeplex о замеченных проблемах и получить быстрый ответ
  • возможность кастомизировать и допиливать самостоятельно
  • понятный роадмап и возможность на него влиять

Итоги

Тот факт, что интерес к Orchard увеличился в недавнего времени (Imagine Cup, доклады на конференциях, видео на techdays.in.ua) говорит о том, что CMS достаточно перспективная. Но нужно констатировать, что на сегодняшний момент ее нужно еще допиливать, чем как бы и займемся. Студентам я бы рекомендовал принять участие в конкурсе Imagine Cup, специалистам, желающим изучить MVC - скачать и поковырять внутренности Orchard. 

Orchard в твиттере - http://twitter.com/orchardcms.

Видео для начала:

Кроме того, хотелось бы услышать мнения по поводу нашей новой тестовой версии msug.vn.ua - http://bit.ly/aTM9TN. Это поможет нам корректно расставить приоритеты и сконцентрировать свои силы на полезных и необходимых фичах. Также хотелось узнать, есть ли люди, которые уже успели поработать с этой CMS и готовые поделиться своим опытом.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии