Под модульными приложениями я подразумеваю приложения, в которых базовая функциональность и модель данных могут быть расширены без изменения кода основного приложения.
Это популярный подход, например.CRM с открытым исходным кодом, такие как SugarCRM или VTiger.
Этот подход может быть использован в приложении asp.net mvc с использованием областей или (переносимых областей из MVC contrib), которые позволяют добавлять новые контроллеры и представления в отдельных сборках без влияния на базовые библиотеки.
проблема возникает, когда кто-то хочет расширить модель данных базового приложения.Это невозможно в практическом смысле с структурой сущностей, где определение модели централизовано в файле Edmx.Этот подход не позволяет добавлять новую таблицу, которая будет ссылаться на некоторую базовую таблицу модулей в новой сборке.
Я заметил, что Orchard CMS достигает полной модульности с помощью nHibernate (что говорит, учитывая, что ониу Microsoft есть поддержка, и проект задумывался как демонстрация технологий).Nhibernate позволяет такую модульность благодаря подходу POCO.Каждая сущность / таблица определена в отдельном файле, что, очевидно, является подходом для модульных приложений.
Однако есть надежда с подходом Entity Framework Code Only, который генерирует модель Edmx во время выполнения с использованием определений POCO,Кто-нибудь пробовал этот подход для распространения определений модели данных в отдельных подключаемых проектах?