资讯详情

通信系统以及客户端与服务端之间的通信方法

技术领域

本发明涉及网络通信技术,特别是客户端和服务端之间的通信系统和通信方法。

背景技术

WCF(WindowsCommunicationFoundation)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows它是通信接口.NET框架的一部分,由.NETFramework3.0开始引入,与WindowsPresentationFoundation及WindowsWorkflowFoundation并行为新一代Windows操作系统和WinFX三大应用开发类库。在.NETFramework2.在0和之前的版本中,微软发展了WebService(SOAPwithHTTPcommunication),.NETRemoting(TCP/HTTP/Pipelinecommunication)以及基础的Winsock等通信支持,由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性(例如.NETRemoting可以开发SOAP,HTTP对开发人员来说,通信),不同的选择会有不同的程序设计模型,必须重新学习,使开发人员在使用中有很多不便。同时,面向服务架构(Service-OrientedArchitecture)软件行业也很流行,所以微软重新检查了这些通信方法,设计了一个统一的程序开发模型,即WCF,为数据通信提供最基本、最灵活的支持。

基于WCF通信系统的技术一般包括WCF客户端(client)和WCF服务端(server),当用户需要实现服务时,通过方向WCF客户端发出服务请求,WCF基于所述服务请求创建客户端WCF通信服务端WCF通道(或称WCF网络链路),通过创建WCF通道实现WCF客户端与WCF服务端之间的通信交互包括:WCF创建客户端WCF通道将服务请求传递给通道WCF服务端;WCF服务端根据服务请求执行业务逻辑,并返回执行结果WCF客户端,即WCF客户端接收WCF服务端对服务请求的响应。现有技术中,在WCF客户端与WCF服务端之间的通信结束后,WCF客户端将关闭创建的客户端WCF渠道,如果收到新的服务请求,将创建新的服务请求WCF通道与WCF通信服务端。在现有技术中,在WCF客户端与WCF服务端之间的通信结束之后,WCF客户端将关闭创建的客户端WCF渠道,如果收到新的服务请求,将创建新的服务请求WCF通道与WCF由于服务端的通信。WCF客户端创建WCF通道消耗时间,会导致WCF客户性能低。

相关技术也可以参考公开号CN102209076A对于中国专利申请,该专利申请公开了服务端与客户端之间的互动方系统。

发明内容

本发明要解决的问题是现有通信系统WCF客户性能低。

本发明的技术方案为解决上述问题提供了客户端与服务端之间的通信方式,包括:

WCF接到服务请求后,客户端检测通道缓存池是否可用WCF通道,是则从所述通道缓存池中调用任意一个可用的WCF通道以与WCF服务端通信,否则基于上述服务请求创建WCF以及所述通道WCF通信服务端。

可选的,客户端和服务端之间的通信方式还包括:WCF客户端与WCF服务端之间的通信结束后,将创建WCF通道存储在通道缓存池中。

可选,在所述WCF客户端与WCF服务端之间的通信结束后,将创建WCF通道存在于通道缓存池中,检测到WCF通道未出错后进行。

可选的,客户端和服务端之间的通信方式还包括:检测存储在通道缓存池中的通道WCF通道是否错误会导致错误WCF从通道缓存池中移除通道。

可选的,所述通道缓存池中存储的WCF通道是否有错误是通过检测每个通道WCF实现了通道的状态位。

为了解决上述问题,本发明还提供了包括WCF客户端和WCF服务端,所述WCF客户端包括:

通道缓存池适用于存储所述WCF创建客户端WCF通道;

接到服务请求后,第一检测单元适用于检测通道缓存池中是否有可用性WCF通道;

调用单元适用于检测通道缓存池WCF通道后,调用所述通道缓存池中的任何可用通道WCF实现和描述通道WCF服务端之间的通信;

通道创建单元适用于检测到通道缓存池中不存在可用性WCF基于所述服务请求创建通道后WCF实现和描述通道WCF服务端之间的通信。

可选通信系统还包括缓存单元,适用于WCF客户端与WCF服务端之间的通信结束后,将创建WCF通道存储在通道缓存池中。

可选的通信系统还包括第三检测单元,适用于所述WCF客户端与WCF服务端之间的通信完成后,检测创建WCF通道是否错误;缓存单元将创建WCF通道存在于通道缓存池中,检测到第三检测单元WCF通道未出错后进行。

