现在的位置: 首页 > 综合 > 正文

WCF 示例学习笔记003之实例化(01.02.01.02)

2012年04月28日 ⁄ 综合 ⁄ 共 9826字 ⁄ 字号 评论关闭

此示例演示如何通过ServiceBehaviorAttribute.InstanceContextMode 属性控制响应客户端请求来创建服务类的实例。

契约和服务类的代码如下:

Code

 

宿主配置文件为:

Code

 

调用代理的客户程序为:

Code

 

下面分别将客户程序的输出结果列出如下:

Code

 

在此示例程序中有以下需要说明的地方:
1.InstanceContextMode枚举的成员列表如下:
 

成员名称 说明
PerSession 为每个会话创建一个新的 InstanceContext 对象。
PerCall 新的 InstanceContext 对象在每次调用前创建,在调用后回收。如果信道未创建会话,则该值的行为就如同 PerCall 一样。
Single 只有一个 InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。

2.在配置文件中有个名为reliableSession的配置节,该配置节的属性列表如下:

属性 说明 默认值
inactivityTimeOut 一个 TimeSpan,指定通道在出错之前允许其他通信方不发送任何消息的最大持续时间。通道上的活动被定义为接收应用程序或基础结构消息。 如果在此属性指定的时间内未检测到活动,则基础结构会中止会话,且通道会出错。 可靠会话被中止。 00:10:00
Ordered 一个布尔值,指定是否保证消息以其发送顺序抵达。 true

3.如果 InstanceContextMode 值设置为 Single,那么结果是该服务一次只能处理一条消息,除非还将 ConcurrencyMode 值设置为 Multiple。

4.对于单一实例生存期行为(例如,如果主机应用程序调用 ServiceHost 构造函数并传递一个对象以用作该服务),该服务类必须将 InstanceContextMode 设置为 Single,否则运行时会引发异常。

下载程序示例

抱歉!评论已关闭.