WCF - 客户端 - 服务器通信

时间:2009-10-03 09:37:10

标签: wcf service client

有人能告诉我当WCF客户端连接到WCF服务并调用操作时会发生逐步操作吗?

Plz描述步骤编号和维护序列的步骤。

另外,plz为我提供了描述这些步骤的网络链接。

1 个答案:

答案 0 :(得分:1)

结帐

我不太确定你在寻找什么,或者你最感兴趣的是什么 - 你能澄清一下吗?

您需要考虑两个部分:客户端和服务器。

服务器是一个公开方法的类,它需要托管在某个地方 - 在IIS中或在您自己的应用程序中。在自托管方案中,您将创建一个ServiceHost,它托管一个服务类。在服务上定义了1-n个端点,这些端点被“打开”并监听传入的请求。

服务器有几个选项可以影响服务类的实例化方式,以及如何处理传入请求。

ServiceContract上的一个属性是 InstanceContextMode ,它可以是:

  • PerCall:对于每个传入请求,创建一个新的服务类实例,它处理该调用然后终止;这通常是推荐的设置
  • PerSession:客户端与服务建立会话,服务实例将一直存在,直到客户端完成并指示此情况,或直到客户端处于非活动状态超时状态
  • Single:只有一个服务类实例,它处理所有请求(单例)。如果单例是单线程的,这意味着请求被序列化并一个接一个地处理。为了允许同时处理多个请求,单例需要具有多线程感知能力,并且需要保护所有内部变量等免受并发访问(事情变得更复杂,并且多个并发访问变得混乱)

另一个相关选项是 ConcurrencyMode ,可以是Single(单个服务类只能处理一个请求;这是Per-Call激活的推荐设置;它是最简单的模型),Reentrant(基本上与Single相同,但允许双工回调除外 - 只有在拥有双工通道时才使用),而Multiple是如果您有单件服务并且需要性能,那么这是最好的选择 - 但是编程模型变得更加复杂和要求更高。

客户端还需要知道(通过配置或代码)调用服务的位置。

客户端基本上做了什么(服务器基本上是向后做的)是这些步骤:

  • 接受一个或多个参数(int,string,your own types)
  • 然后将这些参数序列化为消息
  • 通常会对邮件进行加密和签名(可选)
  • 然后它会通过电线将该消息传送到服务器

中间还有更多可选步骤 - 客户端可以在邮件中添加标题,也可以执行其他操作 - 但这些步骤最多。

在服务器上,收到消息后,会发生以下步骤:

  • 在端点上收到消息
  • 邮件被检查,解密等。
  • 将消息反序列化为参数和对象
  • 调度员指出(基于消息信息,如SOP行动)什么对象和调用方法
  • 然后调用该方法并在
  • 中传递消息参数

一旦在服务器上处理了消息,现在服务器就会创建响应消息并基本上以相同的方式发送回来(序列化,加密等),客户端接收它并解释它。

马克