在 WCF 中,创建代理是一项繁重的操作,因此如果您遇到性能下降的问题,您绝对应该查看该区域。解决此问题的可能解决方案之一是在应用程序线程中重用代理,实现单例或池
来自Javi 关于使用 Castle 创建 WCF 代理作为单例的博客。有人可以提供使用 Structuremap 的实现吗?
在 WCF 中,创建代理是一项繁重的操作,因此如果您遇到性能下降的问题,您绝对应该查看该区域。解决此问题的可能解决方案之一是在应用程序线程中重用代理,实现单例或池
来自Javi 关于使用 Castle 创建 WCF 代理作为单例的博客。有人可以提供使用 Structuremap 的实现吗?
这对于 StructureMap 来说非常简单,即使您需要进行一些测试,它也应该可以工作:
ObjectFactory.Configure(
x =>
{
x.For<GetFilesService.Service1Client>().HybridHttpOrThreadLocalScoped().Use(ctx =>
{
// Setup logic goes here
return new GetFilesService.Service1Client("NetTcpBinding_IService1", "net.tcp://localhost:8089/test");
});
}
);
这里的秘诀是使用 Thread Local scope ( HybridHttpOrThreadLocalScoped
)
然后解决:
var client = ObjectFactory.GetInstance<GetFilesService.Service1Client>();