我想实现下一个场景:
ASP.Net MVC 以与hammett描述的类似方式与 MEF 一起工作。
我需要允许的一件事是 MEF 插件包含 WCF 服务(或 asmx 服务 - 后备词兼容性)。
我可以使用什么方法(如果有的话)使 MVC 网站获取 Web 服务并将其公开:http://websitename/MefPlugin/Service1.mvc。
我想实现下一个场景:
ASP.Net MVC 以与hammett描述的类似方式与 MEF 一起工作。
我需要允许的一件事是 MEF 插件包含 WCF 服务(或 asmx 服务 - 后备词兼容性)。
我可以使用什么方法(如果有的话)使 MVC 网站获取 Web 服务并将其公开:http://websitename/MefPlugin/Service1.mvc。
我认为您可以通过以下几个步骤实现此目的:
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, ...);
希望这可以帮助。