wcf中有三种服务对象实例创建模式:PerCall、PerSession、Single
PerCall模式工作流程如下
- 客户端创建代理对象(Proxy)
- 客户端调用代理对象的一个契约操作,代理对象将其传递给服务宿主程序
- 宿主应用程序创建一新的服务契约对象,并且执行请求操作
- 在执行完请求操作后,如果要求有应答,那么服务契约会给代理对象一个应答,然后销毁自己
PerSession模式工作的流程如下:
- 客户端创建代理对象(Proxy)
- 客户端第一次调用代理对象的一个契约操作,代理对象将其调用请求传递给服务宿主
- 宿主程序创建新的服务对象,并执行请求操作,如果有必要,返回客户端应答
- 客户端再次发出调用操作的请求,宿主会先判断是否已有建立好的会话,如果存在,则不需要再创建新的服务对象,直接使用老对象即可,如果不存在则新建一个服务对象。
- 在时间达到指定要求或者因一些特殊原因,会话会过期,此时服务对象销毁.或者客户端关闭,服务对象也会自动销毁。
Single模式的工作流程如下:
- 服务端启动,同时创建服务对象
- 客户端通过代理调用契约操作
- 第一步中创建的服务对象接受请求 ,并执行操作,进行必要的应答
- 第一步创建的服务对象将一直保留
- 服务关闭,第一步创建的对象销毁