我想实现下一个场景:
ASP.Net MVC以与by hammett所述类似的方式使用MEF。
我需要允许的一件事是,MEF插件包含WCF服务(或asmx服务 - 后备兼容性)。
我可以使用什么方法 - 如果有的话 - 让MVC网站抓住网络服务并公开它:http://websitename/MefPlugin/Service1.mvc。
答案 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, ...);
希望这有帮助。