【发布时间】:2009-05-22 19:50:34
【问题描述】:
我对 WCF 完全陌生。我很确定它会像常规 Web 服务一样工作 - 我也很确定我做错了,但现在我想确保我做对了。
我们的 ASP.Net 应用程序通过 Internet 连接到 WCF 服务。我已经实现了基本的安全性并使用了 SSL。它正在工作,但比我们使用常规 Web 服务时要慢。返回的数据与常规 Web 服务基本相同。
当我使用常规 Web 服务时,每当我需要获取数据时,我都会创建一个新的服务对象并为我需要的数据调用该函数。这似乎工作正常,但正如我想象的那样,这不是最好的方法,特别是如果有成千上万的用户同时连接。因此,当我转换为 WCF 时,我决定让一个客户端保持打开状态,并将其用于连接到该站点的每个人。我把它放在缓存中,当缓存转储对象时,我有一个回调函数来处理它。
现在我什至没有想到它,直到我改变了这一切,这可能会给多人连接带来问题。如果 A 请求数据,B 必须等待该请求完成,然后才能通过服务获取数据。
所以我将其更改为基于会话。我要么实施了这个错误,要么适得其反,因为它根本无法正常工作。客户端会超时,导致错误,或者根本无法工作。我现在把它改回缓存,它似乎工作正常(除了慢)。
对于这种情况,什么是“最佳做法”?我是在需要时动态创建客户端、创建一个基于会话(并找出我做错了什么),还是保持原样并使用一个客户端缓存方法?
【问题讨论】: