使用Asp.net MVC在mef插件中展示WCF

时间:2010-03-03 12:29:31

标签: asp.net-mvc mef

我想实现下一个场景:

ASP.Net MVC以与by hammett所述类似的方式使用MEF。

我需要允许的一件事是,MEF插件包含WCF服务(或asmx服务 - 后备兼容性)。

我可以使用什么方法 - 如果有的话 - 让MVC网站抓住网络服务并公开它:http://websitename/MefPlugin/Service1.mvc

1 个答案:

答案 0 :(得分:0)

我认为你可以通过以下几个步骤实现这一目标:

1)创建一个包含契约(接口)的公共类库

[ServiceContract]
public interface ISimpleService
{
}

2)为您的WCF服务实现创建另一个类库,并使用MEF的导出属性标记您的WCF服务类。

[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, ...);

希望这有帮助。