2012-11-18 3 views
0

Вопрос, который я хочу спросить было asked before, но я хочу знать дополнительно с 2010 года:ASP.NET MVC & Component Architecture

  1. если пакеты услуг или MVC4 улучшили историю (особенно для взглядов)?
  2. есть ли уловка, позволяющая мастеру «Добавить контроллер» быть доступным «обычным способом» из отдельной сборки?
  3. есть ли уловка, позволяющая мастеру «Добавить вид» быть доступным «обычным способом» из действия контроллера в отдельной сборке?

Рант Это тирада не является частью моего вопроса, но я чувствую, что это представляет собой белый слон в комнате.

Один ответ, найденный в связи с указанным выше вопросом, который я связал, предположил, что отдельные сборки MVC не относятся к MVC «разделение проблем». Я чувствую, что ответ немного напоминает высказывание: «будущие выпуски C# не будут поддерживать взаимодействие между сборками, потому что такое взаимодействие не имеет отношения к объектно-ориентированному разделению проблем».

Оба утверждения могут быть технически истинными, но оба утверждения игнорируют, что разделение проблем применяется на постоянно растущих уровнях охвата. Другими словами, он применяется не только на уровне объекта или MVC, но также и на уровне архитектуры компонентов.

Говоря иначе, просто потому, что ASP.NET MVC поддерживает «разделение проблем» на уровне объекта (или области), не означает, что история завершена. Я хотел бы, чтобы Microsoft упростила историю, добавив шаблоны «ASP.NET MVC Component», которые позволяют контроллерам и представлениям (как с рабочими мастерами) быть легко частью отдельной сборки.

Возможно, кто-то уже сделал такое?

ответ

1

сторона примечание: любой вопрос, включая напыщенный, будет проголосовать, поскольку он не очень объективен. Дружественный совет для будущего: постарайся задавать вопросы.

Да, есть действительно доступные трюки, чтобы получить инструмент, работающий в других сборках. Я описал его подробно здесь: http://blog.gauffin.org/2012/05/griffin-mvccontrib-the-plugin-system/

В основном вам нужно сделать следующее:

  1. Редактировать в .csproj файл библиотеки классов и добавить следующее: <ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
  2. Создать VirtualPathProvider что может читать представления из других сборок
  3. Приведите диспетчер сборки ASP.NET для включения библиотек классов при поиске контроллеров.

.. или просто используйте проект с открытым исходным кодом Griffin.MvcContrib.