APP下载

构建基于.NET远程框架的图像分布式计算平台

2018-04-20鹏,宋超,张

襄阳职业技术学院学报 2018年2期
关键词:分布式计算服务端调用

胡 鹏,宋 超,张 鑫

(1.湖北文理学院 图书馆,湖北 襄阳 441053;2.襄阳职业技术学院 汽车工程学院,湖北 襄阳 441050)

一、图像识别及其面临的困境

随着人工智能技术的发展,计算机在图像识别这一领域的应用得到了更加快速的发展。人工智能算法的改进使得图像识别的速度和准确率越来越高,而在图像识别领域模板匹配是常用的一种基础方法,很多高级算法均是以此方法为基础发展而来。然而对于模板匹配而言,随着目标图像规模比如像素的增长,计算机对图像识别处理的时间和所需存储空间以几何倍数增长。当面对目标图像过大时,由于单台计算机处理能力有限,会导致处理时间和所需要的存储空间急剧增加以至于无法进行处理。面对这种情况,单纯从算法方面进行改进收效甚微,而使用计算能力更强的计算机则会花费更多的成本,因此需要引入分布式处理的方式,利用多台电脑对目标图像进行分布式处理,以节省处理所需的时间和空间,更重要的是可以将单台计算机无法完成的图像处理任务变得可以处理。

二、.Net web服务技术与.Net远程框架技术对比

目前构建分布式计算平台且易于部署和实现的技术方案有微软公司.NET平台下的Web服务技术与远程框架技术。

(一).Net Web服务技术概述

Web服务技术是一种将应用程序以软件组件的方式进行发布,并通过网络为用户提供服务,以XML、HTTP、SOAP等业界标准为基础的技术。以Web服务技术封装的应用程序叫做Web Service,它可以是某台计算机上的某个组件,这个组件可以为其它调用它的计算机提供服务。Web Service采用XML格式来作为数据描述的统一格式,以WSDL文档来描述自身定义,使用简单对象访问协议(SIMPLE OBJECT ACCESS PROTOCOL,SOAP)来进行调用,以取代传统的组件调用方式。而且基于XML的Web service往往以一个功能模块来提供一个服务,因此多个Web service则表现为多个的功能模块,并能够通过标准接口进行访问。Web Service为互联网应用程序提供了一种非常有效的方式来共享数据和功能,因此Web Service能够较好地解决异构应用程序之间松散耦合环境下的互操作、集成和协作问题。[1~3]基于XML的Web Service的一大特点在于其跨平台性,无论以什么语言在什么平台上编写的应用程序,只要它以Web服务技术进行封装,那么无论是Windows系统还是Linux系统或者其它的系统都可以通过互联网对该Web Service进行访问和调用。而且只要发布的Web Service的调用接口不发生变化,那么即使改变其内部封装的应用程序比如变更编写语言或者变更使用的算法,调用该Web Service的用户程序均不需要进行改变。因此Web服务技术便成为整合异构数据库、搭建网络分布式平台尤其是在互联网上搭建分布式平台的重要技术。

(二).Net远程框架技术概述

.Net远程框架技术是.Net提供的一种用于替代DCOM的技术,[4]这种技术是可以实现构建分布式平台系统的一种编程框架。该技术可以实现同一局域网下不同的计算机上运行同是.Net框架的程序间相互通信,可以将需要远程处理的对象与选定的客户端或服务端的应用程序和通信机制隔离开来。这样服务端的程序和远程处理对象以及客户端程序的耦合性就变得很低,对调用该远程对象向网上客户提供服务的应用程序的要求就很简单,几乎任何应用程序都可以完成调用。.Net远程框架提供了System.Runtime.Remoting命名空间,这个空间中的类可以处理所有与通信相关的底层细节。一般而言,要构造一个分布式系统,就需要从网络上其他的计算机中调用方法,访问其中的对象。通常,进行方法调用的计算机叫做客户端,而实现该方法并远程完成该调用具体操作的计算机叫服务端,而通过System.Runtime.Remoting命名空间所提供的方法接口就可以实现客户端与服务端的通信如参数传递等工作。和Web服务技术相比,.Net远程框架技术在客户端与服务端的通信方式上具有更加灵活的选择,当客户端与服务端使用的通信通道为Http时,消息则被序列化为XML格式通过SOAP传输;而当客户端与服务端使用的通信通道为Tcp时,消息则被序列化为二进制格式进行传输。[5]从技术特点上来分析,对于图像处理的运算更多的是通过局域网的多台计算机构建的计算平台来实现,因此,可以使用二进制编码的.Net远程框架应用程序更适合构建分布式计算平台。

