CN106506519B - WCF框架net.tcp协议跨平台通信的系统及方法 - Google Patents
WCF框架net.tcp协议跨平台通信的系统及方法 Download PDFInfo
- Publication number
- CN106506519B CN106506519B CN201611051001.4A CN201611051001A CN106506519B CN 106506519 B CN106506519 B CN 106506519B CN 201611051001 A CN201611051001 A CN 201611051001A CN 106506519 B CN106506519 B CN 106506519B
- Authority
- CN
- China
- Prior art keywords
- message
- client
- wcf
- module
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种WCF框架net.tcp协议跨平台通信的系统及方法,涉及计算机通信技术领域。系统为客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器和客户端数据适配器,不支持.net平台的客户端和WCF平台分别与中间件连接,当有数据传输时,先将数据发送到适配器组件上,然后由适配器组件将数据发送到WCF服务器或客户端。不需更改原WCF平台服务端代码,就能使.net平台异构的客户端与使用net.tcp协议的服务端通信,极大提高了net.tcp协议的适用性,增强了软件系统的可用性和可维护性,提高了系统开发效率。
Description
技术领域:
本发明涉及计算机通信技术领域,尤其涉及一种WCF框架net.tcp协议跨平台通信的系统及方法。
背景技术:
WCF(Windows Communication Foundation)是微软公司的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(Microsoft Visual Studio)的代码生成器自动生成,根据服务的个数设有多个引用,每个引用对应一个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平台服务端代码,就能扩展WCF平台的net.tcp协议,使.net平台异构的客户端与使用net.tcp协议的服务端通信,极大的提高了net.tcp协议的适用性,大大增强了软件系统的可用性和可维护性,加快了代码的开发速度,提高了系统开发效率。
附图说明:
图1为本发明实施例提供的中间件系统结构及其与客户端和服务端的连接示意图;
图2为本发明实施例提供的消息缓存类图:
图3为本发明实施例提供的自定义消息类图;
图4为本发明实施例提供的服务端数据适配器类图;
图5为本发明实施例提供的客户端数据适配器类图;
图6为本发明实施例提供的客户端调用服务端的操作流程图:
图7为本发明实施例提供的服务端调用客户端的操作流程图。
具体实施方式:
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
一种WCF框架net.tcp协议跨平台通信的系统,如图1所示,为客户端和WCF服务端之间的一个用于转发数据的适配器中间件系统,该中间件系统包括WCF服务的客户端引用模块、消息缓存模块、自定义消息模块、服务端数据适配器模块和客户端数据适配器模块。
WCF服务的客户端引用模块由Microsoft visual studio的代码生成器自动生成,根据服务的个数可有多个引用,每个引用对应一个WCF服务,负责与WCF服务端通信。本实施例中的引用类名为ScadaServiceClient和ScadaServiceCallback,ScadaServiceClient具有int getRealTimeData(String)方法,用于获取监控设备实时数据,ScadaServiceCallback具有void alarm(String[])方法,用于推送设备报警信息。客户端代码是移动客户端(Android端)用于socket通信的代码,是int getRealTimeData(String)方法和void alarm(String[])方法,与服务端接口方法名一致。getRealTimeData(String)用于向中间件发送消息,以请求调用中间件getRealTimeData方法,中间件alarm方法获得推送数据,通过socket连接请求调用客户端alarm方法。
消息缓存模块用于将接收的消息存储,以便适配器逐条处理消息。消息缓存模块的类图如图2所示,消息缓存类名为AdapterCache,包括两个属性变量,均为先入先出的队列类型,其中,ToWCFPackageQueue属性是存放发往WCF服务消息的缓存,ToClientMessageQueue属性是存放发往客户端消息的缓存。
自定义消息模块用于服务端数据适配器模块和客户端数据适配器模块之间的数据传输,如图3所示,自定义消息包括错误消息(ErrorMsg)、方法调用消息(MethodInvokingMsg)、方法返回值消息(MethodReturnValueMsg)和命令消息(OrderPackageMsg)四个子类消息,它们共有的父类消息为Message抽象类。四种子类消息包含的属性具体为:错误消息用于发送异常,属性值为错误消息(Msg);方法调用消息用于发送方法的定义,以便远程调用方法,属性值包括方法名称(MethodName)、参数类型(ParamTypes)、参数值(ParamValues)和用户状态(UserState);方法返回值消息存储的是方法调用的结果,属性值包括方法名称(MethodName)、返回值类型(Types)、返回值(Value)和用户状态(UserState);命令消息存放的是用于远程控制中间件的命令(如客户端和服务器退出、清除缓存等),属性值包括命令类型(OrderType)和命令参数(OrderParams)。
服务端数据适配器模块用于与WCF服务端通信,包括从消息缓存模块中读取消息并根据消息调用WCF接口,将WCF接口调用的返回值或需要调用的客户端方法放入消息缓存模块,通信方式采用net.tcp协议。服务端数据适配器模块的类图如图4所示:父类为一个抽象的代理类AbstractWCFProxy,定义了具体实现类要实现的数据链路对象m_proxyClient(即具体的WCF服务引用对象)、具体实现类类型m_proxyClientType、WCF方法调用的缓存字典m_wcfServicMethodDictionary、处理发送到WCF服务的消息的线程集合m_toWcfPackageHandleThread等属性,主要方法有启动WCF服务的消息的线程的Start方法、将消息发送到客户端缓存的SendPackageToClientCache(Message msg)方法和调用WCF服务引用的SendToWCF(Message msg)方法。具体实现类根据不同的WCF服务有不同的实现方法,实现方法与WCF定义的方法对应。
客户端数据适配器模块用于与客户端通信,包括从消息缓存模块中读取消息并根据消息调用客户端方法,将客户端方法的返回值或需要调用的服务端方法放入消息缓存模块,通讯方式采用socket通信。客户端数据适配器模块包括两个类,适配器管理类AdapterServer和适配器类Adapter。适配器管理类为每个WCF服务分配一个监听端口,监听是否有客户端希望连接WCF服务,当有客户端希望连接WCF服务时,创建一个适配器类,由适配器类的实例对象负责与客户端通信。如图5所示,适配器管理类包括一个监听器集合s_tcpListenerSet和一个适配器集合s_adapterSet;属性监听器集合s_tcpListenerSet负责存放所有正在监听的监听器,属性适配器集合s_adapterSet用于存放所有与客户端连接的适配器类的对象,同时还监听是否有客户端连接。适配器类的方法主要有两个,SendPackageToNetwork(Message package)将WCF传来的消息发送给客户端,SendPackageToWCFCache(Message package)将客服端发送来的消息放入WCF的消息缓存。
中间件服务启动时,根据WCF服务的个数,创建并启动socket监听线程。并将监听线程保存到监听线程列表中。每一个客户端连接中间件时,中间件都会给客户端分配相应的消息缓存、客户端数据适配器模块、服务端数据适配器模块等资源,并负责打开WCF服务链接。
由于中间件与客户端通信采用的是Socket通信,各个操作系统均支持Socket通信,因此本实施例对于客户端为WindowsPhone、IOS、Linux等操作系统都适用。本实施例中,用Android手机通过中间件与WCF服务通信,WCF服务为一个设备监控服务,客户端调用服务器端操作以获取当前的设备数据(温度、液位等数据),服务端调用客户端操作用于数据超限报警(液位过低等)。
采用上述的WCF框架net.tcp协议跨平台通信的系统进行Android手机与WCF服务跨平台通信的方法,包括如下步骤:
步骤1、中间件系统进行初始化,具体方法如下:
步骤1.1、创建适配器管理类AdapterServer的对象;
步骤1.2、适配器管理类对象根据引用的实时监控WCF服务,创建一个线程,调用适配器管理类的监听方法监听是否有客户端请求连接中间件,通过中间件连接实时监控WCF服务;
步骤1.3、若客户端程序请求与中间件建立链接,中间件适配器管理类对象监听到请求,则初始化一个与客户端程序对应的适配器类Adapter的对象,并再次进入监听状态,等待下一个客户端连接;
步骤1.4、适配器类的对象与客户端建立socket链接,并创建对应的消息缓存AdapterCache的对象。
步骤2、客户端调用服务端获取温度数据的操作,如图6所示,具体方法如下:
步骤2.1、客户端程序调用负责通信的函数,将需要调用的函数方法封装为方法调用消息类的对象;方法调用消息类的对象属性的方法名为int getRealTimeData,int表示方法的返回值为整型,getRealTimeData表示方法名称,该名称与WCF接口的方法名称一致,参数类型为一个元素的数组[String],表示方法参数为1个,类型是字符串类型,参数值为一个元素的数组[“temperature”],表示方法的第1个参数值为字符串类型的值“temperature”,用户状态没有,设置为空值;
步骤2.2、通信函数向中间件系统的客户端数据适配器模块发送函数调用的请求消息;
步骤2.3、客户端数据适配器模块通过已经链接的socket对象接收请求消息,将客户端发送来的消息放入消息缓存模块中,并通知服务端数据适配器模块处理;
步骤2.4、服务端数据适配器模块接收到通知,启动新线程从消息缓存模块中读取出命令消息,通过消息的消息类型属性判断为函数调用请求消息,读取函数调用请求消息的函数名称,参数类型,参数值,使用反射技术调用通信链路对象中对应的WCF服务的客户端引用模块操作接口,并将查找到的操作接口反射信息放入方法缓存,下次调用可直接从方法缓存中查找需要调用方法,节省运行时间;这里读取的消息是命令消息,则中间件执行请求的命令(目前只有请求断开连接命令),错误消息通过WCF定义的错误接收函数接收,返回值消息会被忽略掉;
步骤2.5、服务器将温度值作为返回值,返回给WCF服务的客户端引用模块,服务端数据适配器模块将返回值封装为返回值消息对象,对象属性的方法名为getRealTimeData,该名称与调用WCF接口的方法调用消息名称一致,返回值类型为一个元素的数组[Double],返回值为一个元素的数组[30],表示返回值为1个,类型是浮点数类型,温度值为30,用户状态没有,设置为空值;使用代理类中的发送消息至客户端缓存功能,将返回值消息对象放入消息缓存模块中,并通知客户端数据适配器模块调用,执行步骤2.6;如果没有返回值,处理流程结束;
步骤2.6、客户端数据适配器模块发现有返回值消息,则取出返回值消息,将该返回值消息序列化后,通过socket发送到客户端;
步骤2.7、客户端将接收到的返回值消息反序列化,根据方法名、参数类型、参数值获得温度返回值,操作结束。
步骤3、服务端调用客户端对液位过低进行报警的操作,如图7所示,具体方法如下:
步骤3.1、服务端程序通过中间件系统的WCF服务的客户端引用模块调用服务端数据适配器模块,发送报警消息,消息格式为[“level”,”low”],为包括两个元素的数组,第一个元素表示报警为液位报警,第二个元素表示报警信息为液位过低;
步骤3.2、服务端数据适配器模块将函数调用的请求消息封装为方法调用消息,方法名为“void alarm”,表示方法名为alarm,方法返回值为void,参数类型为:String[],参数值为[“level”,”low”],表示有一个参数,参数类型为字符串数组,参数值为[“level”,”low”]。方法名、参数类型、参数值需要与客户端要调用的方法一致。调用WCF适配器抽象代理类的发送消息至客户端缓存功能,将消息放入消息缓存模块中,并通知客户端数据适配器模块有缓存数据;
步骤3.3、客户端数据适配器模块从消息缓存模块中取出函数调用请求消息,序列化后通过Socket链接将该函数调用请求消息发送给对应的客户端通信接口;
步骤3.4、客户端通信接口判断消息为函数调用请求消息,将该函数调用请求消息反序列化后,使用反射技术,调用方法声明为void alarm(String[])类型的方法。
一般情况下,WCF服务端调用客户端接口没有返回值,否则有可能造成操作的死锁。本实施例中,void alarm(String[])方法执行报警操作,由于返回值为void,即没有返回值,操作结束。
本实施例的WCF框架net.tcp协议跨平台通信的系统即方法符合软件设计的“开闭原则”,在不改动原有WCF平台服务端代码的情况下,扩展了WCF平台的net.tcp协议,使之与不能安装.net Framework框架的操作系统手机客户端进行通信,极大的提高了net.tcp协议的适用性,加快了代码的开发速度,增强了项目实施和维护的可行性。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
Claims (2)
1.一种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的消息缓存。
2.一种WCF框架net.tcp协议跨平台通信的方法,其特征在于,通过权利要求1所述的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、客户端通信接口判断消息为函数调用请求消息,将该函数调用请求消息反序列化后,调用对应的函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051001.4A CN106506519B (zh) | 2016-11-21 | 2016-11-21 | WCF框架net.tcp协议跨平台通信的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051001.4A CN106506519B (zh) | 2016-11-21 | 2016-11-21 | WCF框架net.tcp协议跨平台通信的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106506519A CN106506519A (zh) | 2017-03-15 |
CN106506519B true CN106506519B (zh) | 2019-05-28 |
Family
ID=58328378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611051001.4A Active CN106506519B (zh) | 2016-11-21 | 2016-11-21 | WCF框架net.tcp协议跨平台通信的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106506519B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107835178B (zh) * | 2017-11-13 | 2020-10-30 | 北京奇艺世纪科技有限公司 | 一种多协议服务通信方法、装置以及电子设备 |
CN107911442B (zh) * | 2017-11-14 | 2021-03-23 | 中国银行股份有限公司 | 接收响应接口交互方法、装置、计算机设备及存储介质 |
CN109063040B (zh) * | 2018-07-17 | 2020-07-07 | 清华大学 | 客户端程序数据采集方法及系统 |
CN109923847B (zh) * | 2018-08-29 | 2021-01-15 | 华为技术有限公司 | 调用链路的发现方法、装置、设备及存储介质 |
CN109639636B (zh) * | 2018-11-06 | 2021-04-02 | 创新先进技术有限公司 | 业务数据转发、业务数据处理方法、装置及电子设备 |
CN109450907A (zh) * | 2018-11-21 | 2019-03-08 | 中国银行股份有限公司 | 基于websocket的通信系统搭建方法及装置 |
CN111935135B (zh) * | 2020-08-07 | 2022-04-08 | 浪潮云信息技术股份公司 | 一种基于cmsp的amqp协议代理方法 |
CN112788003A (zh) * | 2020-12-28 | 2021-05-11 | 浪潮通用软件有限公司 | 一种基于微服务架构的rpc通信方法及设备 |
CN112506514A (zh) * | 2020-12-30 | 2021-03-16 | 江苏沙钢高科信息技术有限公司 | 一种多平台服务共享系统 |
CN114095568B (zh) * | 2021-06-02 | 2023-09-12 | 北京机电工程研究所 | 一种基于中间件技术的消息传送装置和方法 |
CN115134395B (zh) * | 2022-05-31 | 2024-05-17 | 阿里巴巴(中国)有限公司 | 数据处理方法以及装置 |
CN115174666A (zh) * | 2022-06-15 | 2022-10-11 | 熙牛医疗科技(浙江)有限公司 | 一种跨框架的跨端消息推送方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN102801726A (zh) * | 2012-08-06 | 2012-11-28 | 上海西本网络科技有限公司 | 通信系统以及客户端与服务端之间的通信方法 |
CN202798801U (zh) * | 2012-08-17 | 2013-03-13 | 民航成都物流技术有限公司 | 一种用于实现分布式数据交互的通用性通讯系统 |
CN103188289A (zh) * | 2011-12-28 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种客户端与服务端的消息通信方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2007300472A1 (en) * | 2006-09-22 | 2008-04-03 | Sensormatic Electronics, LLC | System and method for event management |
-
2016
- 2016-11-21 CN CN201611051001.4A patent/CN106506519B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN103188289A (zh) * | 2011-12-28 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种客户端与服务端的消息通信方法 |
CN102801726A (zh) * | 2012-08-06 | 2012-11-28 | 上海西本网络科技有限公司 | 通信系统以及客户端与服务端之间的通信方法 |
CN202798801U (zh) * | 2012-08-17 | 2013-03-13 | 民航成都物流技术有限公司 | 一种用于实现分布式数据交互的通用性通讯系统 |
Non-Patent Citations (1)
Title |
---|
基于WCF和Silverlight的面向服务能源报表系统设计;于博 等;《硅谷》;20130908(第17期);第71、72页 |
Also Published As
Publication number | Publication date |
---|---|
CN106506519A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106506519B (zh) | WCF框架net.tcp协议跨平台通信的系统及方法 | |
CN113805867B (zh) | 一种基于可视化静态脚本引擎的物联网平台 | |
EP3543866A1 (en) | Resource-efficient record processing in unified automation platforms for robotic process automation | |
EP3364631A1 (en) | Dynamic orchestration of microservices | |
CN103414579A (zh) | 一种适用于云计算的跨平台监控系统及其监控方法 | |
WO2011150715A1 (zh) | 分布式控制系统中采集第三方设备数据的方法及装置 | |
CN112235130A (zh) | 一种实现基于sdn网络的运维自动化的方法和装置 | |
CN104579792A (zh) | 多适配方式实现多种类型虚拟资源集中管理架构及方法 | |
CN112600891A (zh) | 一种基于信息物理融合的边云协同系统及工作方法 | |
CN112615882B (zh) | 航天测运控地面站异构资源监控数据处理方法 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN114205230B (zh) | 云原生网元的配置方法、系统、介质及电子设备 | |
CN102185860A (zh) | 用于集成电路制造设备的标准化底层控制驱动系统 | |
CN113703997A (zh) | 集成多种消息代理的双向异步通信中间件系统及实现方法 | |
CN116340413A (zh) | 一种物联网边缘端数据采集与存储方法 | |
CN111831293A (zh) | 物联网配套软件云端快速部署方法 | |
CN114679463A (zh) | 一种实现pcdn资源管理的方法和装置 | |
CN110058900A (zh) | 基于可插拔组件框架的数据传输服务系统 | |
CN111552901A (zh) | H5跨引擎客户端数据自动化更新的方法、存储介质 | |
CN111506641B (zh) | 数据管理方法、数据采集平台、数据管理系统及存储介质 | |
CN109683875B (zh) | 分布式环境下mvc模式的应用框架系统及其方法 | |
CN112817539A (zh) | 一种工业数据存储方法、系统、电子设备及存储介质 | |
CN115774573B (zh) | 应用集成方法、装置、电子设备和存储介质 | |
CN112235419A (zh) | 基于行为树的机器人云平台执行引擎和执行方法 | |
CN104363110A (zh) | 一种基于画面计算服务的ems人机画面监控系统及实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210514 Address after: 272614 Industrial Park, quanpu Town, Jining City, Shandong Province Patentee after: SHANDONG WANSHIDA SPECIAL PURPOSE VEHICLE MANUFACTURING Co.,Ltd. Address before: 114051, No. 185, Qianshan Road, hi tech Zone, Liaoning, Anshan Patentee before: University OF SCIENCE AND TECHNOLOGY LIAONING |
|
TR01 | Transfer of patent right |