一种基于wcf的物联网通信方法

文档序号:9730250阅读:841来源:国知局
一种基于wcf的物联网通信方法
【技术领域】
[0001]本发明属于通信技术领域,尤其适用于面向服务应用技术通信领域。
[0002]
【背景技术】
[0003]通过某种通信机制将既有程序从设备获取的数据应用于互联网是一种趋势,实现物联网应用通信的方法很多,但基于Windows平台开发的通信采集程序直接转互联网通信的方法并不多,其中大多数的方法是将MFC(Microsoft Foundat1n Classes是微软公司提供的一个类库)采集程序得到的数据先保存在数据库,再由互联网应用网站通过用户向数据库请求数据。本发明中终端设备的数据采集模块基于MFC开发,通过面向服务的通信机制,不通过数据库直接将采集到的数据推送到网页客户端前台,达到实时通信的效果。
[0004]

【发明内容】

[0005]本发明提出一套基于WCF(Windows Communicat1n Foundat1n)的物联网通信方法,该方法实现MFC数据采集模块与网站服务器模块(C#或其他语言开发的网站)通信。本方案MFC数据采集模块基于完成端口模型(简称:10CP),与终端设备建立远程通信来获取数据,并将数据推送给网站服务器模块实时显示,也可以用单机版与终端设备建立本地通信获取数据,然后将数据推送给网站服务器模块实时显示。
[0006]本发明由MFC数据采集模块、面向服务应用模块(WCF)和网站服务器模块三大部分组成,MFC数据采集模块和网站服务器模块之间通过面向服务应用模块(WCF)创建的函数建立通信。
[0007]1、MFC数据采集模块
MFC数据采集模块包括三个子模块:互联网通信模块、本地通信模块和进程间通信模块。
[0008]MFC数据采集模块的三个子模块不能同时运行,如启用其中一个子模块,则另外两个子模块不工作。互联网通信模块应用于与终端设备远程通信,本地通信模块应用于与终端设备串口或CAN通信,进程间通信模块应用于MFC数据采集模块与其他基于Windows平台应用程序通信。
[0009]远程(互联网)通信要求MFC数据采集程序安装在一台WINDOWS平台的计算机(简称:PC)内,PC需要具有公网IP地址和通信端口供远程终端连接并接收发送远程终端的数据,本地通信以及进程间通信只需MFC数据采集程序安装在联网(Internet/Intratnet)的PC上。PC与面向服务应用模块以及网站服务器模块协同工作将数据提供给更多用户使用。
[0010]为解决TCP/IP通信的虚连接问题以及保证远程通信的有效性和规范性,互联网通信模块采用的应用层协议是JT/T 794标准协议,其通信模型采用1CP模型,1CP基于Socket编程,适用于控制并发执行的高负载服务器。
[0011]本地通信模块主要分串口通信和CAN(Controller Area NetWork)通信,串口通信基于windows32位系统,使用两种编程方式,一是使用ActiveX控件,二是调用Windows的API函数。Can通信的应用层协议是CAN Calibrat1n Protocol(简称:CCP)协议,基于CAN转Usb协议转换器提供的驱动程序对CAN通信进行开发,该驱动程序是一种动态链接库。
[0012]进程间通信模块主要是将MFC数据采集模块作为一个中转模块,处理其他基于Windows平台的应用程序的数据,并将采集的数据通过面向服务应用模块和网络服务器模块实时反馈给多个用户。MFC数据采集模块作为中转模块,用户只需要关注进程间通信方式和接口,以及面向服务WCF模块的业务模型的设计。
[0013]2、面向服务应用模块(WCF)
面向服务应用模块(WCH主要含通信模块和业务逻辑数据接口。通信模块包含两个WCF程序,这里定义为WCFl和WCF2 JCFl处理解析MFC数据采集模块传递的数据,WCF2用于实现双工通信(双工通信:指在同一时刻信息可以进行双向传输)推送数据到网站服务器模块。业务逻辑数据接口是面向服务应用模块(WCF)中功能函数,其中WCFl包含4个功能函数:普通数据处理函数(G e t D a t a )用于接收普通数据,结构体链表数据处理函数(GetDataUsingDataContract)用于接收结构体数据。打开数据库函数(openSql)和关闭数据库函数(CloseSql) JCF2包含3个功能函数一个接口函数:普通数据处理函数(GetData)用于接收普通的数据,注册监听函数(ResgiterListenter)和反注册监听函数(UnResgisterLister)用于Web客户端向WCF2注册,注册后的Web客户端可以接收WCF2发布的数据。回调接口函数(ITesCallback)用于创建虚函数(Refresh),Web客户端通过实例化Refresh函数实现客户端刷新效果。
[0014]WCFl与MFC数据采集模块建立的结构体链表接口一致,其通过gSoap编译工具中WSDL(预处理程序)生成C/C++风格的头文件,再根据头文件自动生成调用远程SOAP服务客户端代码(称为存根:Stub)和提供SOAP服务的框架代码(称为框架:Skeleton),结构体链表存放的数据通过调用WCFl函数传递,这个函数就是MFC数据采集程序与WCFl的接口。通信中采用的绑定协议为basicHttpbinding,basicHttpbinding采用Http/Https协议,主要用于与旧的Web服务协作。其采用的通信模型为InstanceContextMode.Single模式。InstanceContextMode.Single实例行为类似于单件设计模式,所有客户端共享一个服务实例,这个服务实例是一个全局变量,使各模块调用WCFl函数变量成为最新数据。
[0015]但basicHttpbinding绑定协议不支持双工通信,为了支持双工通信,本发明又设计了WCF2程序,用于处理需要推送到网站服务器的数据,WCF2作为服务分别与WCFl和网站服务器模块建立通信,WCFl是WCF2的宿主,通过调用WCF2的函数传递实时数据。WCFl和WCF2可以分布式架构,来缓解计算机压力。WCF2主要处理回调机制,接收数据后将数据推送给向它订阅的网站服务器模块。WCF2的回调操作即由WCF2调用网站服务模块的方法。回调操作只有具有双向通信能力的绑定协议才可以使用回调,本方法中使用netTcpbinding绑定协议,通过设定ServiceContract特性中的Cal IBackContract属性并创建回调契约I TestCal Iback实例化回调对象再通过它创建一个上下文对象InstanceContext,然后用代理把这个回调引用传回WCF2。
[0016]3、网站服务器模块
网站服务器模块包含Web服务器端和Web客户端,采用MVC(Model-View-Control)架构,其中Mode I和Contro I主要用于Web服务器端,View主要用于Web客户端。网站服务器模块有两种通信模式:将WCF2信息推送到Web客户端显示和将Web客户端数据回传到MFC数据采集模块。
[0017]网站服务器模块让Web客户端和Web服务器端可以实时互相通知消息及调用方法,还负责将数据推送到Web客户端页面中,同时浏览器也有很好的兼容性。
[0018]网站服务器模块中安装ASP.NET Signalr类库包并注册了一个HUB(HUB是Signalr类库通信的一种模式),它能与所有Web客户端共享发送到Web服务器上的信息,同时Web月艮务端可以调用客户端脚本。客户端和服务器端使用JOSN格式(JavaScript ObjectNotat1n,是一种轻量级的数据交换格式)来交换数据,在服务器端声明的HUB,.Net依赖Proxy生成代理类,Proxy内部则是将JSON转换成对象,客户端可以看到对象。
[0019]Web客户端调用网站服务器模块函数与WCFl端通信,网站服务器模块作为WCFl的宿主,可以直接调用WCFl的函数,其通过功能函数形成的指令和优化的数据反馈给WCFl,由WCFl通知应用程序将数据回传到终端设备内。
[0020]WCFl不能反向调用MFC采集数据模块处理事务,WCFl向MFC采集数据模块发送数据需采用消息队列(MSMQ)来解决这个问题,WCFl将网站服务器的业务请求转换为指定的消息格式存放在消息队列中,MFC采集程序模块采用线程架构将消息队列信息取走,通过Socket、串口或CAN回写到终端设备中。
[0021]本发明的有益效果如下:
1、跨平台性好:WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。
[0022]2、性能好:基于完成端口模型的MFC应用程序通信。完成端口设计模型只适用于Windows NT和Windows 2000操作系统,其设计的复杂性,在应用程序需要同时管理数百乃至上千个套接字的时候,并希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升。但其接口通信和跨平台性差,通过本方案可以将其与Web客户端连接。
[0023]3、模块化好:本方案提供了一整套MFC程序采集的数据到Web
客户端显示的解决方案。整套方案由三大模块组成,每个模块都可以拆解,与其他方案通过通用接口通信。
[0024]4、显示效果好:基于5丨8肪]^+¥0?+加¥35。1^口1:通信技术及开发思路可以将10:^采集的实时数据及时显示到网页端,弥补网页端数据即时显示交互性差的问题。
[0025]5、分布式架构好:本方案的各模块均可以架构在不同的计算机,由面向服务应用模块(wen负责通信。
【附图说明】
[0026]图1基于WCF的物联网通信系统
图1表示本解决方案各模块的组成方式及连接示意。终端设备或其他基于WINDOWS平台的应用程序通过一定方式与MFC数据采集模块建立通信,MFC数据采集模块再通过通信接口与面向服务应用模块(WCF)建立通信。最后面向服务应用模块(WCF)程序再根据通用接口函数以及相关回调机制与网站服务模块建立通信。
[0027]图2基于WCF编程模型的通信机制
图2表示了各模块的具体通信协议和通信方式。本解决方案中提出了远程终端与MFC数据采集模块基于TCP/IP以及通用协议进行通信。本地终端也可以通过采用CCP协议或自定义协议通信。为实现双工通信,本方案面向服务应用模块(WCF)设计两个WCF程序来分布通信。MFC采集数据模块作为宿主调用WCFl方法传递数据,WC
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1