WCF框架net.tcp协议跨平台通信的系统及方法技术方案

技术编号:14827545 阅读:88 留言:0更新日期:2017-03-16 14:24
本发明专利技术提供一种WCF框架net.tcp协议跨平台通信的系统及方法,涉及计算机通信技术领域。系统为客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器和客户端数据适配器,不支持.net平台的客户端和WCF平台分别与中间件连接,当有数据传输时,先将数据发送到适配器组件上,然后由适配器组件将数据发送到WCF服务器或客户端。不需更改原WCF平台服务端代码,就能使.net平台异构的客户端与使用net.tcp协议的服务端通信,极大提高了net.tcp协议的适用性,增强了软件系统的可用性和可维护性,提高了系统开发效率。

【技术实现步骤摘要】

:本专利技术涉及计算机通信
,尤其涉及一种WCF框架net.tcp协议跨平台通信的系统及方法
技术介绍
:WCF(WindowsCommunicationFoundation)是微软公司的Windows通讯开发平台,它集成了一系列用于数据通信的应用。net.tcp协议是WCF平台实现的通信协议之一,相对于WCF中的其它协议,net.tcp协议的优点有速度快,相同信息传输数据量小,可实现双工通信等,因此net.tcp协议在基于.net架构的网络通信中广泛使用。但是由于net.tcp协议是微软自有的协议,net.tcp协议仅支持.net平台间的数据通信,不能与其它不支持.net平台的系统通信(如Android系统,IOS系统等)。近年来,移动应用平台不断涌现,原有众多软件系统都存在客户端代码向移动应用平台扩展的需求。这时为了在移动应用平台实现原有功能,原先基于net.tcp协议通信的代码全部都要重新改写、测试。由于软件工程项目维护周期长,代码量大,原有开发人员变动等原因,重构工作量非常的庞大、繁杂,甚至在费用和人员投入上是不可接受的。
技术实现思路
:针对现有技术的缺陷,本专利技术提供一种WCF框架net.tcp协议跨平台通信的系统及方法,在客户端和WCF服务端之间添加一个转发数据的适配器中间件,不需要更改服务端代码就可以使.net平台异构的客户端与使用net.tcp协议的服务端通信,大大增强了软件系统的可用性和可维护性,提高了系统开发效率。一方面,本专利技术提供一种WCF框架net.tcp协议跨平台通信的系统,包括客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,该中间件系统包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器模块和客户端数据适配器模块;WCF服务的客户端引用模块由VS(MicrosoftVisualStudio)的代码生成器自动生成,根据服务的个数设有多个引用,每个引用对应一个WCF服务,用于与WCF服务端通信;消息缓存模块用于将接收的消息存储,以便适配器逐条处理消息;消息缓存模块的类图如下,消息缓存类包括两个属性变量:发往WCF服务消息的缓存和发往客户端消息的缓存,两个属性变量均为先入先出的队列类型;自定义消息模块用于定义客户端和客户端数据适配器模块之间的数据传输格式,自定义消息包括父类消息和子类消息,其中子类消息包括错误消息、方法调用消息、方法返回值消息和命令消息,子类消息共有的父类消息为抽象类;错误消息用于发送异常,属性值为错误消息;方法调用消息用于发送方法的定义,以便远程调用方法,属性值包括方法名称、参数类型、参数值和用户状态;方法返回值消息用于存储方法调用的结果,属性值包括方法名称、返回值类型、返回值和用户状态;命令消息用于存放远程控制中间件的命令,属性值包括命令类型和命令参数;服务端数据适配器模块用于与WCF服务端通信,包括从消息缓存模块中读取消息并根据消息调用WCF接口,将WCF接口调用的返回值或需要调用的客户端方法放入消息缓存模块,通信方式采用net.tcp协议;服务端数据适配器模块类图如下,父类为一个抽象的代理类,定义了具体实现类公用的方法和必须实现的抽象方法,定义的属性包括具体实现类要实现的数据链路对象(即具体的WCF服务引用对象)、具体实现类类型、WCF方法调用的缓存字典和处理发送到WCF服务的消息的线程集合,定义的方法包括启动WCF服务的消息的线程的方法、将消息发送到客户端缓存的方法,调用WCF服务引用的方法;具体实现类根据不同的WCF服务有不同的实现方法,实现方法与WCF服务端定义的接口方法对应;客户端数据适配器模块用于与客户端通信,包括从消息缓存模块中读取消息并根据消息调用客户端方法,将客户端方法的返回值或需要调用的服务端方法放入消息缓存模块,通讯方式采用socket通信;客户端数据适配器模块包括两个类,适配器管理类和适配器类;适配器管理类用于为每个WCF服务分配一个监听端口,监听是否有客户端希望连接WCF服务;当有客户端希望连接WCF服务时,创建一个适配器类,由适配器类的实例对象负责与客户端通信;适配器管理类包括一个监听器集合和一个适配器集合;监听器集合用于存放所有正在监听是否有客户端连接的监听器;适配器集合用于存放所有正在与客户端通信的适配器类的对象,同时还监听是否有客户端连接;适配器类用于将WCF传来的消息发送给客户端,并将客服端发送来的消息放入WCF的消息缓存。另一方面,本专利技术还提供一种WCF框架net.tcp协议跨平台通信的方法,通过上述的WCF框架net.tcp协议跨平台通信的系统实现,包括如下步骤:步骤1、中间件进行初始化,具体方法如下:步骤1.1、创建适配器管理类对象;步骤1.2、适配器管理类对象根据引用的WCF服务个数,创建相应个数的线程,每个线程调用适配器管理类的监听方法监听是否有客户端请求连接中间件;步骤1.3、若客户端程序请求与中间件建立链接,中间件适配器管理类对象监听到请求,则初始化一个与客户端程序对应的适配器类对象,并再次进入监听状态,等待下一个客户端连接;步骤1.4、适配器类的对象与客户端建立socket链接,并创建对应的消息缓存对象;步骤2、客户端调用服务端的操作,具体方法如下:步骤2.1、客户端程序调用负责通信的函数,将需要调用的函数方法封装为方法调用消息类对象;步骤2.2、通信函数向中间件系统的客户端数据适配器模块发送函数调用的请求消息;步骤2.3、客户端数据适配器模块接收请求消息,将消息放入消息缓存模块中,并通知服务端数据适配器模块处理;步骤2.4、服务端数据适配器模块接收到通知,启动新线程从消息缓存模块中读取出命令消息,判断为函数调用请求消息,则使用反射技术调用具体实现类要实现的数据链路对象中对应的WCF操作;步骤2.5、如果有返回值,服务端数据适配器模块将返回值封装为返回值消息对象,放入消息缓存模块中,并通知客户端数据适配器模块调用,执行步骤2.6;如果没有返回值,调用处理流程结束;步骤2.6、客户端数据适配器模块取出返回值消息,将该返回值消息序列化后,通过socket发送到客户端;步骤2.7、客户端将接收到的返回值消息反序列化,获得返回值;步骤3、服务端调用客户端的操作,具体方法如下:步骤3.1、服务端程序通过中间件的WCF服务的客户端引用模块调用服务端数据适配器模块;步骤3.2、服务端数据适配器模块将函数调用请求消息封装,并放入消息缓存模块中,通知客户端数据适配器模块;步骤3.3、客户端数据适配器模块从消息缓存模块中取出函数调用请求消息,序列化后将该函数调用请求消息发送给对应的客户端通信接口;步骤3.4、客户端通信接口判断消息为函数调用请求消息,将该函数调用请求消息反序列化后,调用对应的函数。由上述技术方案可知,本专利技术的有益效果在于:本专利技术提供的一种WCF框架net.tcp协议跨平台通信的系统及方法,在客户端和WCF服务端之间添加一个转发数据的适配器中间件,不支持.net平台的客户端和WCF平台分别与中间件建立连接,并且通信数据都通过中间件转发,当有数据传输时,先将数据发送到适配器组件上,然后由适配器组件负责将数据发送到WCF服务器或客户端。该中间件系统及跨平台通信的本文档来自技高网...
WCF框架net.tcp协议跨平台通信的系统及方法

