行为(Behaviors)
行为就是服务的本地特性,他不会影响服务的通信模式。客户端不并不知道行为,行为也不会出现在服务的绑定或发布的元数据中。
WCF定义了两种类型的服务端行为。
ServiceBehavior和OpreationBehavior。
ServiceBehavior用于配置服务行为,它能够影响服务的所有终结点(包括所有的契约与操作)。
OpreationBehavior用于配置操作的行为,即行为只会影响特定操作的实现。
ServiceBehavior特性用于配置服务的实例模式。
public enum InstanceContextMode { // 摘要: // 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。 PerSession = 0, // // 摘要: // 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。如果信道未创建会话,则该值的行为就如同 // System.ServiceModel.InstanceContextMode.PerCall 一样。 PerCall = 1, // // 摘要: // 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。 Single = 2, }
单调服务(Per-Call Services)
(1)客户端调用代理,代理将调用转发给服务。
(2)WCF创建一个服务实例,然后调用服务实例的方法
(3)当方法调用返回时,如果对象实现了IDisposable接口,则WCF将调用IDisposable.Dispose()方法。WCF随后销毁上下文。
(4)客户端调用代理,代理将调用转发给服务。
(5)WCF创建一个对象,然后调用对象的方法。