WCF和HttpSessionState,HttpApplicationState

时间:2009-11-19 14:23:10

标签: wcf

我正在将Web服务迁移到WCF,因此我可以使用二进制编码。我现在意识到会话调用和应用程序状态调用无法识别。 WCF应该比Web服务更好,所以我假设有更好的方法来做事。

1)如何维护会话并调用使用会话的Web服务?

2)如何替换应用程序对象?

3 个答案:

答案 0 :(得分:4)

对于那些正在迁移大型项目并且无法承担如此意识形态的人,我在这里找到了一个真正的答案:

http://megakemp.wordpress.com/2008/11/27/migrating-aspnet-web-services-to-wcf/

答案 1 :(得分:3)

在WCF中,最佳做法是尽可能不使用任何状态,因为您的客户端应该使用“按呼叫”方法呼叫您 - 来自客户端的每个调用都会获得WCF服务类的新实例,理想情况下完全独立于其他任何事情。

如果需要持久状态,请将其存储在持久存储中 - 通常是数据库。

默认情况下,WCF完全独立于ASP.NET和IIS,因此无法利用HttpContext,HttpSessionState等对象 - 因为它可能是在不了解IIS,HTTP上下文的控制台应用程序中自托管的等

问题是:你究竟从那些HttpSessionState和HttpApplicationState对象中使用了什么?不知何故,你需要将其抽象出来或以其他方式解决它,例如让客户端向您发送该信息(作为您的Web服务方法调用中的参数,或作为邮件中的标题),或让客户端向您发送各种类型的“令牌”,以便您从中检索相关信息。数据库表。

答案 2 :(得分:1)

Juval Lowy的优秀编程WCF服务(link)中的第4章是关于实例管理的。有关于每会话服务和持久服务的部分,每个部分都可能是您正在寻找的。

然而,马克的观点非常有效。使用WCF服务的会话有很多缺点,但它是可能的。洛伊详细讨论了很多这个问题。