CN103188289B - 一种客户端与服务端的消息通信方法 - Google Patents
一种客户端与服务端的消息通信方法 Download PDFInfo
- Publication number
- CN103188289B CN103188289B CN201110446883.5A CN201110446883A CN103188289B CN 103188289 B CN103188289 B CN 103188289B CN 201110446883 A CN201110446883 A CN 201110446883A CN 103188289 B CN103188289 B CN 103188289B
- Authority
- CN
- China
- Prior art keywords
- service
- class
- service end
- wcf
- message
- 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
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种客户端与服务端的消息通信方法,在客户端与服务端之间利用WCF服务技术进行消息通信的场景下,所述方法包括:在WCF服务中增加统一应用操作处理功能;当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能执行服务端的消息发送处理操作。本发明的技术方案,能够避免了对每个消息请求时都进行相同的操作,提高了代码的复用率,可维护性,可扩展性。
Description
技术领域
本发明涉及服务端与客户端消息通信领域、B/S系统框架领域,特别涉及一种客户端与服务端的消息通信方法。
背景技术
目前基于服务端和客户端的应用程序越来越丰富,现有专注某一领域的技术也越来与多,比如客户端技术:HTML5、Flash、Silverlight等,提供服务类技术有:Web Service,Windows通讯接口(WCF,Windows CommunicationFoundation)等,所以客户端和服务端的消息通信的应用越来越广泛。服务消息拦截机制就是从客户端请求给服务的消息或服务端把处理的消息推送给客户端进行统一的过滤与处理。
目前基于客户端与服务端的应用程序在消息的处理上,往往是客户端处理客户端的消息,服务端去处理服务端的消息。比如请求到服务端的消息有对数据库操作的要求,需要在每一个消息请求上对数据库进行打开操作。
发明内容
本发明提供了一种客户端与服务端的消息通信方法,本发明的技术方案能够对每一次的WCF服务调用,进行拦截消息后,统一的进行一系列操作,避免把操作下沉到服务端,这样提高了代码的可维护性,复用性。
为达到上述目的,本发明的技术方案是这样实现的:
本发明公开了一种客户端与服务端的消息通信方法,在客户端与服务端之间利用WCF服务技术进行消息通信的场景下,该方法包括:
在WCF服务中增加统一应用操作处理功能;
当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;;
当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能服务端的消息发送处理操作。
在上述方法中,所述在WCF服务中增加统一应用操作处理功能包括:
构造一个应用操作对应的的初始化类,该初始化类继承于消息分发检查器接口IDispatchMessageInspector,在该初始化类的相应的方法里进行操作。
在上述方法中,所述在WCF服务中增加统一应用操作处理功能包括进一步包括:
在构造一个应用操作对应的初始化类之前,在调用的WCF服务的生命周期里,维护所述应用操作对应的应用连接对象。
在上述方法中,所述在调用的WCF服务的生命周期里,维护所述应用连接对象包括:
构造一个扩展类,该扩展类继承于扩展接口IExtention<T>,在该扩展类中,声明一个属性以存储所述应用连接对象,以将所述应用连接对象扩展到WCF服务对象中。
在上述方法中,该方法进一步包括:
构造一个自定义特性类,该类继承于属性Attribute类和服务行为接口IserviceBehavior,在所述自定义特性类的应用行为分发ApplyDispatchBehavior方法里插入所述应用操作对应的初始化类;
所述统一应用操作处理功能执行服务端的消息接收/发送处理操作包括:
当请求WCF服务时,调用所述应用行为分发ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里进行操作。
在上述方法中,该方法进一步包括:
构造一个自定义特性类,该类继承于属性Attribute类和服务行为接口IServiceBehavior,在所述自定义特性类的应用行为分发ApplyDispatchBehavior方法里插入所述操作对应的初始化类;
在上述方法中,所述统一应用操作处理功能执行服务端的消息接收/发送处理操作包括:
当请求WCF服务时,调用所述应用行为分发ApplyDispatchBehavior方法后,通过在该初始化类的相应的操作方法里对所述应用连接对象进行操作。
在上述方法中,当所述应用为数据库时,
所述当请求WCF服务时,调用应用行为分发ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里对所述应用连接对象进行操作包括:
在数据库连接对象初始化类的请求接收后AfterReceiveRequest方法里对数据库连接对象进行赋值操作,以打开数据库连接对象。
在数据库连接对象初始化类的发送应答前BeforeSendReply方法里对数据库连接对象进行关闭和回收。
综上可见,本发明在客户端与服务端之间利用WCF服务技术进行消息通信的场景下,通过在WCF服务中增加统一应用操作处理功能;当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能执行服务端的消息发送处理操作,能够避免了对每个消息请求时都进行相同的操作,提高了代码的复用率,可维护性,可扩展性。
附图说明
图1是本发明实施例中的客户端与服务端的消息通信机制示意图;
图2是本发明实施例中的客户端与服务端的消息通信方法的实现流程图。
具体实施方式
本发明中,在利用WCF服务技术进行消息通信时,当消息到达服务端时,对消息进行拦截,然后进行一系列相应操作。当服务端处理完消息后发送到客户端前再次对消息进行拦截,然后进行一系列操作。避免了对每个消息请求时都进行相同的操作。比如请求到服务端的消息有对数据库操作的要求,我们可以对这类消息在服务端收到消息时就进行打开数据库连接操作,而不用在每一个消息请求上对数据库进行打开操作。这样提高了代码的复用率,可维护性,可扩展性。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例中的客户端与服务端的消息通信机制示意图。本发明提出了一种客户端与服务端的消息通信方法,在客户端与服务端之间利用WCF服务技术进行消息通信的场景下,在WCF服务中增加统一应用操作处理功能;当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能执行服务端的消息发送处理操作。其中,服务端的消息接收处理操作为:服务端在接收到每条服务请求消息时都需要执行的操作;服务端的消息发送处理操作为:服务端每次向客户端发送服务响应消息时都需要执行的操作。
也就是,客户端请求WCF服务操作,在到达服务端时,可以进行一些操作,比如打开数据库连接操作、记录客户端行为操作、并且如果需要的话把这些操作的结果传给服务端。同理,服务端把消息发送到客户端前,也可以进行一些操作,比如关闭数据库连接操作,处理服务端的异常消息,记录服务端日志操作等。
为了实现在WCF服务中增加统一应用操作处理功能,可采用以下方法:
构造一个应用操作对应的的初始化类,该初始化类继承于消息分发检查器接口IDispatchMessageInspector,此接口可以在服务应用程序中对入站和出站应用程序消息进行自定义检查或修改,所以可以在该初始化类的相应的方法里进行操作。
另外,需要在WCF调用时去激活该应用操作。因此,构造一个自定义特性类,该类继承于属性Attribute类和服务行为接口IServiceBehavior,此接口提供一种在整个服务内修改或插入自定义扩展的机制,我们可以运用这个机制在所述自定义特性类的应用行为分发ApplyDispatchBehavior方法里插入所述应用连接对象初始化类,然后在用此特性应用于每一个WCF服务中。
当请求WCF服务时,调用所述ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里进行操作。
当该应用在服务端的消息接收和消息发送的过程中,要都要进行相应的操作时,在构造一个应用操作对应的初始化类,在该初始化类的相应的方法里进行操作之前,在调用的WCF服务的生命周期里,维护所述应用操作对应的应用连接对象,也就是把一个对象扩展到另一个对象,因此构造一个扩展类,该扩展类继承于扩展接口IExtention<T>,在该扩展类中,声明一个属性以存储所述应用连接对象,以将该应用连接对象扩展到WCF服务对象中。
此时,仍需要在WCF调用时去激活该应用操作。因此,构造一个自定义特性类,该类继承于Attribute类和IServiceBehavior接口,在所述自定义特性类的ApplyDispatchBehavior方法里插入所述应用操作对应的初始化类;
当请求WCF服务时,调用所述ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里对所述应用连接对象进行操作。
以打开数据库连接和关闭数据库连接操作为例,当应用为数据库时,在数据库连接对象初始化类的接收请求后AfterReceiveRequest方法里对数据库连接对象进行赋值操作,以打开数据库连接对象。在数据库连接对象初始化类的发送应答前BeforeSendReply方法里对数据库连接对象进行关闭和回收。实现步骤如下:
1、自定义一个扩展类,此类继承于接口IExtension<T>。同时,在这个扩展类里,我们要声明一个属性以存储数据库连接对象,以便于每次调用时使用。
2、构造一个数据库连接对象初始化类,此类继承IDispatchMessageInspector接口,在声明的这个类中的AfterReceiveRequest方法里把第一步声明的数据库连接对象进行赋值操作,以打开数据库连接对象。
3、声明一个自定义特性类,此类继承与Attribute类和IServiceBehavior接口,在ApplyDispatchBehavior方法里插入第二步自定义的数据库连接对象初始化类。
4、通过以上步骤我们就可以在WCF上下文中获得打开的数据库连接对象了,并能够在服务端使用。
5、在服务端使用完数据库连接对象以后,我们需要对它进行回收,同理,在第二步里的类中有BeforeSendReply方法,我们可以在这个方法里对数据库连接对象进行关闭和回收操作。
图2是本发明实施例中的客户端与服务端的消息通信方法的实现流程图。如图2所示,将数据库连接对象扩展到WCF服务对象后,当请求WCF服务时,系统会初始化一个WFC实例,创建实例上下文,并在调用ApplyDispatchBehavior方法后,在数据库连接对象初始化类中的AfterReceiveRequest方法里打开数据库连接,或在数据库连接对象初始化类中的BeforeSendReply方法里关闭并回收连接对象。
综上所述本发明的技术方案在客户端与服务端之间利用WCF服务技术进行消息通信的场景下,在WCF服务中增加统一应用操作处理功能;当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能执行服务端的消息发送处理操作。本发明的技术方案,能够避免了对每个消息请求时都进行相同的操作,提高了代码的复用率,可维护性,可扩展性。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (7)
1.一种客户端与服务端的消息通信方法,其特征在于,在客户端与服务端之间利用Windows通讯接口WCF服务技术进行消息通信的场景下,该方法包括:
在WCF服务中增加统一应用操作处理功能;
当WCF服务接收到来自客户端的发送给服务端的服务请求消息时,由所述统一应用操作处理功能执行服务端的消息接收处理操作;
当WCF服务接收到来自服务端的发送给客户端的服务响应消息时,由所述统一应用操作处理功能执行服务端的消息发送处理操作。
2.根据权利要求1所述的方法,其特征在于,所述在WCF服务中增加统一应用操作处理功能包括:
构造一个应用操作对应的初始化类,该初始化类继承于消息分发检查器接口IDispatchMessageInspector,在该初始化类的相应的方法里进行操作。
3.根据权利要求2所述的方法,其特征在于,所述在WCF服务中增加统一应用操作处理功能进一步包括:
在构造一个应用操作对应的初始化类之前,在调用的WCF服务的生命周期里,维护所述应用操作对应的应用连接对象。
4.根据权利要求3所述的方法,其特征在于,所述在调用的WCF服务的生命周期里,维护所述应用连接对象包括:
构造一个扩展类,该扩展类继承于扩展接口IExtention<T>,在该扩展类中,声明一个属性以存储所述应用连接对象,以将所述应用连接对象扩展到WCF服务对象中。
5.根据权利要求2所述的方法,其特征在于,该方法进一步包括:
构造一个自定义特性类,该自定义特性类继承于属性Attribute类和服务行为接口IServiceBehavior,在所述自定义特性类的应用行为分发ApplyDispatchBehavior方法里插入所述应用操作对应的初始化类;
所述统一应用操作处理功能执行服务端的消息接收/发送处理操作包括:
当请求WCF服务时,调用所述应用行为分发ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里进行操作。
6.根据权利要求3所述的方法,其特征在于,该方法进一步包括:
构造一个自定义特性类,该自定义特性类继承于属性Attribute类和服务行为接口I ServiceBehavior,在所述自定义特性类的应用行为分发ApplyDispatchBehavior方法里插入所述应用操作对应的初始化类;
所述统一应用操作处理功能执行服务端的消息接收/发送处理操作包括:
当请求WCF服务时,调用所述应用行为分发ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里对所述应用连接对象进行操作。
7.根据权利要求6所述的方法,其特征在于,当所述应用为数据库时,
所述当请求WCF服务时,调用应用行为分发ApplyDispatchBehavior方法,在该初始化类的相应的操作方法里对所述应用连接对象进行操作包括:
在数据库连接对象初始化类的请求接收后AfterReceiveRequest方法里对数据库连接对象进行赋值操作,以打开数据库连接对象;
在数据库连接对象初始化类的发送应答前BeforeSendReply方法里对数据库连接对象进行关闭和回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110446883.5A CN103188289B (zh) | 2011-12-28 | 2011-12-28 | 一种客户端与服务端的消息通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110446883.5A CN103188289B (zh) | 2011-12-28 | 2011-12-28 | 一种客户端与服务端的消息通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103188289A CN103188289A (zh) | 2013-07-03 |
CN103188289B true CN103188289B (zh) | 2015-11-04 |
Family
ID=48679254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110446883.5A Active CN103188289B (zh) | 2011-12-28 | 2011-12-28 | 一种客户端与服务端的消息通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103188289B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104176301B (zh) * | 2014-08-14 | 2016-01-27 | 浙江中烟工业有限责任公司 | 一种超高速包装机数据采集系统 |
CN106506519B (zh) * | 2016-11-21 | 2019-05-28 | 辽宁科技大学 | WCF框架net.tcp协议跨平台通信的系统及方法 |
CN106844156B (zh) * | 2017-01-24 | 2020-08-07 | 武汉虹信技术服务有限责任公司 | 智能建筑综合管理平台系统中wcf通信消息拦截方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043478A (zh) * | 2007-04-20 | 2007-09-26 | 北京航空航天大学 | 实现消息安全处理的服务网关及方法 |
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
-
2011
- 2011-12-28 CN CN201110446883.5A patent/CN103188289B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043478A (zh) * | 2007-04-20 | 2007-09-26 | 北京航空航天大学 | 实现消息安全处理的服务网关及方法 |
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
Non-Patent Citations (2)
Title |
---|
Research and Application of WCF extensibility;Wei Zhang等;《2010 International Conference on Web Information Systems and Mining》;20101024;全文 * |
遗留系统并行架构的设计与实现;罗丹等;《计算机应用》;20110228;第31卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103188289A (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102202093B (zh) | 一种实现传感器适配的方法和系统 | |
CN103547342B (zh) | 消息发送方法、消息阅读通知方法、消息接收方法及装置 | |
CN102904738B (zh) | 工单处理方法及相关装置和系统 | |
CN103369593B (zh) | 一种压缩和解压缩以太网报文的方法及网元设备 | |
EP2437527B1 (en) | Method and device for implementing intelligent group service of mobile virtual private network | |
EP3186943B1 (en) | Device verification prior to registration | |
CN105245521B (zh) | 协议格式转换方法、装置及接口平台 | |
CN104320472A (zh) | 分布式短信网关架构系统及其设计方法 | |
CN103392328A (zh) | 远程控制通讯终端工作的服务器和方法及通讯终端 | |
JP2014504106A (ja) | 電気通信ネットワークにおけるサービスのオーケストレーションのための通信サービスブローカー | |
CN103188289B (zh) | 一种客户端与服务端的消息通信方法 | |
CN102333164B (zh) | 一种基于b/s构架的呼叫系统的来电弹屏方法 | |
CN105207909B (zh) | 一种发送信息的方法和网络装置 | |
CN106027534A (zh) | 一种基于Netty实现金融报文处理系统 | |
CN107659575A (zh) | 一种宽带集群多媒体功能体及其会话方法 | |
CN105100002B (zh) | 属性的操作方法及装置 | |
CN109889521A (zh) | 存储器、通信通道复用实现方法、装置和设备 | |
CN101924815A (zh) | 3g moa 手机中间件嵌入式系统 | |
CN105635497A (zh) | 终端呼叫转移的方法及终端 | |
CN104754544A (zh) | 一种国外网络注册方法、装置及系统 | |
CN100456852C (zh) | 短消息增值业务的控制系统及控制方法 | |
CN101170734B (zh) | 实现不同网络之间业务互通的方法及装置 | |
EP3324654A1 (en) | Integrating internet-of-things devices with sim and without sim | |
CN109995949A (zh) | 改号业务处理方法及装置 | |
CN103491159A (zh) | 一种工单解析异步调用服务的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |