在ThreadLocal中存储WCF客户端代理是否安全<icommunicationobject> </icommunicationobject>

时间:2013-11-10 07:57:57

标签: c# .net wcf

方案: Windows服务将为到达网络文件共享的每个文件生成一个任务(比如说T1)。 然后将文件分成批次,这些批次通过产生更多任务发送到Java WebService(SOAP),Say a1,b1,c1 .... 目前我们正在存储WCF客户端代理     ThreadLocal的 任务a1,b1,c1 .... 也就是说,我们正在重新创建单个线程的代理,以提高可靠性,并在调用完成后关闭/中止它。

您能否建议任何可以避免代理创建成本或线程本地存储使用的替代设计?

1 个答案:

答案 0 :(得分:0)

如果代理是线程安全的,您可以使用一个代理进行所有通信吗?

如果代理不是线程安全的,您可以维护一个代理池。任务a1,b1和c1将从池中检出代理,然后在完成后检查代理。这里会出现典型的池化问题,比如如果在需要时没有免费代理怎么办(制作一个?&#34;等待&#34;直到一个准备就绪?这个新代理应该返回到池中还是丢弃?)或代理进入持久性错误状态时该怎么办。