基于TCP协议的WCF通信

基于TCP协议的WCF通信

Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。从以下四个方面对WCF进行介绍:

  • 通信范围:跨进程、跨机器、跨子网、企业王乃至Internet
  • 宿主程序:ASP.NET 、EXE 、WPF、 Winform、 NT Service、COM+
  • 支持协议:TCP、Http、跨进程、自定义
  • 安全模式:SAML、Kerberos、X509、用户/密码

基于TCP协议的WCF通信主要包含了以下三部分,分别为服务契约(公共接口IHelloService)、宿主程序(公共类HelloService)、客户端程序(公共类HelloClient)。
基于TCP协议的WCF通信

三者的代码结构以及调用关系如下图所示。
基于TCP协议的WCF通信

(1)
公共接口IHelloService

注意:服务端和客户端都要添加IHelloService服务引用。WCF服务所需声明的四个特性及其含义:

  • ServiceContract 在接口上方定义服务契约,作用于接口之上,允许重复声明。
  • OperationContract 接口方法上定义操作契约。
  • DataContract 数据契约,要传送的自定义数据类型。
  • DataMember 声明为DataContract的对象的成员属性。

基于TCP协议的WCF通信

(2)
公共类HelloService

HelloService宿主程序继承服务接口,实现服务接口的内部操作契约。
基于TCP协议的WCF通信

(3)
公共类HelloClient

这个实例化的行为通过System.ServiceModel.InstanceContextMode进行设置。下面介绍三种实例模式:

  • PerCall:单调模式,对于每个客户端的每次调用请求,都会创建一个新的服务实例,无并发问题;
  • PerSession:默认值,会话模式,为每个新的客户端会话创建一个新的服务实例;
  • Single:单例模式,只生成一个服务实例,处理应用程序生存期内的所有客户端请求。

基于TCP协议的WCF通信

对于Client来说,它实际上不能和Service进行直接交互,它只能通过客户端创建的Proxy来间接地实现和service的交互。客户端程序在调用服务端方法时,需要通过代理在服务端HelloService创建一个对象。如下图所示为此程序客户端的代理HelloServiceProxy。
基于TCP协议的WCF通信

客户端ClientForm实例化代理类,利用代理对象,调用服务。

基于TCP协议的WCF通信
具体示例请下载:https://download.****.net/download/qq_38685523/13117075