首页> 中国专利> 智能建筑综合管理平台系统中WCF通信消息拦截方法

智能建筑综合管理平台系统中WCF通信消息拦截方法

摘要

本发明提供一种智能建筑综合管理平台系统中WCF通信消息拦截方法,当Client端向Server端发送WCF消息请求后,通过消息拦截过程拦截Server端返回的消息响应,并进行智能建筑综合管理平台系统中日志打印以及异常的捕捉处理,最后将消息返回给Client端,本发明利用AOP编程的方式实现了对WCF通信消息的拦截实现日志打印和异常处理的功能。本发明能够实现自动化消息拦截,降低了资源成本,应用广泛,商业价值高。

著录项

  • 公开/公告号CN106844156A

    专利类型发明专利

  • 公开/公告日2017-06-13

    原文格式PDF

  • 申请/专利权人 武汉虹信技术服务有限责任公司;

    申请/专利号CN201710060017.X

  • 申请日2017-01-24

  • 分类号G06F11/30;H04L29/06;H04L29/08;G06F9/54;

  • 代理机构武汉科皓知识产权代理事务所(特殊普通合伙);

  • 代理人严彦

  • 地址 430073 湖北省武汉市武汉东湖新技术开发区东信路5号——烽火光通讯产业大楼4楼

  • 入库时间 2023-06-19 02:35:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-07

    授权

    授权

  • 2017-07-07

    实质审查的生效 IPC(主分类):G06F11/30 申请日:20170124

    实质审查的生效

  • 2017-06-13

    公开

    公开

说明书

技术领域

本发明涉及智能建筑综合管理平台,具体涉及基于WCF(Windows CommunicationFoundation)通信框架开发的智能建筑综合管理平台客户端和服务端通信的消息拦截统一处理的实现方法。

背景技术

在智能建筑综合管理平台中,客户端与服务端的通信机制采取的是WCF通信机制,在智能建筑综合管理平台中的 WCF通信过程中有打印日志和异常处理的需求。

WCF是由微软开发的一系列支持数据通信的应用程序框架。对于WCF的客户端来说,WCF服务就像是一个Web Service一样,所有WCF的通信链接都是由客户端的服务代理来完成,客户端开发人员不需要在WCF通信方面花费精力,只需专注客户端的业务开发,对于开发客户端系统很便利。同时WCF通信也采取了SOAP(Simple Object Access Protocol,简单对象访问协议),这种简单对象访问协议消息通信机制,使得通信过程很安全。由于WCF开发的便利性和安全性,当前在智能建筑综合管理平台中采取了WCF的通信机制。

但是,在智能建筑综合管理平台中需要处理日志打印和异常的捕捉处理的地方非常多,如果编程人员在每一个需要日志打印和异常处理的地方都手动编写代码,无疑将增加工作量,编写大量重复代码降低开发效率,出错率也会上升。传统的日志打印方法和异常处理方法无法满足智能建筑综合管理平台快速开发的需求。

发明内容

针对现有技术的问题, 本发明提供了一种智能建筑综合管理平台系统中WCF通信消息拦截方法。

本发明提供一种智能建筑综合管理平台系统中WCF通信消息拦截方法,当Client端向Server端发送WCF消息请求后,通过消息拦截处理过程拦截Server端返回的消息响应,并进行智能建筑综合管理平台系统中日志打印以及异常的捕捉处理,最后将消息返回给Client端;消息拦截处理过程实现如下,

步骤1,建立接口类IAopOperator,该类提供一个方法Process(IMethodCallMessage _call),其中参数_call的类型为IMethodCallMessage,IMethodCallMessage为微软提供的系统类,_call参数为方法调用消息接口信息;

步骤 2,建立抽象类AopProxyBase,所有自定义消息拦截代理类都从此类派生;该类继承步骤1中IAopOperator接口类和微软系统提供的RealProxy类,实现步骤1中的接口类IAopOperator中的Process方法, Process方法用来返回拦截的WCF消息所执行的方法结构;

步骤3,建立接口类IAopProxyFactory,用于创建特定的消息拦截代理的实例,IIAopProxyFactory类提供一个方法CreateAopProxyInstance,该方法用来返回步骤2中定义的抽象类AopProxyBase;

步骤4,建立类AopProxyAttribute,该类继承微软提供的系统类ProxyAttribute;

步骤5,建立类AopWcfProxy,该类继承自步骤2中的AopProxyBase类;该类覆写了AopProxyBase中的Process方法,实现对WCF通信过程中消息拦截的处理,在智能建筑综合管理平台中实现通用的日志打印和异常的捕捉处理;

步骤6,建立工厂类AopWcfProxyFactory,该类继承步骤3中的接口类IAopProxyFactory,实现接口的方法CreateAopProxyInstance,返回步骤5中的AopWcfProxy对象;

步骤7,在所有需要进行消息拦截的类前面加上[AopProxyAttribute(typeof(AopWcfProxyFactory))]标签,用于实现消息拦截功能;

其中,AopProxyAttribute为步骤4中定义的拦截属性类,typeof 为关键词,AopWcfProxyFactory为步骤6中定义的工厂类,用来创造步骤5中的AopWcfProxy对象的工厂类。

而且,步骤4中,AopProxyAttribute重写了ProxyAttribute类中的CreateInstance方法,用来获得被拦截对象的执行类。

