加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:26:13 所属栏目:asp.Net 来源:网络整理
导读:我对WCF是全新的.我很确定它会像常规的网络服务一样工作 – 我也很确定我也是这样做的,但现在我想确保我做的正确. 我们的ASP.Net应用程序通过互联网连接到WCF服务.我已经完成了基本的安全性和使用SSL.它正在工作,但比我们定期进行Web服务时慢.正在返回的数据
我对WCF是全新的.我很确定它会像常规的网络服务一样工作 – 我也很确定我也是这样做的,但现在我想确保我做的正确.

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

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

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

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读