在ASP.Net应用程序和最佳实践中使用WCF

我对WCF是全新的.我很确定它会像常规的网络服务一样工作 – 我也很确定我也是这样做的,但现在我想确保我做的正确.

我们的ASP.Net应用程序通过互联网连接到WCF服务.我已经完成了基本的安全性和使用SSL.它正在工作,但比我们定期进行Web服务时慢.正在返回的数据与常规Web服务基本相同.

当我使用常规Web服务时,只要我需要获取数据,我将创建一个新的服务对象,并调用我需要的数据的函数.这似乎可以正常工作,但正如我想象的,不是最好的方法,特别是如果有成千上万的用户同时连接.所以当我转换为WCF时,我决定保持一个客户端打开,只是使用这个连接到网站的每个人.我把它放在缓存中,当缓存转储对象时,我有一个回调函数去处理它.

现在我甚至没有想到这一点,直到我改变这一切,这可能会造成多个人连接的问题.如果人A请求数据,则B必须等待其完成,然后才能通过该服务获取数据.

所以我改变它是基于会话.我执行这个错误,或者它刚刚反弹,因为它根本不奏效.客户会超时,造成故障,或者简单地不工作.我现在把它改回缓存,似乎工作正常(除了慢).

对于这种情况,什么是“最佳实践”?在需要的时候,我是否随时创建客户端,创建一个会话(并找出我做错了什么),或者保持原样,并使用一个客户端缓存方法

解决方法

这种问题通常通过维护池来解决.而不是在一个极端中拥有一个服务对象,而在另一个极端只有一个服务对象,而是池将保存需要的一组服务对象,以支持其服务的连续需求.因此,池只应该增长到最大需求点.

在服务对象之外的任何其他超时之前,您将确保对象从池中删除,并确保它们在出现任何异常时退出.

这样,您没有等待访问单个对象的多个客户端请求,也没有空闲对象挂在服务中,并且可能会老化,直到再次被重用为止.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...