【发布时间】:2011-08-28 09:05:35
【问题描述】:
我有一个简单的 WCF 服务,它允许客户端/消费者应用程序通过提供用户名和密码来登录。如果用户名和密码都正确,WCF 服务会为客户端提供一个 GUID。然后将 GUID 和用户名作为键/值对存储在 WCF 服务中。从这里开始,客户端将其 GUID 与每个请求一起发送,作为识别手段。
由于我将键/值对存储在 Dictionary/Hashmap 中,因此这种方法仅在 WCF 服务是有状态的情况下才有效。问题是,它们在默认情况下是有状态的,还是我必须做些什么才能使它们以这种方式运行?
【问题讨论】:
-
WCF 服务应该是无状态的 - 让您免于许多棘手的问题和头痛。公认的“最佳实践”是使用“每次调用”方法——每次调用都是全新的、独立的操作,完全独立于之前的任何其他调用。
-
@marc_s :我拥有的服务确实是无状态的,但我只是不确定如何存储用于识别使用该服务的客户的键/值对。我应该将这些临时值存储在数据库中而不是 Dictionary/Hashmap 中吗?
-
我只会将用户名/密码传递给每个呼叫。如果每次都很难验证:从第一次调用中传回一些标识符,并将该标识符存储在“当前有效用户”表或类似的表中。在随后的调用中,只需传入该“标识符”并对照“当前有效用户”表进行检查