2

我想实现下一个场景:

ASP.Net MVC 以与hammett描述的类似方式与 MEF 一起工作。

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

我可以使用什么方法(如果有的话)使 MVC 网站获取 Web 服务并将其公开:http://websitename/MefPlugin/Service1.mvc

4

1 回答 1

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

希望这可以帮助。

于 2011-02-26T10:43:40.973 回答