在 OperationContext.Current.InstanceContext 是当前服务的上下文 传入通道的实例 使用
在双工系统中,服务可以 通过a回调客户端 CallbackContract。这个 CallbackContract就像一个 在客户端的服务是 听取服务电话 在客户端拥有的频道上 打开。这个“客户端回调 服务“只能通过 它在服务上使用的相同频道 因此只有那项服务 访问它。
a)因此,在双工系统中,客户端也使用与客户端向服务发送消息的相同通道实例来接收来自服务的消息?
b)如果在请求 - 回复系统中,客户端使用特定的通道实例clientChannel
向服务发送消息,那么我假设同一个实例(因此clientChannel
)需要保持打开直到服务发送回此实例的回复,而双工系统clientChannel
需要保持打开直到会话结束?
c)我假设这样的行为,因为据我所知,每个频道实例都有一个唯一的地址(或ID),有助于区分它与同一客户端上运行的其他频道实例?当服务发回消息时,它还指定了该频道的ID?
因此,当双工系统客户端调用服务时,WCF(在客户端)创建一个通过线路发送消息的通道实例clientChannel
。在服务器端,WCF创建通道实例serverChannel
,它将消息传递给请求的操作(方法)。当此方法想要通过CallbackContract
回调客户端时,它使用InstanceContext.GetCallBackChannel<>
创建一个通道,其中包含调用服务的通道的ID(因此它包含一个确切的地址或ID为clientChannel
)?
d)双工系统客户端是否使用相同的通道实例来调用任何端点的操作?
谢谢