WCF入门(四)——会话与实例

简介: 会话是两个终结点之间消息交换的一种相互关系;实例化是服务对象的生存期控制。 (一)会话 会话由服务契约的SessionMode属性指定,SessionMode属性用于是否允许,禁止和要求会话状态,它有三种设定: Allowed 如果绑定支持会话,则契约支持会话 Required 要求绑定支持会话,否则引发异常 NotAllowed 指定契约不支持启动会话的绑定 如果服务支持会话,则可以通过实例创建模式属性指定服务契约实例与会话之间的关系。

会话是两个终结点之间消息交换的一种相互关系;实例化是服务对象的生存期控制。

(一)会话

会话由服务契约的SessionMode属性指定,SessionMode属性用于是否允许,禁止和要求会话状态,它有三种设定:

Allowed 如果绑定支持会话,则契约支持会话

Required 要求绑定支持会话,否则引发异常

NotAllowed 指定契约不支持启动会话的绑定

如果服务支持会话,则可以通过实例创建模式属性指定服务契约实例与会话之间的关系。

 

(二)实例

ServiceBehavior属性的InstanceContextMode属性用来指定服务如何创建。系统默认为PerSession,客户端与wcf服务在建立通话时,创建新对象,然后,在相同会话中使用同一对象。

WCF有三种对象创建模式:

PerSesson,为每个会话创建一个新的实例对象(默认),用于所有调用

PerCall,为服务的每个调用创建一个实例,调用完成后,回收。

Single,创建一个实例对象,用于所有的传入,且在调用后不回收。

 

实例模式

要求会话状态

允许的

禁止会话

PerCall

每个调用都具有一个会话和一个实例;如果无会话通道的行为,将引发异常

每个调用都具有一个会话和实例;如果无会话通道的行为,每个调用都具有一个实例

会话通道的行为将引发异常;无会话通道的行为,每个调用都具有一个实例

PerSession

每个通道都具有一个会话和实例;如果无会话通道的行为,将引发异常

每个通道都具有一个会话和实例;如果无会话通道的行为,则每个调用都具有一个实例

会话通道的行为将引发异常;无会话通道的行为,每个调用都具有一个实例

Single

所有的调用只有一个会话和一个实例;如果无会话通道的行为,将引发异常

每个创建的实例或用户指定的单一实例都具有一个会话和实例;如果无会话通道的行为则每个创建的单一实例或用户指定的单一实例都具有一个实例

会话通道的行为将引发异常;无会话通道的行为每个创建的单一实例或用户指定的单一实例都具有一个实例

 

 未完

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
C#
C#面向服务编程技术WCF从入门到实战演练
一、WCF课程介绍 1.1、Web Service会被WCF取代吗? 对于这个问题阿笨的回答是:两者在功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的。不能哪一个技术框架和行业标准作比较,任何对于二者的比较都是错误的,因为两者根不不在同一个范畴里。
1352 0
|
.NET 开发框架 数据安全/隐私保护