行为(Behaviors)指的是那些影响WCF系统运行的设置。WCF系统中的行为分为服务行为(Service behavior)和操作行为(Operation behavior).常见的服务行为包括实例控制、并发控制、元数据发布。常见的操作行为包括事物流设置。
1.1, PerCall 实例策略:当服务端采用了PerCall 实例策略后,每个客户端请求的消息会被分布到一个新的服务实例上。而一旦这个调用返回之后,服务实例则被销毁。
PerCall调用流程
1.2, PerSession 实例策略和会话,Persession是默认的实例策略,Persession代表了会话的实例管理模式。需要满足三方面的要求才能在客户端和服务端之间建立会话。
(会话调用流程)
1.2.1 服务契约的会话设置通过ServiceContract的SessionMode属性设置
1.2.2 服务行为的实例模式设置
1.2.3 绑定的选择,NetTcpBinding,netNamedPipeBinding使用的协议本身具有传输层会话的能力,而wsHttpBinding,虽然无会话的HTTP协议,可以在头插入会话ID来模仿传输层会话。
1.3 Single实例策略:类似于设计模式的单件模式,所以的客户端代理消息都会发送到同一个服务器的实例上。
2.1 并发管理的设置(ConcurrencyMode)是枚举类型
对于PerCall模式,任何一个服务实例都是被单线程调用,不存在并发。而对于PerSession和Single模式,一个服务实例可能被多个线程访问。
2.1.1 Single模式:提供同步锁
2.1.2 Multiple并发模式。每个操作都允许客户端多个请求同时访问。提高运行效率,防止信息阻塞。
2.1.3 Reetrant 并发模式和Single模式一样,只允许一个线程访问服务操作,在访问进入操作之前必须获得同步锁。不同的是,Reetrant模式解决了Single模式的死锁问题:当服务回调客户端操作时,返回消息将导致死锁。死锁原因:
Reentrant模式解决死锁问题,当服务操作调用其他服务或者回调时,将会释放服务端的同步锁。这样就保证服务的回调消息或者调用链不会发生死锁。
3. 元数据的发布:元数据可以视为一个服务的对外接口的描述,服务包含终结点的3要素:地址,绑定,契约
3.1 HTTP—GET方式发布元数据
3.2 MEX终结点发布元数据
WCF为MEX终结点提供了基于不同通信协议的专门绑定,如mexTcpBinding、mexNamedPipeBinding、mexHttpBinding
4.1 事物的基本概念和特性
A(原子性-Atomicity)
C (一致性- Consistency)事物必须从一个一致性状态到另一个一致性状态
I (隔离性-Isolation)
D(持续性-Durability)
4.2 单服务事物:整个事物的操作在一个服务中完成
分布式服务:事物的操作涉及多个服务
4.2.1 显示的使用事物类型:比如数据操作时。
4.2.2 使用操作行为(OperationBehavior)声明事物
4.3 分布式事务:一个事物有多个服务完成
4.3.1 两段提交协议:事务协调器和多个事务组成
4.3.2 事物的流动:事务有途径的从一个服务传到另外一个服务之中。
满足条件:
<binding name="myBinding" transctionFlow="true"></binding> // 绑定事务流动
操作事务流动通过声明TransactionFlow特性来实现。
代码见后附件
4.4 事务协议和事务管理器
事务管理器: