基于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)。
在这里插入图片描述

三者的代码结构以及调用关系如下图所示。
在这里插入图片描述

(1)
公共接口IHelloService

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

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

在这里插入图片描述

(2)
公共类HelloService

HelloService宿主程序继承服务接口,实现服务接口的内部操作契约。
在这里插入图片描述

(3)
公共类HelloClient

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

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

在这里插入图片描述

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

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

在这里插入图片描述
具体示例请下载:https://download.csdn.net/download/qq_38685523/13117075

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET 是一种用于构建网站和 Web 应用程序的开发框架,通常使用 HTTP 协议作为通信协议。虽然 ASP.NET 本身不直接支持 TCP 通信,但可以通过其它技术来实现 TCP 通信。 在 ASP.NET 中实现 TCP 通信有几种常见的方法。一种方法是使用 Sockets 类,在代码中创建一个 TCP 客户端或服务器端。这些类提供了用于创建 TCP 连接、发送和接收数据的方法。例如,可以使用 Sockets 类的 TcpClient 类和 TcpListener 类分别创建 TCP 客户端和服务器端。通过使用这些类,可以在 ASP.NET 代码中实现 TCP 通信。 另一种方法是使用 WCF(Windows Communication Foundation)框架,它是一种用于构建分布式应用程序的技术。WCF 提供了一种简单的方式来实现 TCP 通信。通过在 ASP.NET 代码中配置和使用 WCF,可以轻松地建立 TCP 通信连接,并发送和接收数据。 无论是使用 Sockets 类还是 WCF,需要注意 ASP.NET 的线程模型。ASP.NET 应用程序是基于请求/响应模型的,这意味着每个请求都在一个独立的线程上执行。由于 TCP 是一种持久连接的协议,使用 TCP 通信时需要处理多线程和并发访问的问题。可以使用锁或其他线程同步机制来确保线程安全性和数据一致性。 总而言之,虽然 ASP.NET 本身不直接支持 TCP 通信,但可以通过使用 Sockets 类或 WCF 框架来实现 TCP 通信。选择合适的方法取决于具体的需求和技术要求。无论使用哪种方法,都需要注意 ASP.NET 的线程模型,并考虑如何处理多线程和并发访问的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值