Расширения для приложения ASP.NET MVC 3? - PullRequest
4 голосов
/ 17 марта 2011

Мне нужно написать расширяемое приложение 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? Каков наилучший способ сделать это? Должен ли я использовать здесь инъекцию зависимости?

Спасибо.

...