【技术保护点】
一种WCF框架net.tcp协议跨平台通信的系统,其特征在于,该系统包括客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,该中间件系统包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器模块和客户端数据适配器模块;所述WCF服务的客户端引用模块由VS(Microsoft Visual Studio)的代码生成器自动生成,根据服务的个数设有多个引用,每个引用对应一个WCF服务,用于与WCF服务端通信;所述消息缓存模块用于将接收的消息存储,以便适配器逐条处理消息;所述消息缓存模块的类图如下,消息缓存类包括两个属性变量:发往WCF服务消息的缓存和发往客户端消息的缓存,两个属性变量均为先入先出的队列类型;所述自定义消息模块用于定义客户端和客户端数据适配器模块之间的数据传输格式,自定义消息包括父类消息和子类消息,所述子类消息包括错误消息、方法调用消息、方法返回值消息和命令消息,子类消息共有的父类消息为抽象类;错误消息用于发送异常,属性值为错误消息;方法调用消息用于发送方法的定义,以便远程调用方法,属性值包括方法名称、参数类型、参数值和用户状态;方法返回值消息用于存储方法调用的结果,属性值包括方法名称、返回值类型、返回值和用户状态;命令消息用于存放远程控制中间件的命令,属性值包括命令类型和命令参数;所述服务端数据适配器模块用于与WCF服务端通信,包括从消息缓存模块中读取消息并根据消息调用WCF接口,将WCF接口调用的返回值或需要调用的客户端方法放入消息缓存模块,通信方式采用net.tcp协议;所述服务端数据适配器模块类图如下,父类为一个抽象的代理类,定义了具体实现类公用的方法和必须实现的抽象方法,定义的属性包括具体实现类要实现的数据链路对象(即具体的WCF服务引用对象)、具体实现类类型、WCF方法调用的缓存字典和处理发送到WCF服务的消息的线程集合,定义的方法包括启动WCF服务的消息的线程的方法、将消息发送到客户端缓存的方法,调用WCF服务引用的方法;具体实现类根据不同的WCF服务有不同的实现方法,实现方法与WCF服务端定义的接口方法对应;所述客户端数据适配器模块用于与客户端通信,包括从消息缓存模块中读取消息并根据消息调用客户端方法,将客户端方法的返回值或需要调用的服务端方法放入消息缓存模块,通讯方式采用socket通信;所述客户端数据适配器模块包括两个类,适配器管理类和适配器类;所述适配器管理类用于为每个WCF服务分配一个监听端口,监听是否有客户端希望连接WCF服务,当有客户端希望连接WCF服务时,创建一个适配器类,由适配器类的实例对象负责与客户端通信;所述适配器管理类包括一个监听器集合和一个适配器集合;所述监听器集合用于存放所有正在监听是否有客户端连接的监听器;所述适配器集合用于存放所有正在与客户端通信的适配器类的对象,同时还监听是否有客户端连接;所述适配器类用于将WCF传来的消息发送给客户端,并将客服端发送来的消息放入WCF的消息缓存。...

【技术特征摘要】
1.一种WCF框架net.tcp协议跨平台通信的系统,其特征在于,该系统包括客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,该中间件系统包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器模块和客户端数据适配器模块;所述WCF服务的客户端引用模块由VS(MicrosoftVisualStudio)的代码生成器自动生成,根据服务的个数设有多个引用,每个引用对应一个WCF服务,用于与WCF服务端通信;所述消息缓存模块用于将接收的消息存储,以便适配器逐条处理消息;所述消息缓存模块的类图如下,消息缓存类包括两个属性变量:发往WCF服务消息的缓存和发往客户端消息的缓存,两个属性变量均为先入先出的队列类型;所述自定义消息模块用于定义客户端和客户端数据适配器模块之间的数据传输格式,自定义消息包括父类消息和子类消息,所述子类消息包括错误消息、方法调用消息、方法返回值消息和命令消息,子类消息共有的父类消息为抽象类;错误消息用于发送异常,属性值为错误消息;方法调用消息用于发送方法的定义,以便远程调用方法,属性值包括方法名称、参数类型、参数值和用户状态;方法返回值消息用于存储方法调用的结果,属性值包括方法名称、返回值类型、返回值和用户状态;命令消息用于存放远程控制中间件的命令,属性值包括命令类型和命令参数;所述服务端数据适配器模块用于与WCF服务端通信,包括从消息缓存模块中读取消息并根据消息调用WCF接口,将WCF接口调用的返回值或需要调用的客户端方法放入消息缓存模块,通信方式采用net.tcp协议;所述服务端数据适配器模块类图如下,父类为一个抽象的代理类,定义了具体实现类公用的方法和必须实现的抽象方法,定义的属性包括具体实现类要实现的数据链路对象(即具体的WCF服务引用对象)、具体实现类类型、WCF方法调用的缓存字典和处理发送到WCF服务的消息的线程集合,定义的方法包括启动WCF服务的消息的线程的方法、将消息发送到客户端缓存的方法,调用WCF服务引用的方法;具体实现类根据不同的WCF服务有不同的实现方法,实现方法与WCF服务端定义的接口方法对应;所述客户端数据适配器模块用于与客户端通信,包括从消息缓存模块中读取消息并根据消息调用客户端方法,将客户端方法的返回值或需要调用的服务端方法放入消息缓存模块,通讯方式采用socket通信;所述客户端数据适配器模块包括两个类,适配器管理类和适配器类;所述适配器管理类用于为每个WCF服务分配一个监听端口,监听是否有客户端希望连接WCF服务,当有客户端希望连接WCF服务时,创建一个适配器类,由适配器类的实例对象负责与客户端...

【专利技术属性】
技术研发人员:吴杰梁妍
申请(专利权)人:辽宁科技大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1