我完全不了解WCF。 我以为它会像常规的Web服务一样工作 - 我也很确定我做错了,但现在我想确保我做得正确。
我们的ASP.Net应用程序通过互联网连接到WCF服务。我已实现基本安全性并使用SSL。 它正在运行,但比我们使用常规Web服务时慢。 返回的数据与常规Web服务的基本相同。
当我使用常规Web服务时,每当需要获取数据时,我会创建一个新的服务对象并调用所需数据的函数。 这似乎可以正常工作,但是我想象中这不是最好的方法,特别是如果有成千上万的用户同时连接。 因此,当我转换为WCF时,我决定保持打开一个客户端然后让所有人都使用它来连接站点。 我将其放入缓存中,当缓存转储对象时,我有一个回调函数来处理它。
现在直到我改变所有这些之后,我才想到它可能会对多人连接造成问题。 如果A请求数据,则B必须等待该操作完成,然后才能通过服务获取其数据。
因此,我将其更改为基于会话。 我可能实现得不对,或者它反过来根本不起作用。 客户端超时,导致错误,或者根本无法工作。 我暂时将其改回缓存状态,它似乎运行良好(除了速度慢)。
在这种情况下,“最佳实践”是什么? 是需要时即时创建客户端,基于会话创建一个客户端(并找出我做错了什么),还是保持现状并使用缓存的单个客户端方法?