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

文档序号:9730250阅读:来源:国知局
Fl又作为WCF2宿主进行通信,WCF2与WCFl和网站服务器基于netTcpbingding协议通信,WCF2利用双工技术(回调机制可以称为订阅发布机制)向网站服务器模块推送数据。最后网站服务器模块接受WCF2数据后采用Signalr类库技术在服务器端建立HUB,由客户端通过建立代理类实现网站服务器端向客户端消息推送功能,用JavaScript技术实现网页客户端刷新无闪烁的良好显示效果。
[0028]另外网站服务器模块作为WCFl宿主可以采取调用WCFl的方法向远程终端回写数据。WCFl通过消息队列的方式将指令写在消息队列中,再由MFC数据采集程序通过读取消息队列取走数据后实现标定功能。
【具体实施方式】
[0029]图1基于WCF的物联网通信的系统
[0030]1、MFC数据采集模块
MFC数据采集模块负责与终端设备通信。终端设备连接方式有两种:互联网通信、本地通信。还有一种是与其他应用程序通信。各模块之间不共同工作,但可以按应用需求处理不同类型的事务。这里主要具体介绍互联网通信。
[0031]MFC数据采集模块搭建在一台互联网的PC上或申请云服务器,提供终端设备的连接信息:固定的域名地址、端口号。终端建立连接后可以向MFC数据采集模块发送消息。MFC数据采集模块可以接受多个终端设备的数据。MFC数据采集模块接收到终端设备数据可以理解为一包包的数组。每个数组需要MFC数据采集模块通过业务逻辑模块去解析它的意思,最后将数据存放在一个结构体链表中再传递给面向服务应用模块(WCH去处理。
[0032]2、MFC数据采集模块与面向服务应用模块(WCF)通信
MFC数据采集模块通过调用面向服务应用模块(WCH通信模块函数建立通信。面向服务应用模块(WCH可以与MFC采集数据程序安装在同一台服务器,也可以分布式架构。
[0033]面向服务应用模块(WCF)可以接收和转发数据给任意平台的应用程序,这里我们接收MFC数据采集程序的数据,然后对数据进行业务逻辑的分析,再转发给我们网站服务器模块和数据库。业务逻辑模块主要是优化处理MFC采集的数据,如我们有100个终端设备,目前建立通信的设备有20个,每个设备包含它的ID、生产厂家、位置、产生信息等,我们把这些信息存放在MFC数据采集程序一个结构体链表中,通过调用面向服务应用模块(WCF)提供的函数传递数据,由面向服务应用模块(WCF)将需要保存的信息存放在数据库内,实时数据直接推送到Web客户端让用户网页查看。
[0034]3、网站服务器模块
Web的客户端页面通过两种方式获得数据,一种是客户端用户主动请求,另一种是由面向服务应用模块(WCH将数据推送给网站服务端,再由网站服务端推送给Web客户端。
[0035]图2基于WCF编程模型的通信机制。
[0036]1、终端设备与MFC数据采集模块互联网通信终端设备主动握手请求数据,MFC数据采集程序被动连接应答终端。通信协议采用的通信方式应符合JT/T 794中的相关规定,通信协议采用TCP或UDP,MFC数据采集模块作为服务器端,互联网ECU(Electronic Control Unit)电子控制单元可以作为终端。协议采用大端模式(big-endian)的网络字节序来传递字和双字。每条消息由标识位、消息头、消息体和校验码组成。终端心跳为周期性发送的数据信息,其发送间隔每次上电复位后默认为60秒,确保远程统计设备在线状态。终端周期性向平台发送终端心跳,平台回复一个平台通用应答。消息ID-OxOOi^JFC数据采集模块如发送:7e O 2 2 I 11 12 11 11 11 11 7 b3b6 7e。通过JT/T 794协议,可以得知编号为111211111的数据发来一阵心跳。
[0037]MFC数据采集模块基于WindowsSoket的1CP模型,1CP主要针对数据吞吐量和连接并发量而设计。适用于能控制并发执行的高负载服务器技术,能够异步I/o操作的模型。首先创建一个完成端口(::CreatetoComplet1Port()).然后再创建多个线程,并指定到这个完成端口上去读取数据。再将远程连接套接字句柄关联到这个完成端口。对1CP模型下的MFC数据采集程序开发设计重点两个方面:(I)内存管理设计方面更新(2)通讯协议及无法粘包流程。
[0038]2、MFC数据采集程序与面向服务应用模块(WCF)的通信.MFC采集数据程序建立结构体链表(List:m_iClient)每个节点包含了一个终端设备的SocketId、位置、设备标识号、位置、报警状态、关键信息等信息。
[0039]WCFl作为宿主调用WCF2的GetData函数传递数据.WCF I作为服务,MFC数据采集模块通过WCF I暴露的服务地址和接口函数(GetAl IiClent)作为WCFl的宿主进行通信。
[0040]WCFl将采集的数据根据协议解析后通过执行SQL存放在数据库内,实时部分的数据传递给WCF2处理,实时部分数据主要是指哪些模块在线,它们的位置在什么地方等等。采用了 InstanceContextMode.Single模式主要保证客户代理实例化唯一,保证客户端获取的数据是最新的部分。WCFl作为WCF2的宿主传递数据,WCF2暴露的服务器地址和接口函数(GetData)。接口函数主要负责向WCF2推送数据。
[0041]WCF2设计回调机制,接受数据后会立刻推送给向它订阅的网页客户端。ITesCal Iback接口类中的Refresh方法用于客户端设计回调方法。
[0042]3、网站服务模块推送数据到Web客户端
网站服务端安装ASP.NET Signa Ir包,Web服务器端注册了一个HUB并定义CallWCFAsyncMetho方法,客户端生成代理后调用callWCFAsyncMethod方法向WCF2注册回调。网站服务器模块通过继承 MvcGPRSAppl.1.ServiceReference2.1TestServiceCallback,重写refresh方法再向客户端推送数据(this.clients.All.sendMessage(value) )。Web客户端接到数据更新通知后可以采用jquery(Javascript框架)技术刷新主界面,这里我们采用的是最新的DataTable 2.9插件,通过〃ajax〃属性:’/DataModule/DataProvider ’,实现网页无闪屏感的自然刷新。
[0043]4、网站服务模块向WCFl端发送数据
Web客户端与面向服务应用模块(WCFI)端通信,网站服务器作为WCFI的宿主,可以直接调用WCFl的函数。Web客户端调用网站服务模块主要是实现标定职能,如需要终端设备停止发送数据,或对终端设备远程发送具体的数据,Web客户端用户根据JT/T 794协议形成的指令和优化的数据反馈给WCFl,由WCFl形成消息队列(MSMQ:Message Queue)。
[0044]5、WCFl向MFC数据采集模块发送数据
WCFl不能反向调用MFC数据采集模块处理事务,这时我们采用消息队列(MSMQ)来解决这个问题。WCFl将网站服务器的业务请求转换为指定的消息格式存放在消息队列中。MFC采集程序模块采用线程设计思路将消息队列信息取走,再通过Socket或串口或Can口回写到终端设备中。
【主权项】
1.一种基于WCF的物联网通信方法,其特征是:由MFC数据采集模块、面向服务应用模块(WCF)和网站服务器模块组成的基于WCF的物联网通信系统,采用面向服务的通信机制,实现MFC数据采集模块采集的终端设备数据向Web客户端实时传递的过程,具体步骤如下: MFC数据采集模块基于标准协议将采集到的终端设备数据发送给面向服务应用模块中的通信模块WCFl程序,MFC数据采集模块与WCFl通信; B、面向服务应用模块中的通信模块WCF2程序采用netTcpbinding协议,分别与WCFl和网站服务器模块建立通信,WCF2处理回调机制,接收数据后会推送给向它订阅的网站服务器模块; C.网站服务器模块包含Web服务器端和Web客户端,负责将WCF2数据推送到Web客户端显不; D.Web客户端的业务请求经由WCFl转化为特定消息格式存放在消息队列后,由MFC采集数据模块采用线程架构取走,通过Socket、串口或CAN回写到终端设备。2.如权利要求1所述的基于WCF的物联网通信方法,其特征在于:MFC数据采集模块包括互联网通信模块、本地通信模块和进程间通信三个子模块,三个子模块互相独立工作,其中互联网通信模块用于与终端设备远程通信,本地通信模块用于与终端设备串口或CAN通信,进程间通信模块用于与其他基于Windows平台应用程序通信。3.如权利要求1所述的基于WCF的物联网通信方法,其特征在于,面向服务应用模块中的通信模块WCFl包含4个功能函数:打开数据库函数openSql、关闭数据库函数CloseSql、普通数据处理函数G e t D a t a用于接收普通数据,结构体链表数据处理函数GetDataUsingDataContract用于接收结构体数据;WCF2包含3个功能函数和一个回调接口函数:普通数据处理函数GetData用于接收普通的数据,注册监听函数ResgiterLi stenter和反注册监听函数UnResgi sterLi ster用于Web客户端向WCF2注册,注册后的Web客户端接收WCF2发布的数据,回调接口函数ITesCalIback用于创建虚函数Refresh,Web客户端通过实例化Refresh函数实现Web客户端刷新效果。
【专利摘要】本发明提供一种基于WCF的物联网通信方法,由MFC数据采集模块、面向服务应用模块(WCF)和网站服务器模块组成的基于WCF的物联网通信系统,采用面向服务的通信机制,实现MFC数据采集模块采集的终端设备数据向Web客户端实时传递的过程。MFC数据采集模块基于完成端口模型(简称:IOCP),与终端设备建立远程通信来获取数据,并将数据推送给网站服务器模块实时显示,也可以用单机版与终端设备建立本地通信获取数据,然后将数据推送给网站服务器模块实时显示。基于Signalr+WCF+JavaScript通信技术及开发思路将MFC采集的实时数据及时显示到网页端,弥补网页端数据即时显示交互性差的问题。
【IPC分类】G06F9/44, H04L29/08
【公开号】CN105491111
【申请号】CN201510820243
【发明人】钟艳, 史昇, 杨银
【申请人】镇江恒驰科技有限公司
【公开日】2016年4月13日
【申请日】2015年11月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1