Мне нужно написать расширяемое приложение ASP.NET MVC 3, в то время как расширение - это .dll
с очень конкретной целью (например, расширение форума, расширение блога, расширение вики, и т.д.).
Расширение не будет иметь никаких представлений, что должно значительно упростить этот процесс. Он должен иметь только контроллеров и несколько моделей .
Я думал о реализации этого с областями MVC и загружал их так:
// Global.asax
public static void PreApplicationStartMethod()
{
foreach (var file in Directory.GetFiles(
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Extensions/"), "*.dll"))
{
BuildManager.AddReferencedAssembly(Assembly.LoadFile(file));
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
...
}
Теперь это сработало отлично, но, тем не менее, похоже на довольно старый и статичный способ ... .NET 4 имеет Managed Extensibility Framework. MVC 3 имеет инъекцию зависимостей.
Я читал о Portable Areas и SharpArchitecture. Я пытался понять каркас плагина Orchard как из исходного кода, так и из документации. Но все же я не уверен, что я должен использовать.
Чтобы сделать мой вопрос более практичным - как бы вы включили контроллеры и модели из внешнего проекта в основное веб-приложение MVC? Каков наилучший способ сделать это? Должен ли я использовать здесь инъекцию зависимости?
Спасибо.