Chr*_*rts 2 asp.net ajax session wcf
如果这是一个愚蠢的问题,请道歉.在以前的ASP.NET项目中,我一直在使用jQuery与ASMX Web服务进行通信而没有任何问题 - 包括能够启用与用户会话状态的交互.
我现在正在涉足Visual Studio 2010和.NET 4.0的世界,我正在尝试使用支持AJAX的WCF服务做同样的事情.
我已经掌握了基础工作,我将jQuery传递给服务调用,它进行一些处理并返回jQuery显示给用户的值.
我的问题是 - 如何让WCF服务访问用户的会话信息?我有一种感觉,在我对WCF的理解中,我遗漏了一些相当基本的东西.任何指针将不胜感激!
[更新]:这是一篇很好的文章:http://blogs.msdn.com/drnick/archive/2008/10/08/working-with-session-state.aspx
迁移到WCF时,有时会让ASP.NET开发人员感到困惑的一个概念是会话状态的概念.在普通的WCF服务中,所有会话状态都存储在本地易失性存储器中.应用程序必须选择将会话状态的一部分复制到持久存储位置,以便在运行的实例中保留该状态.WCF没有内置选项来启用会话状态的持久存储或允许从其他进程访问会话状态.
有几种方法可以使WCF更像ASP.NET.
使WCF更像ASP.NET的一种方法是通过启用ASP.NET兼容模式使WCF与ASP.NET完全相同.在IIS中托管并使用HTTP作为传输绑定的WCF应用程序与ASP.NET管道一起运行,但无法访问许多ASP.NET功能.打开兼容性模式可将WCF应用程序与ASP.NET管道集成,并使许多功能可用.显然,只有当您的WCF服务已经非常类似于ASP.NET应用程序时,这种方法才有意义.
使WCF更像ASP.NET的另一种方法是将WCF会话状态的管理更改为使用远程持久存储而不是本地易失性存储器.此方法更像是工作流服务用于创建持久应用程序的方法.服务实例和实例上下文的管理由创建和销毁服务对象的IInstanceProvider,创建和销毁实例上下文的IInstanceContextProvider以及设置新获取的实例上下文的IInstanceContextInitializer控制.虽然持久服务具有与会话状态不同的语义,但是可以使用两种常见的构建块.[/更新]
除了上述内容,我还可以向您推荐几件事.看看其中一篇文章:https://stackoverflow.com/questions/275926/wcf-data-presistence-between-sessions.接下来,考虑使用某种形式的缓存.这可以是缓存样式服务,也可以是缓存服务器场.有关缓存的更多信息,请查看我的帖子:System.Web.Caching与Enterprise Library Caching Block
这基本上允许您为用户存储唯一密钥(类似于会话ID),并且该用户的所有所谓会话对象将以缓存层中的用户伪会话ID为前缀.然后,可以通过用于运行站点的Web站点以及各种WCF服务/项目来调用此缓存层.
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |