gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:33:24 25 4
gpt4 key购买 nike

我对 WCF 完全陌生。我很确定它会像常规 Web 服务一样工作 - 而且我也很确定我也做错了,但现在我想确保我做对了。

我们的 ASP.Net 应用程序通过 Internet 连接到 WCF 服务。我已经实现了基本的安全性并使用了 SSL。它正在运行,但比我们使用常规 Web 服务时慢。返回的数据与常规 Web 服务基本相同。

当我使用常规 Web 服务时,任何时候我需要获取数据,我都会创建一个新的服务对象并调用我需要的数据的函数。这似乎工作正常,但正如我想象的那样,这不是最好的方法,尤其是在有数千个用户同时连接的情况下。因此,当我转换为 WCF 时,我决定让一个客户端保持打开状态,并将其用于连接到该站点的每个人。我把它放在缓存中,当缓存转储对象时,我有一个回调函数来处理它。

现在我什至没有想到它,直到我改变了这一切,它可能会给多人连接带来问题。如果人员 A 请求数据,人员 B 必须等待该请求完成,然后才能通过服务获取其数据。

所以我将其更改为基于 session 。我要么实现了这个错误,要么适得其反,因为它根本无法正常工作。客户端会超时,导致故障,或者只是无法正常工作。我暂时将它改回缓存,它似乎工作正常(除了慢)。

这种情况下的“最佳实践”是什么?我是在需要时即时创建客户端,创建一个基于 session (并找出我做错了什么),还是保持原样并使用一个客户端缓存方法?

最佳答案

这类问题通常通过维护一个池来解决。不是在一个极端情况下只有一个服务对象,而在另一个极端情况下每个用户只有一个服务对象,池将保存一组服务对象,这些服务对象需要支持对其服务的并发需求。因此,池应该只增长到最大需求点。

您将确保对象在服务对象内部的任何其他超时之前从池中退出,并确保它们在出现任何类型的异常时退出。

这样,您就不会有多个客户端请求等待访问单个对象,也不会在服务中闲置闲置对象,并且很可能在它们可以再次重用之前死亡。

关于asp.net - 在 ASP.Net 应用程序和最佳实践中使用 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com