Для чего предназначен проект MVC Turbine, какие проблемы он решает, стоит ли его использовать? Какие есть преимущества и недостатки? Есть ли альтернативные решения?
Что такое MVC Turbine?
3
Спросил
Новые ответы
Новые
Лучшие
2
Официальное описание:
MVC Turbine — это плагин для ASP.NET MVC, который взаимодействует с нижележащим IoC-контейнером и автоматически разрешает зависимости для контроллеров, движков отображения (view engines), binder`ов, view engines, http-модулей и тд.
Заявленные фичи:
- Темплейты решений Visual Studio 2008 для IoC-контейнеров
- Ninject
- Castle Windsor
- StructureMap
- Unity
- Новый фреймворк времени выполнения для поддержки расширяемости
- Blades (components) — автоматически регистрируемые компоненты, которые загружаются во время выполнения.
- Представлены объекты Core Blades для определения основных runtime-объектов приложения ASP.NET MVC:
- MvcBlade — для MVC-специфичных компонентов (Controllers, View Engines и тд).
- WebBlade — для компонентов пространства имен System.Web components (IHttpModule и тд).
- RoutingBlade — для компонентов, определяющих настройку роутинга.
- RotorContext, который работает с Blades для настройки рантайма.
- Автоматическая регистрация объектов View Engine: любой класс, реализующий IViewEngine регистрируется срвис-локатором и используется в качестве движка отображения.
- Авто регистрация фильтров (MVC Filters) для поддержки constructor injection.
- InferredViewResult для обработки неопределенных action`ов и возврата ошибки 404.
- Работает с ASP.NET MVC на Mono
Сама идея проекта, конечно, выглядит очень привлекательно. И задачи решаются вполне актуальные. Но при близком расмотрении выявляются некоторые нюансы реализации:
- Нет поддержки для Spring.NET (Это самое обидное)
- Нет поддержки знаменитого Comon Service Locator (абстракция над всеми популярными IoC-контейнерами)
- MVC Turbine определяет собственный синтаксис регистрации зависимостей в контейнере, что само по себе сомнительно, учитывая, что в проекте уже используется синтаксис какого-то из IoC-контейнеров.