2012-03-02 30 views
4

Svcutil生成的代理与运行时使用的ChannelFactory相比,性能更好吗? ChannelFactory缓存代理是否默认?ChannelFactory <T>与使用Svcutil预生成代理的性能比较使用Svcutil

我使用的.NET 4的服务已超过100个操作和超过500个数据协定参与它。

当我使用ChannelFactory<T>时,需要很长时间才能返回代理。可以建议哪个是创建代理的最佳方法吗?

我的代码如下所示:

EndpointAddress endPoint = new EndpointAddress(url); 
// My own API which gives the custom binding I create programatically 
CustomBinding binding = BindingFactory.GetCustomBinding("WSECustomBinding"); 
ChannelFactory<T> factory = new ChannelFactory<T>(binding, endPoint); 

回答

2

当你生成SvcUtil工具的代码,你会得到一个类扩展ClientBase,这是ChannelFactory的包装。

SvcUtil工具代理允许您调用服务为上的对象,而不是直接与ChannelFactories /通道和分离是交互的方法,也提供了一些额外的功能,如高速缓存通道工厂,但引擎盖下是the same engine

从代码中不清楚你在做什么,但是你是否在每个操作调用上创建ChannelFactory? ChannelFactory的创建非常昂贵,您通常会缓存该实例,然后使用它打开,利用,然后关闭操作调用的通道。

参见下页内容进行更详细的解释:

相关问题