在智能建筑综合管理平台中的 WCF通信过程中有对消息拦截进行打印日志和异常的捕捉处理的需求,本发明正是利用AOP编程的方式实现了对WCF通信消息的拦截实现日志打印、异常的捕捉处理的功能。在智能建筑综合管理平台中任何需要日志打印和异常的捕捉处理的地方按照约定的规则编码的时候给函数加上属性,就能实现异常的捕捉和处理以及日志的的打印,解决了重复编写代码的问题和提高了开发效率,降低了资源成本。进一步地,本发明中实现的对WCF消息进行拦截并进行日志打印和异常处理的功能可以应用的场景不限于智能建筑,任何需要实现消息拦截的功能都可以达到要求,应用广泛,商业价值高。

附图说明

图1为本发明实施例中系统拓扑连接图。

图2为本发明实施例中WCF通信的消息拦截的流程图。

具体实施方式

以下结合附图和实施例具体说明本发明的技术方案。

本发明的实施例基于WCF的分布式集群环境,基本运行环境的拓扑图如图1所示,使用分布式架构,智能建筑综合管理平台系统中Server(服务器)端和DataBase(数据库)端只有一个实例,Client(客户端)可以有多个实例。

在进行具体实施之前,需要对DataBase端基础数据环境配置,进行数据表的初始化。Client端和Server端用WCF的机制进行通信。

AOP(Aspect Oriented Programming)是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,在不修改源代码的情况下给程序动态添加功能。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。AOP的主要功能是日志记录,性能统计,安全控制,事物处理,异常的捕捉处理等。

利用AOP方式实现Client端对Server端的WCF通信的消息进行拦截,进行日志打印和异常的捕捉处理的实现方法包括如下步骤:

步骤1:建立接口类IAopOperator。该类提供一个方法Process(IMethodCallMessage _call) 。其中参数_call的类型为IMethodCallMessage,IMethodCallMessage为微软提供的系统类,_call参数为方法调用消息接口信息。方法Process的实现和使用参见下一步骤。

步骤 2:建立抽象类AopProxyBase,所有自定义消息拦截代理类都从此类派生。该类继承步骤1中IAopOperator接口类和微软系统提供的RealProxy类。实现步骤1中的接口类IAopOperator中的Process方法。该Process方法主要用来返回拦截的WCF消息所执行的方法结构。RealProxy类的Invoke方法为微软系统提供的现有技术,可重写RealProxy类的Invoke方法来调用Process方法。这样在所有继承AopProxyBase的类中只要覆写Process方法,就可以加入特殊的处理,比如日志打印或者异常的捕捉处理等。但是开发人员不能在每一个需要实现日志打印和异常的捕捉处理的地方都去重写Process方法。需要实现一个通用的方法以达到目的,减少代码的编写量。接下来的步骤就是来实现这个通用的方法。

步骤3:建立接口类IAopProxyFactory,用于创建特定的消息拦截代理的实例,IAopProxyFactory的作用是使消息拦截独立于具体的消息拦截代理类。IAopProxyFactory类提供一个方法CreateAopProxyInstance,该方法返回步骤2中定义的抽象类AopProxyBase。

步骤4:建立类AopProxyAttribute。该类继承微软提供的系统类ProxyAttribute。如果一个类想实现具体的消息拦截,只要实现步骤2中的抽象类AopProxyBase和步骤3中的IAopProxyFactory类,然后加上AopProxyAttribute特性即可。AopProxyAttribute重写了ProxyAttribute类中的CreateInstance方法,用来获得被拦截对象的执行类。ProxyAttribute类中的CreateInstance方法为微软系统提供的现有技术,本发明不予赘述。

步骤5:建立类AopWcfProxy,该类继承自步骤2中的AopProxyBase类。该类覆写了AopProxyBase中的Process方法。实现对WCF通信过程中消息拦截的处理,在智能建筑综合管理平台中实现的是通用的日志打印和异常的捕捉处理。

步骤6:建立工厂类AopWcfProxyFactory,该类继承步骤3中的接口类IAopProxyFactory。实现接口的方法CreateAopProxyInstance,返回步骤5中的AopWcfProxy对象。

步骤7:在所有需要进行消息拦截的类前面加上[AopProxyAttribute(typeof(AopWcfProxyFactory))]标签即可实现消息拦截功能。其中AopProxyAttribute为步骤4中定义的拦截属性类,typeof 为关键词, AopWcfProxyFactory为步骤6中定义的工厂类,用来创造步骤5中的AopWcfProxy对象的工厂类。消息拦截功能实现了捕获了WCF通信过程中所有的异常和日志记录,并进行个性化处理后返回给Client。

利用上述方案来实现Client端的日志打印以及异常的捕捉处理的流程参见图2。在Client端向Server端发送WCF消息请求后,本发明中实现的消息拦截处理过程会拦截Server端返回的消息响应,并进行日志打印以及异常的捕捉处理,最后将消息返回给Client端。具体实施时,本发明技术方案可由本领域技术人员采用软件技术实现,在需要实现日志打印以及异常的捕捉处理的地方只要加上约定的代码就可以轻易实现,实现自动日志打印以及异常的捕捉处理,达到了代码的复用目的,减少了代码的编写量,降低出错率。

上述实施例流程描述仅为了清楚说明本发明的基本方法和装置,但本发明并不仅限于上述实施例;凡是依据本发明的技术实质上实施例所作的任何简单修改、等同变化与修饰,均落入本发明的技术方案的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号