3

在 WCF 中,创建代理是一项繁重的操作,因此如果您遇到性能下降的问题,您绝对应该查看该区域。解决此问题的可能解决方案之一是在应用程序线程中重用代理,实现单例或池

来自Javi 关于使用 Castle 创建 WCF 代理作为单例的博客。有人可以提供使用 Structuremap 的实现吗?

4

1 回答 1

0

这对于 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>();
于 2012-04-26T05:44:56.313 回答