可选的通信系统还包括:第二个检测单元适用于检测储存在通道缓存池中的通道WCF通道是否错误;拆除单元适合发生错误WCF从通道缓存池中移除通道。

可选的,第二检测单位通过WCF存储在通道缓存池中的通道状态位检测WCF通道是否有错误。

与现有技术相比,本发明的技术方案至少具有以下优点:

通过在WCF当完成时,客户端设置通道缓存池WCF客户端与WCF通信结束后,服务端没有关闭创建的WCF通道,但存储在通道缓存池中,以便在下一个服务请求到来时从通道缓存池中获得可用的信息WCF因此,由于重复创建,通道大大减少WCF通道消耗的时间使WCF提高了客户端的性能。

通过存储在通道缓存池中WCF实时检测通道状态,删除检测错误WCF通道可有效避免调用通道缓存池WCF通道后的错误可以进一步改善WCF客户端性能。

将创建的WCF通道存储在通道缓存池之前WCF通道是否错误,以避免错误WCF通道存入通道缓存池,能进一步提升WCF客户端性能。

附图说明

图1是本发明提供的通信系统结构示意图;

图2是本发明实施例中通信系统的结构示意图;

图3是本发明实施例客户端与服务端之间的通信方式流程示意图。

具体实施方法

为了使本发明的上述目的、特点和优点更加明显和易于理解,以下结合附图详细说明了本发明的具体实施方法。本发明的具体细节在下面的描述中得到了充分的理解。但本发明可以以各种不同于本描述的其他方式实施,该领域的技术人员可以在不违反本发明内涵的情况下进行类似的推广。因此,本发明不受以下公开的具体实施方法的限制。

如背景技术所述,现有基础WCF在技术通信系统中,WCF客户端将创建每个收到的服务请求WCF通道与WCF服务端通信,通信结束后关闭创建的WCF由于创建,通道WCF通道需要更多的时间,这在一定程度上减少了WCF客户端性能。在实际情况下,发明人考虑了一些创造WCF通道可以重复使用,有可能是某个通道WCF通道关闭后不久,WCF客户端仍然需要重新创建,以满足通信交互的需要。因此,如果每次都创建它WCF通道缓存在通道缓存池中,可以在下次收到服务请求时从通道缓存池中调用WCF通道,这样可以减少重复创造的因素WCF通道造成的时间消耗有效增加WCF客户端性能。

需要注意的是,该领域的技术人员知道,通信系统中的调用通常是由WCF客户端启动,然后调用WCF因为服务端WCF服务端会接受众多WCF一般来说,客户端的调用过程WCF因此,通常会考虑提高服务端的消耗性能WCF服务端的性能;和WCF一般情况下,客户端的消耗性能会小很多,这一领域的技术人员不容易意识到WCF通道的反复创建可能是WCF调用客户端WCF在服务端过程中产生的最大性能消耗。

图1是本发明实施模式提供的通信系统的结构示意图。如图1所示,本发明提供的通信系统包括WCF客户端10和WCF服务端20,所述WCF客户端10包括:

通道缓存池100适合存储WCF创建了客户端10WCF通道;

第一检测单元101与通道缓存池100连接,适用于接到服务请求后,检测通道缓存池100务请求WCF通道;

调用单元102与第一检测单元101与通道缓存池100相连,适用于检测到通道缓存池100中的可用性WCF通道完成后,调用所述通道缓存池100中何一个WCF实现和描述通道WCF服务端20之间的通信;

通道创建单元103与第一检测单元101与通道缓存池100连接,适用于检测到通道缓存池100中无可用WCF基于所述服务请求创建通道后WCF实现和描述通道WCF服务端20之间的通信。

在本发明的实施模式中,通过WCF当客户端10设置通道缓存池100时WCF客户端10与WCF通信结束后,服务端20,WCF客户端10不是关闭创建的WCF通道将其存储在通道缓存池100中,以便在下一个服务请求到来时从通道缓存池100中获得可用性WCF通道,由于重复创建的减少,重复创建的减少WCF通道造成的时间消耗可以使WCF提高了客户端10的性能。

在本发明的实施模式中,通道缓存池存储在100中WCF通道是指处于空闲状态,没有错误WCF通道。

以下是上述通信系统的具体实施例。

