分布式桌面监视系统的设计与实现

时间:2022-06-16 03:58:48

分布式桌面监视系统的设计与实现

摘要现代的保安系统,充分利用现今先进的信息科学技术来提高自身的运行效率,让保安人员巡逻的同时可以获取到分布于各监视地点的监控摄像头的信息。系统目标是完成分布式桌面监视系统的原型,使用.Net Remoting 远程事件机制实现监视主机和受监控主机群的控制与被控制关系,其中传送的桌面截屏图像使用P/INVOKE技术调用受监视主机的本机API获取,并且对Sinks进行扩展,实现消息的压缩传送。另外,系统提供分布式环境下的多台受监视主机的桌面信息。

【关键词】分布式 保安系统 多台受监视主机 桌面监视

1 引言

分布式桌面监视系统,以Web Service作为面向用户程序的接口,提供对一个分布式环境下的多台电脑桌面的监视服务。并使用.Net Remoting 的远程事件机制组织监视主机和被监视主机群的通信,当中传送的桌面截屏图像使用P/INVOKE技术调用本机API获取。桌面截屏图像的传送通过对Sinks的扩展实现压缩传送。在系统客户应用示例方面,使用装有WINDOWS SMARTPHONE 2003操作系统的多普达565手机,基于.Net Compact Framework访问该Web Service作为典型的用户。

2 系统核心技术选择:.Net Rmoting

CORBA是现今真正意义上的跨平台,跨语言的分布式应用框架,它定义了几乎所有将会在分布式应用中出现的事物的标准。由于其部分标准为可选的,其跨平台性受到一定程度上损害了。CORBA使用抽象语言定义接口定义一切行为,这使得开发复杂度大,周期较长,更适合一些大规模的企业级应用。无论是分布式桌面监视系统,还是分布式保安系统,都要求对本机API的调用(设备数据获取,如屏幕图象或数据接口)。我选择了自己比较熟悉的WINDOWS操作系统作为系统原型的运行平台,因此在WIN32 API的调用上,.NET FRAMEWORK提供比JVM更强大和相对稳定的平台调用。因此.Net Remoting作为系统核心技术的首选。

3 实现系统的远程事件模型

3.1 远程事件模型的实现

当把eh.HandleMessage方法注册到远程事件的这一请求到达ScreenMontior实例时,ScreenMontior实例需要验证该方法的签名。但是EventHandler并不存在于Server端的任何一个地方,它只存在于Client端。这让我很容易想到把EventHandler直接放到sharedll中让双方公享,那么问题就得以解决。在此引入了一个中介远程对象,放在sharedll中供双方共享。这样,Server. ScreenMontior实例可以成功验证到在它事件上注册的方法,因为它可以在sharedll找到它需要的东西。而当该事件激活时,eventWrapper就可以直接回调远程的Client端的实际业务功能函数。

3.2 系统远程对象的设计

在解决了远程事件的实现问题和性能问题后,下面就是基于远程事件机制进行系统的远程对象的设计,首先监控主机和受监视主机群之间需要控制功能与图片上传功能。知道在.Net Remoting中,远程对象的激活分为两大类:服务器端激活和客户端激活。而服务器端激活又分为SingleTon模式和SingleCall模式两种。SingleTon模式为有状态模式,.Net Remoting将为所有客户端建立同一个对象实例。由于监控主机需要统一管理所有受监视主机,而且使用的是远程事件模型,因此控制功能必须由一个SingleTon对象来实现,就是讲所有受监视主机必须把其更改上传时间间隔的功能函数注册到监视主机的同一个远程对象的同一个事件上。至于上传功能,也可以使用上面提到的SingleTon对象提供一个服务来完成,但是我考虑到 :(1)从性能的角度,上传功能需要在监控主机和受监视主机在HTTP通道上传送图片,然后将相关信息写入数据库。由同一个对象处理所有请求,其负担必然过重。(2)从设计的角度,理应将功能细化并且考虑到扩展重用。综合以上两点,把上传功能抽离,独立提供一个SingleCall对象来为各受监视主机提供上传服务,这样我就可以把上传服务放到另外一个监控主机上。这样在线程安全(Thread Safe)的前提下,监控主机能以最大性能向各受监视主机提供截图上传服务。

3.3 P/Invoke技术在系统中的应用

受监视主机端的主要工作就是按照特定的时间间隔截取屏幕图像,然后上传。本次设计的系统是基于.Net Framework上使用C#完成的,使用P/Invoke(平台调用)技术直接调用WINDOWS丰富而强大的API完成本次工作。同理,需要使用GetDesktopWindow API获取桌面屏幕的handle。在准备好所有BitBlt所需的参数后,就可以调用该函数,将屏幕截取存放到一个托管代码中的位图对象中了。

4 系统应用界面开发

以一个监视主机端和两个受监控主机端为例,系统的应用界面如图1所示。

5 总结

在开源库NZiplib的帮助下,利用.Net Remoting,Web Service,Smartphone ,等技术成功完成分布式桌面监视系统原型的开发。对于整个系统而言,远程事件机制是核心功能的关键。

参考文献

[1]Keith Ballinger 《.NET Web Services: Architecture and Implementation》Addison Wesley.

[2]Jeff Prosise 《Programming 》 Microsoft Press.

作者简介

王兰丰,女,湖南省隆回县人。现为广东省华立技师学院讲师。本科学历。研究方向为网络信息安全、数据库、网站建设。

作者单位

广东省华立技师学院广东省广州市511325

上一篇:基于客户端javascript技术下推箱子游戏算法剖... 下一篇:电子工程设计的EDA技术研究分析