Некоторое время назад я разработал небольшую инфраструктуру MVC, когда MVC не совсем правильно работал на Mono (или, по крайней мере, не был стабильным)
Он называется BarelyMVC и имеет лицензию BSD на битбакет .
Ну, в принципе, BarelyMVC, хотя и может использоваться практически во всех проектах, может быть не лучшим инструментом. Но в целом он имеет следующие особенности:
- Все функции MVC без кривой обучения или обходных путей архитектуры
- Получите полный контроль над сгенерированным HTML. Представления - это просто предварительно обработанный HTML с динамическими битами.
- Маршрутизация поддерживает дружественные URL-адреса простым и последовательным образом.
- Меньше магии. Легко видеть, что будет и почему
Итак, подведем итог. Несмотря на то, что я называю это MVC, он больше похож на VC, view и controller. Мнения конечно существуют и очень легкие. Контроллеры в основном класса HttpHandler
. Там нет реальной необходимости в моделях, хотя. Абстрагирование вещей с помощью моделей очень легко сделать с помощью BarelyMVC, но они действительно необязательны. Нет предположения, что под каждым HttpHandler находится модель данных. Хотя это может привести к более сложному коду, я видел довольно плохой код, который случается, когда люди пытаются обойти принудительную архитектуру MVC. Обходные пути будут происходить несмотря ни на что, поэтому я просто сделаю так, чтобы мои рамки были чрезвычайно легко обойти. Я даю вам достаточно силы, чтобы выстрелить вам в ногу, но я также удостоверяюсь, что вы очень четко знаете, что собираетесь сделать.
Он состоит из трех основных компонентов:
- ViewEngine - действительно потрясающий движок, созданный с использованием T4. Все ваши взгляды статически компилируются и статически типизируются. Поэтому intellisense просто работает на ваши взгляды. Не более
ViewData["typo"]
ошибок.
- Маршрутизатор - мощный механизм маршрутизации, который отображает URL-адреса на ваши HttpHandlers, в то же время позволяя SEO и удобные для чтения URL-адреса
- FSCAuth - просто защищенная структура аутентификации, которую чрезвычайно легко внедрить в любую базу данных.
И, конечно, каждый из этих 3 компонентов также является необязательным.
Я сделал свой собственный блог в BarelyMVC, и я думаю, что он стал очень хорошим примером того, насколько крут BarelyMVC. Его исходный код также находится в bitbucket