三、构建分布式计算平台的.Net远程框架关键技术分析

(一)远程调用的基本流程

.Net远程框架会根据需要提供服务的内容创建一个远程服务对象,然后将该服务对象部署到一台计算机上,该计算机即为服务端。部署好后,服务端启动后先进行注册并等待即将连入的客户端。当客户端接到用户指令后就需要调用远程对象的某个方法用以处理具体的运算。在.Net远程框架中客户端中的程序和服务端中的程序都处于不同的程序域即AppDomain中。在.Net体系中,应用程序域指的是一个应用程序的逻辑进程,.Net体系通过应用程序域可以实现运行时各应用程序间的代码相互隔离,每个应用程序域均可以在进程中被创建、启动、运行、调试和终止,一个应用程序域中的应用不会影响其他应用程序域中应用的执行。[6]因此一个AppDomain中的对象,只是在自己的AppDomain中才存在,在服务端的远程服务对象客户端是无法直接访问的。客户端在调用远程对象的方法时,必须要通过代理对象来实现,而且在使用代理对象访问远程对象之前必须先激活才能使用。客户端的代理一般包含两种,一种是透明代理。这种代理就表示它是一个远程对象的精确副本,而远程对象所具有的可以调用和使用的方法它也都可以使用和调用,这样用户对远程对象方法的调用都会被它获取并将该调用传递给真实代理,这种代理和其代理的对象几乎无区别。另一种就是真实代理。这种代理是对用户调用进行具体处理,它会接收透明代理所发出的消息,并将该消息最终传递给远程对象。因此当在客户端使用Activator.GetObject()和 Activator.CreateInstance()方法时,会返回给客户两个代理对象,透明代理和真实代理。为了描述方便,本文把透明代理和真实代理统一称为代理对象。当激活远程对象后,代理对象将用户指令以及调用远程方法所必须的参数封装成消息通过信息通道发送到服务端,服务端接受到消息后先对消息进行解码,然后根据传递过来的指令和参数调用对象相应的方法,并将运行结果封装成消息通过信息通道发送到客户端,客户端的代理对象将消息解码后把结果返回给用户。

(二)构造远程服务体系的要点

在构建远程服务体系时必须注意:①远程对象的激活分为两种方式:服务器激活和客户端激活。其中客户端激活是指服务端根据客户端的调用请求来创建服务对象,而服务端激活则是远程服务对象在服务端启动时自动创建。一般而言,客户端激活的对象生存期在客户调用结束后便终止,而服务端激活的则可以在每次调用时为每个调用的客户端均能生成一个新的对象实例。这样在构建远程服务体系时可以根据需要选择不同的激活方式。②在服务器端构建的远程对象都必须派生于MarshalByRefObject这个类,客户端则可以通过调用 CreateInstance、GetObject、New 等方法来激活远程对象的代理,并通过代理与远程对象进行交互。③部署服务端的远程对象时,需要将这些对象的相关特定信息如加载何种名称的程序集才能够激活该对象,以及该对象的命名空间和类型注册到.Net框架的公共语言运行库,以便于用户的调用并确保同一对象不会重复注册。

四、构建平台基本模型

利用.Net远程框架技术构建的分布式计算平台一搬以树状结构为主,其根节点主要起接收图像、图像分块、调度计算节点对分块图像进行处理、接收处理后的分块图像并将图像合并并返回给用户等作用。而其叶子节点则起计算作用,比如在计算节点装入图像识别的程序,便可以将无法在一台计算机上进行的图像识别处理,分布在若干台作为叶子节点的计算机上完成。分布式计算系统的基本结构如图1所示。

图1 分布式计算平台基本模型

图像分布式计算平台的构建方式是,首先将处理图像的方法封装到远程服务对象中,将其部署在作为计算节点的计算机上,然后在作为客户端的计算机上部署客户端即可。由此可见,部署基于.Net远程框架技术的分布式计算平台是非常容易的。下面详细描述下该平台的工作过程。首先在部署完作为计算节点的服务端程序后,需要运行其注册功能,这里的注册功能是用于将服务端所要使用的通讯通道以及远程服务对象的类通过RegisterChannel和RegisterWellKnownServiceType函数注册到.Net框架的公共语言运行库中,以便于客户端的调用。在部署完客户端后便可利用客户端的程序将图像打开,并根据计算节点部署情况,对图像进行分块,然后通过Activator.GetObject函数来建立代理,并通过代理来调用远程服务的方法,通过通讯通道将待处理的图像信息传递给计算节点,在计算节点处理完后将处理结果再次通过通道返回给客户端。当每个节点的结果均返回后,客户端便会将处理过的分块图像进行整合,从而完成整个图像处理过程。这里需要注意的是,我们在客户端对计算节点进行调用时需要使用异步调用技术来提高平台的运行效率,异步调用技术在Web service构建的分布式系统中应用非常广泛。[3]若不使用异步调用技术,则客户端在调用计算节点A进行图像处理后会等待A节点返回处理结果,再去调用B节点,然后等待B返回结果后再调用C依次经行,这样明显效率很低。而使用异步调用技术,客户端在调用A后不需等待A的结果就可接着调用B、C以及后续节点,等到所有节点返回结果后再进行整合处理,这样各计算节点可以在相差无几的时间中同时运行。当n个节点性能相同时,平台所花费的时间是未使用异步技术计算平台处理时间的1/n,无疑使用异步技术对系统性能的提高是巨大的。

五、计算平台测试

由于条件所限,下面以3台i3电脑构建的局域网分布式系统来对图像处理进行测试。其中一台为客户端用于计算节点的调用、图像的分割与整合,另外两台为计算节点进行图像的模板匹配,模版大小不变为5*3像素,改变目标图像的大小进行测试。单机完成图像识别处理所需的时间如表1所示。

表1 单机测试结果

下面以三台电脑构成的分布式图像处理系统来对图像处理进行测试,完成图像识别处理所需的时间如表2所示

表2 分布式平台测试结果

五、结论

通过图像处理测试表明,使用异步技术的分布式计算平台在有两个计算节点时对图像识别处理完成的时间,基本接近单机处理时间和未使用异步技术构建的分布式计算平台的一半,而且当图像越大越接近一半。因此,使用异步技术的分布式计算平台在处理大型图像的识别中是具有优势的。

当然本文所讨论的只是基于.Net远程框架技术的初步分布式计算平台,该平台的缺点很明显。首先图像处理程序需要封装于远程对象的方法中,如果图像处理要求有所变化,便需要修改该远程对象的方法,使用起来很不灵活。其次,该平台的容错性较差,如果局域网内的计算机出现故障便无法完成图像处理任务。因此,对分布式图像处理平台还需要更深入的研究和完善。

参考文献:

[1]顾宁,刘家茂,柴晓路.Web Services原理与研发实践[M].北京:机械工业出版社,2006:7-9.

[2]吕曦,王化文.Web Service 的架构与协议[J].计算机应用,2002(12):62-65.

[3]胡鹏.构建基于WEB服务的SOA信息集成系统—以襄樊学院图书馆为例[J].襄樊学院学报,2012(2):21-24.

[4]田梅.MS.NET Remoting在图书管理系统中的应用[J].河南农业大学学报,2011(8):463-466.

[5]范文广,黄存东.分布式系统的新型框架—.Net Remoting[J].长春大学学报,2012(10):1198-1206.

[6]邢志红,王凤伟.基于.Net Remoting的溯源证书评价管理系统设计[J].计算机与网络,2015(10):37-39.

猜你喜欢

分布式计算服务端调用
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
基于云计算的移动学习平台设计与实现
基于系统调用的恶意软件检测技术研究
云计算中MapReduce分布式并行处理框架的研究与搭建
面向异构分布式计算环境的并行任务调度优化方法
利用RFC技术实现SAP系统接口通信