A ContentPart
и обычная модель MVC очень похожи.Один из способов увидеть Orchard - это создание движка над MVC.Позвольте мне объяснить ...
В традиционном приложении MVC у вас есть очень простой конвейер: поступает запрос, направляется на действие контроллера, которое использует запрос для построения модели и возврата результата, чтозатем обычно используется для передачи модели представления в представление.HTML-код, представленный представлением, затем отправляется в браузер.Это упрощение, но это общая идея.
В случае Orchard, много разных модулей будут вносить вклад в любую отдельную страницу.Контроллер есть, но он глубоко в Орчарде, и вы не должны обращать на него внимания (в типичных случаях).Модель на самом деле динамически составляется всеми этими модулями в рамках совместного и разобщенного процесса.
Причина, по которой Орчарду нужно так поступать, заключается в осознании того, что большая часть контента состоит из небольших составных частей.Например, запись в блоге состоит из заголовка, тела, слага, автора, списка тегов и комментариев (которые сами являются элементами контента, состоящими из частей: заголовок, автор, текст и т. Д.).
Каждая из этих частей происходит из какого-то модуля и управляется «драйвером детали», который на самом деле ближе всего к контроллеру, но действует на уровне детали, которая являетсяэто имеет смысл для Орчарда, гораздо больше, чем просьба.Драйвер отвечает за создание «фигуры» из детали, которая аналогична созданию дроби модели вида.Позже форма будет визуализирована с помощью шаблона (который является частью представления), а полученный HTML-код будет скомпонован в большую страницу для отправки в браузер.
Итак, подведем итог, преимуществоМодель Орчарда поверх простого приложения MVC состоит в том, что вместо простого запроса -> контроллер-действие -> просмотр конвейера вы получаете более богатый, компонуемый, параллельный и очень не связанный между собой конвейер для рендеринга страницы из повторно используемых частей.Это не всегда уместно, поэтому Orchard по-прежнему позволяет реализовывать простые контроллеры с помощью модулей, но для контентных веб-сайтов или разделов веб-сайтов это чрезвычайно мощно и допускает сложные сценарии, которые будет гораздо сложнее реализоватьс нуля в традиционном приложении MVC.