Выставьте WCF в плагин mef с помощью Asp.net MVC - PullRequest
2 голосов
/ 03 марта 2010

Я хотел бы реализовать следующий сценарий:

ASP.Net MVC работает с MEF аналогично тому, как описано от Hammett .

Одной из вещей, которые мне нужно разрешить, является плагин MEF, содержащий службу WCF (или службу asmx - совместимость с обратными словами).

Какой подход я могу использовать (если есть), чтобы веб-сайт MVC захватил веб-сервис и выставил его так: http://websitename/MefPlugin/Service1.mvc.

1 Ответ

0 голосов
/ 26 февраля 2011

Я считаю, что вы можете достичь этого, выполнив следующие несколько шагов:

1) Создание общей библиотеки классов с контрактами (интерфейсами)

[ServiceContract]
public interface ISimpleService
{
}

2) Создайте еще одну библиотеку классов для реализации службы WCF и пометьте класс службы WCF атрибутом экспорта MEF.

[Export(typeof(ISimpleService))]
public class SimpleService: ISimpleService
{
}

3) Затем в своем хост-приложении (в нашем случае ASP.NET MVC) создайте контейнер композиции MEF, например, на основе каталога сборок.

protected void Application_Start()
{
  var catalog = new AssemblyCatalog(...);
  var container = new CompositionContainer(catalog);
  container.ComposeParts(this);
}

4) Тогда вы сможете импортировать реализацию сервиса с помощью MEF

[Import]
public ISimpleService SimpleService { get; set; }

5) Затем вы можете создать хост службы WCF для реализации этой службы

var serviceHost = new ServiceHost(SimpleService, ...);

Надеюсь, это поможет.

...