有人能告诉我当WCF客户端连接到WCF服务并调用操作时会发生逐步操作吗?
Plz描述步骤编号和维护序列的步骤。
另外,plz为我提供了描述这些步骤的网络链接。
答案 0 :(得分:1)
结帐
我不太确定你在寻找什么,或者你最感兴趣的是什么 - 你能澄清一下吗?
您需要考虑两个部分:客户端和服务器。
服务器是一个公开方法的类,它需要托管在某个地方 - 在IIS中或在您自己的应用程序中。在自托管方案中,您将创建一个ServiceHost,它托管一个服务类。在服务上定义了1-n个端点,这些端点被“打开”并监听传入的请求。
服务器有几个选项可以影响服务类的实例化方式,以及如何处理传入请求。
ServiceContract上的一个属性是 InstanceContextMode ,它可以是:
PerCall
:对于每个传入请求,创建一个新的服务类实例,它处理该调用然后终止;这通常是推荐的设置PerSession
:客户端与服务建立会话,服务实例将一直存在,直到客户端完成并指示此情况,或直到客户端处于非活动状态超时状态Single
:只有一个服务类实例,它处理所有请求(单例)。如果单例是单线程的,这意味着请求被序列化并一个接一个地处理。为了允许同时处理多个请求,单例需要具有多线程感知能力,并且需要保护所有内部变量等免受并发访问(事情变得更复杂,并且多个并发访问变得混乱) 另一个相关选项是 ConcurrencyMode ,可以是Single
(单个服务类只能处理一个请求;这是Per-Call激活的推荐设置;它是最简单的模型),Reentrant
(基本上与Single相同,但允许双工回调除外 - 只有在拥有双工通道时才使用),而Multiple
是如果您有单件服务并且需要性能,那么这是最好的选择 - 但是编程模型变得更加复杂和要求更高。
客户端还需要知道(通过配置或代码)调用服务的位置。
客户端基本上做了什么(服务器基本上是向后做的)是这些步骤:
中间还有更多可选步骤 - 客户端可以在邮件中添加标题,也可以执行其他操作 - 但这些步骤最多。
在服务器上,收到消息后,会发生以下步骤:
一旦在服务器上处理了消息,现在服务器就会创建响应消息并基本上以相同的方式发送回来(序列化,加密等),客户端接收它并解释它。
马克