阅读:1980回复:5
基于组件的WebGIS相关问题研究
<P>基于组件的WebGIS相关问题研究
杨建宇</P> <P>2004-03-02</P> <P>分布式组件对象模型介绍 组件实际上是一些可重用的二进制可执行程序,是关于对象之间相互作用的一个二进制标准。组件具有与编程语言无关性、进程透明性、位置透明性和可重用性的特点。现在主流的分布式组件模型技术主要有以下三种:</P> <P>CORBA (OMG) COM/DCOM (Microsoft) Java RMI、Applet、J2EE (Sun) 分布式组件对象模型比较 以上三种分布式组件模型各有特点,一般说来,CORBA和JAVA RMI具有平台无关性,而COM/DCOM一般是在微软的平台上实现;除了JAVA RMI(Applet)是用JAVA语言实现以外,其他两种都具有语言独立性;其他性能如容错性、安全性和可扩展性等均不相上下。在本实例中,作者考虑到客户端微软操作系统的普及性,采用的分布式平台是微软的COM/DCOM模型。 </P> <P>目前商用的组件式GIS产品主要基于Microsoft的COM/DCOM,包括Intergraph的GeoMedia,ESRI的MapObjects,MapInfo的MapX,我国的MapEngine、SuperMap等。 Com组件开发技术 C/C++开发组件 MFC库(以静态库或DLL) ATL/WTL库(以源码方式) 提供了一些维护代价很高的数据类型的包装类 如接口指针,VARIANT, BSTR, HWND 提供实现基本COM接口类(Iunknown,Idispatch,IClassFactory,IPersistXxx等) 管理com服务器的类:暴露对象,自注册和生命周期管理 节省手工录入的向导 其他面向对象环境(VB,DEPHI) Com组件开发的相关问题 内存的管理</P> <P> 接口指针与引用记数</P> <P> 组件的类型 内存管理 特点: 能跨模块分配内存(与C/C++比较) c/c++ malloc ,free; new ,delete com CoTaskMemAlloc , CoTaskMemFree 原则: In 参数 调用者应分配与释放内存。 Out参数 由被调用者分配内存,由调用者释放内存,采用标准的COM分配器。 In-Out参数 最初由调用者分配内存,然后由被调用者释放和再分配内存(如果需要),和Out参数一样,调用者负责最后返回值的释放。 结构指针 In:顶级指针和内嵌指针由都由调用者管理 out:顶级指针由调用者管理;内嵌指针被调用者管理 In,Out 同上 字符串 Unicode 类型,为良好支持语言透明性,最好用BSTR类型 转换:MultiByteToWideChar,WideCharToMultiByte,atl转换宏,A2W 接口指针与引用记数 确保引用记数的正确性。正确的创建与删除com对象。</P> <P>ATL的支持。 CComPtr、CComQIPtr、CComBSTR、CComVariant</P> <P>VC++的支持 IXxxPtr, _bstr_t,_variant_t 组件的类型 支持Iunknown(唯一的基接口) 优点:通过VTBL函数调用,效率高,接口参数可以使用IDL描述的所有参数 缺点:不灵活,不支持各种解释性语言环境如脚本。 支持双接口 是一种通过Idispatch和VTBL接口支持相同功能的接口。 其优缺点和上面的相反。 OGC中相应规范 为了促进地理信息与服务的标准化,OGC已经公布了许多相应的规范,在地理信息的Web服务方面主要有以下两个规范: Web Mapping Server(WMS规范) 这个规范针对栅格图象的。 Web Feature Server (WMS规范) 针对矢量图形的。</P> <P> WMS与WFS体系结构 支持的组件规范 OpenGis规范对目前流行的组件技术均有相应的规范支持,如:“Simple Feature Specification for OLE/COM”(SFO) 和“Simple Feature Specification for CORBA” 当前Web GIS实现技术 Web GIS主要是通过Internet网络平台为Internet网络用户提供各种与空间信息相关的服务,由于一般的网页只能显示栅格图像如GIF、JPEG,不能显示各种矢量空间数据,因此要想在一般网页上显示空间地理信息要么在客户端对浏览器加入一定控件(组件)让它负责各种空间数据的显示与操作,要么在服务器端对空间数据进行处理,把处理结果转换成浏览器能显示的栅格图像然后传送给客户端。综合现在流行的Web GIS实现技术主要有以下三种:</P> <P>服务器端技术 (被动式的Web GIS ) 客户端技术(主动式的WEB GIS ) 混合技术 (对上述两种技术的一种综合) 服务器端技术 服务器端技术又叫被动式的Web GIS, 对空间数据的各种操作与处理都在服务器端进行,然后把处理结果以栅格图像方式返回给客户端。 优点:是客户端不需要下载任何组件与插件,是瘦客户端的。 缺点:是任何操作均在服务器端处理与操作,对服务器端提出了较高的要求,同时由于要不断的响应客户操作的要求,增加了网络的负担,速度较慢,不适用于交互性较高的Web GIS系统。 代表性的技术:基于CGI(Common Gateway Interface)的实现方法和基于Server API(ISAPI ,NSAPI)的方法。</P> <P> 客户端技术 客户端技术又叫主动式的WEB GIS。程序开始时把需要的GIS数据与处理该数据的软件下载到客户端。和数据一起下载的软件一般以COM控件和Java applet的形式,下载之后自动安装自动运行,不需用户干预。这样各种GIS操作均在客户端进行,不需要在客户端与服务器端频繁传输数据,提高了响应速度。 但该种模式客户端软件功能有限,限制了GIS的高级应用。客户端技术的实现是以各种组件技术为基础来实现的,该种模式适用于交互操作性高,同时对GIS应用要求不高的系统。</P> <P>混合技术 混合技术是在分析服务器端技术和客户端技术缺点的基础上提出来的,该技术模型综合考虑客户机、服务器的计算能力与现有网络的通讯能力的情况下,适当的规划客户端与服务器端GIS功能,使之充分的发挥各自性能,达到一定负载平衡,从而提高系统的整体性能与互操作能力,更好的满足用户的需要。</P> <P>基于组件三层的系统体系结构 系统的体系结构从整体2上决定了系统的性能。相对于传统的C/S模式的体系结构,基于组件的三层或多层体系结构有以下显著优点: 能适应网络的分布式要求,较大的提高系统的可伸缩性和可扩展性。 提高了系统的安全性。中间层的加入,屏蔽了客户端对数据库服务器的直接操作。用户端只能通过中间层来访问数据层(数据库),这样把很多危险的操作都屏蔽掉了。 并方便系统的升级与维护。当应用程序业务逻辑或数据处理逻辑发生变化时,只需在中间层应用服务器上更新,而不需对所有的客户端都进行更新。 基于组件三层系统的体系结构 以上三层是从逻辑上进行划分的,三层从物理上来讲并不意味着三台独立的机器。除了客户端浏览器与COM显示组件必须在同一台机器上之外,应用服务器与数据服务器均可根据网络和机器的实际性能进行综合考虑。因此应用服务器和数据服务器可以根据实际情况进行分布式的配置,使硬件之间相互协调,充分发挥自己的性能,从而使系统的整体性能达到最优化。</P> <P>结论与演示 要根据实际情况合理的设计客户端与应用服务器组件的功能,使之间到达一定负载平衡,减少网络流量,提高系统整体性能 </P> <P>该体系结构是从逻辑上分为三层或多层,实际配置时应根据网络和硬件性能合理配置组件的物理位置,使机器充分发挥其性能</P> <P>交互性较高的组件最好配置在同一台机器上,以减少网络传输量,同时应尽量减少组件的数目,组件之间通信与调用将在一定程度上降低系统效率。 </P> <P> 谢谢大家! </P> |
|
1楼#
发布于:2004-10-11 20:50
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
2楼#
发布于:2004-10-11 23:27
好!<img src="images/post/smile/dvbbs/em02.gif" />
|
|
3楼#
发布于:2004-12-20 17:35
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em06.gif" />
|
|
4楼#
发布于:2005-01-20 14:45
我是新手是位学生现在很迷茫!想请交各位:Web服务与WebGIS 有什么关系。二者有什么联系?因为我的课题可能就是基于Web服务的GIS研究,但我不知道什么入手?谢谢!!!
|
|
5楼#
发布于:2005-01-26 18:18
很少的内容
|
|