图2是本发明实施例中通信系统的结构示意图。如图2所示,本实施例提供的通信系统包括WCF客户端10’和WCF服务端20,所述WCF除上述实施方法中提到的通道缓存池100、第一检测单元101、调用单元102、通道创建单元103外,客户端10还包括:缓存单元104、通道创建单元103、通道缓存池100、适于在所述WCF客户端10’与WCF服务端20之间的通信结束后,将创建WCF通道存储在通道缓存池100中。

需要注意的是,图1显示了通信系统WCF在本实施例中,客户端10所包含的通道创建单元103与通道缓存池100之间的连接是通过缓存单元104建立的,即通道缓存池100中存储的WCF通道由通道创建单元103创建,缓存单元104WCF客户端10’与WCF通信结束后,服务端20之间存储在通道缓存池100中。

图2显示了通信系统的实施过程。

实际实施时,本实施例提供的通信系统WCF客户端10也可以包括通信单元(图中未显示)接收用户提出的服务请求,并在WCF通道被获得后(由通道创建单元103创建获得或由调用单元102从通道缓存池100调用获得),将服务请求通过该WCF通道传递给WCF服务端20,以及接收WCF服务端20对于该服务请求的响应。

当所述通信单元接收到服务请求后,WCF客户端10’中的第一检测单元101会检测通道缓存池100中是否存在可用的WCF通道,如果存在可用的WCF通道,则由调用单元102调用所述通道缓存池100中任意一个可用的WCF通道,WCF客户端10’与WCF服务端20之间便建立起了通信连接,WCF客户端10’中的所述通信单元可以通过该WCF通道把所述服务请求传递给WCF服务端20,由WCF服务端20基于该服务请求执行相应的业务逻辑,并把执行结果作为对该服务请求的响应返回给WCF客户端10’的通信单元。如果通道缓存池100中不存在可用的WCF通道,则由通道创建单元103基于所述服务请求创建一个WCF通道,WCF客户端10’通过创建的WCF通道与WCF服务端20过程如前所述,在此不再赘述。

需要说明的是,所述通道缓存池100中可用的WCF通道的数量可能是一个,也可能是多个,此时只需要从中任选一个可用的WCF通道进行调用即可。在实际实施时,通道缓存池100一般可以使用堆栈的方式存储WCF通道,那么当通道缓存池100中存在一个以上可用的WCF通道时,则选取位于堆栈顶部的可用WCF通道。

当WCF客户端10’的通信单元接收到WCF服务端20对于所述服务请求的响应,该响应表示已获得该服务请求所需的结果,则说明WCF客户端10’与WCF服务端20之间的通信结束,此时,如果用于通信的WCF通道是由通道创建单元103所创建的,则由缓存单元104将该WCF通道存储到通道缓存池100之中。

需要说明的是,当WCF客户端10’刚刚启动时,通道缓存池100中通常并未存储任何WCF通道,那么接收到第一个服务请求时,用于与WCF服务端20进行通信的WCF通道由通道创建单元103创建获得,而随着WCF客户端10’接收的服务请求的不断增加(具体体现为线程数或其他组件的增加),一个个WCF通道被不断创建,通道缓存池100中存储的WCF通道也不断增加,那么其中存储的WCF通道被复用的可能性也随之增大,WCF客户端10’性能提升也越来越明显。当然,也可以在WCF客户端10’启动后便预先创建一定数量的WCF通道,以便在接收到服务请求后可以从通道缓存池100中调用可用的WCF通道。

仍然参阅图2,在本实施例中,所述WCF客户端10’还包括:第二检测单元105,与通道缓存池100相连,适于检测所述通道缓存池100中存储的WCF通道是否发生错误;移除单元106,与所述第二检测单元105和通道缓存池100相连,适于将发生错误的WCF通道从所述通道缓存池100中移除。

在实际实施时,由于各种原因,例如WCF服务端的拒绝、WCF服务端出错或重启、网络中断等等,常常会使通道缓存池100中存储的某个或某些WCF通道发生错误(或称为WCF通道失败),如果不对这些发生错误的WCF通道进行处理,则调用单元102在调用其进行通信交互时便会出错,同样会影响到WCF客户端10’的性能,因此需要实时地对通道缓存池100中存储的所有WCF通道进行检测,一旦第二检测单元105发现某个或某些WCF通道发生错误,便由移除单元106将其从通道缓存池100中移除,这样能够进一步提升WCF客户端10’的性能。

