在WCF开发工具中,对于状态的应用是一个比较基础的应用技术。我们需要积累这方面的经验来达到一个熟练应用的地步。在接下来的文章中,我们首先为大家介绍一下WCF状态应用的一些基本概念。
成都创新互联是一家集网站建设,双牌企业网站建设,双牌品牌网站建设,网站定制,双牌网站建设报价,网络营销,网络优化,双牌网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
WCF状态应用的设定是由以下两步完成的,首先要在ServiceContract里面利用参数SessionMode来使Session有效化,具体代码为
- [ServiceContract(SessionModeSessionMode=SessionMode.Required)];
其次是在ServiceBehavior里面利用参数InstanceContextMode来设定到底使用那一种Session方式,具体代码如下
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
InstanceContextMode.PerSession);
WCF支持的SessionMode有如下三种:#t#
◆SessionMode.Allowed:默认选项,允许但不强制使用Session。
◆SessionMode.NotAllowed:不允许使用Session。
◆SessionMode.Required:强制使用Session。
WCF支持的InstanceContextMode也有三种:
◆InstanceContextMode.PerCall:为User的每一次调用生成一个SessionID,Session生命周期:调用开始->调用结束。(注:这种方式和不使用Session功能应该是一样的)
◆InstanceContextMode.PerSession:为每一个用户生成一个SessionID。Session生命周期:客户端代理生成->客户端代理关闭。(这种方式最像原先的Session)
◆InstanceContextMode.Single:生成一个唯一的SessionID,所有用户共用,生命周期:Host创建->Host关闭。(应用设计模式中的Singleton模式,像原先的Application)
WCF状态应用的实例是以PerSession为例,当然,这里的Session和原来的Session还是有一些区别的,具体如下:
(1)并没有一个显示的Session容器供存放数据用;
(2)Session的销毁和原先的Session不相同。
WCF中的Session可以在以下三种情况下销毁:
(a)利用函数销毁,如文中示例,在函数ReleaseSession()上用[OperationContract(IsTerminating=true)]表明客户端可以通过调用该函数销毁Session。
(b)客户端代理关闭,Session也会自动销毁。
(c)通过TimeOut时间销毁,默认是10分钟,这个时间客户端和服务器端都可以设定,以较短的时间为有效时间。
因此,个人认为,WCF中的Session的可控性更强一些。
在示例中还有一个问题要注意,在服务器端函数捕捉到异常之后,一定要通过throw new FaultException(ex.Message);的形式将错误抛到客户端,否则的话,客户端调用用的Channel将会被堵塞,因此就无法继续调用释放资源的函数了。
要向客户端抛异常必须设定WebConfig项,具体代码如下:
- < configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
- < system.serviceModel>< services>
- < !-- Before deployment, you should remove the returnFaults
behavior configuration to avoid disclosing information in exception messages -->- < service name="MyService" behaviorConfiguration="SessionTrans">
- < endpoint contract="IMyService" binding="wsHttpBinding"/>< /service>
- < /services>< behaviors>
- < serviceBehaviors>
- < behavior name="SessionTrans" returnUnknownExceptionsAsFaults="True">
- < serviceMetadata httpGetEnabled="true" />
- < serviceDebug includeExceptionDetailInFaults="true" />
- < /behavior>< /serviceBehaviors>< /behaviors>< /system.serviceModel>
- < system.web>< compilation debug="true"/>< /system.web>< /configuration>
以上介绍的WCF状态应用的相关知识供大家学习参考。
网站栏目:WCF状态应用基本概念简单描述
网页路径:http://www.shufengxianlan.com/qtweb/news24/78574.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联