具体实施时,所述第二检测单元105是通过WCF通道的状态位检测所述通道缓存池100中存储的WCF通道是否发生错误的。WCF通道的状态位由底层库设定,此为本领域技术人员所公知,在此不再详细描述。

在其他实施例中,本发明实施方式中所述的WCF客户端还可以包括第三检测单元,适于在所述WCF客户端10’与WCF服务端20之间的通信结束后,所述缓存单元104将通道创建单元103所创建的WCF通道存于所述通道缓存池100之前,检测该WCF通道是否发生错误,是则关闭该WCF通道,否则将其存于通道缓存池100。由于在实际实施时,可能在WCF客户端通过某个WCF通道与WCF服务端完成通信交互之后,该WCF通道便可能发生错误,此时将其存入通道缓存池不仅毫无意义,还会影响WCF客户端的性能消耗,因此有必要在对WCF通道进行缓存之前就判断其是否可用。

此外,本领域技术人员知晓,用于WCF客户端与WCF服务端之间进行通信交互的WCF通道实际上是WCF客户端与WCF服务端双方建立的连接,具体由WCF客户端向WCF服务端发起连接,WCF服务端接受WCF客户端的连接,从而双方建立起连接。WCF客户端与WCF服务端之间建立的连接按照不同标准可以分为多种类型,例如可以分为长连接和短连接,也可以分为NET.TCP连接、HTTP连接等多种类型的连接,其中,NET.TCP连接通常属于长连接,该类型的连接被关闭后相应的端口一般不会马上被释放,因此,若一定时间内频繁地创建并关闭此类型的连接,则会造成WCF客户端的通信端口被耗尽的问题,而HTTP连接一般为短连接,该类型的连接被关闭后马上被释放,不存在上述问题。

本实施例中,所述WCF通道的类型可以为NET.TCP长连接,将NET.TCP长连接缓存于通道缓存池之中,除了能够减少因重复创建WCF通道而导致的时间消耗,还能够有效避免由于一定时间内频繁创建和关闭NET.TCP长连接而导致WCF客户端的通信端口被耗尽。

另外需要说明的是,本实施例中所述的WCF客户端和WCF服务端都是指相对性概念。一般来说,WCF客户端作为服务请求以及调用的发起方,WCF服务端作为服务请求以及调用的接受方(或称为响应方)。在实际情况中,某一台服务器既可以是WCF服务端,也可以作为WCF客户端向其他服务器发起调用。

本领域技术人员可以理解,实现上述实施例中通信系统的全部或部分是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是ROM、RAM、磁碟、光盘等。

对应于上述通信系统,本实施例还提供了一种客户端与服务端之间的通信方法。图3是本发明实施例的客户端与服务端之间的通信方法的流程示意图,如图3所示,所述客户端与服务端之间的通信方法包括:

执行步骤S101,WCF客户端接收到服务请求;

执行步骤S102,检测通道缓存池中是否存在可用的WCF通道;是则执行步骤S103,从所述通道缓存池中调用任意一个可用的WCF通道以与WCF服务端进行通信;否则执行步骤S104,基于所述服务请求创建WCF通道以与WCF服务端进行通信。

本实施例中,所述的客户端与服务端之间的通信方法,还包括:在所述WCF客户端与WCF服务端之间的通信结束后,将创建的WCF通道存于所述通道缓存池中。

其他实施例中,在所述WCF客户端与WCF服务端之间的通信结束后,将所创建的WCF通道存于所述通道缓存池之前,还可以检测待缓存的WCF通道是否发生错误,是则关闭该WCF通道,否则将其存于通道缓存池。

本实施例中,所述的客户端与服务端之间的通信方法,还包括:检测所述通道缓存池中存储的WCF通道是否发生错误,将发生错误的WCF通道从所述通道缓存池中移除。具体实施时,所述通道缓存池中存储的WCF通道是否发生错误是通过检测各WCF通道的状态位实现的。

具体实施时,所述WCF通道可以为NET.TCP长连接。

所述客户端与服务端之间的通信方法的具体实施可以参考本实施例提供的通信系统的实施,在此不再赘述。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

标签: s103传感器balluff

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台