新一代桌面产品

fiogf49gjkf0d

  新一代桌面产品简介

在一般的GIS应用中,基本都可以见到桌面产品的身影:从处理数据、制作地图到后台数据管理、更新等等。但随着GIS应用的逐步深入,人们对GIS桌面产品的要求也越来越高,人们希望除了能够使用桌面产品已有的功能外,还希望能够在这些功能的基础上根据自己的需要进行扩展。SuperMap Deskpro 5系列软件也提供了这样的功能,但其是基于C++语言实现的,开发难度较大,同时由于其直接基于SFC(SuperMap Foundation Class,超图的GIS基础类库,基于C++实现)进行的实现,无法同组件直接进行交互,导致组件用户不能直接进行桌面的扩展开发。为了解决这些问题,新一代的桌面Deskpro .NET将直接基于SuperMap Objects .NET进行实现,同时提供诸多新的功能特性,满足用户的各种需求。基于这些考虑,Deskpro .NET可以分为两个层面的产品:

  ■桌面开发平台

包括桌面对象模型、插件模型、脚本、命令行等基本功能,该框架只是定义一些基本的规范以及提供基本的编程接口,不实现具体的功能,作为桌面类开发公共平台。

  

在桌面开发平台的基础上,可以进一步开发专业产品,比如可以专门开发一个质量检查的产品D-Checker,空间数据建库产品D-Builder等等,同时也可以基于该开发平台做行业应用软件,比如国土、统计、军事等。同时各个行业应用软件还可以进行扩展和定制,各个行业应用软件也可以组合起来使用。

  

  

  

  

  ■桌面产品

在这个开发平台的基础上,对组件提供的GIS功能按照桌面应用进行封装,形成一个完整的桌面产品。该桌面产品具有开发平台的一切特性,包括可定制、可编程、可扩展等,而且在桌面开发平台基础上形成的各个产品或者应用还可以集成到一起来使用,这样对于做一些项目的时候是非常价值的。因此,我们新的桌面开发平台将是我们以后桌面类应用开发平台(Deskpro .NET),与嵌入类开发平台(Objects COM,Objects .NET,Objects Java),服务器开发平台(IS .NET,iServer .NET,iServer Java)一起形成一个全面的开发平台体系

  

  新一代桌面开发平台的特性

新一代桌面将完全基于组件实现,同时提供插件模式来实现所有功能,每个插件还提供再次开发扩展的能力,这样满足不同层次用户对于桌面扩展的需求。新一代桌面开发平台有以下特性:

  ■可编程对象模型

在组件的对象模型基础上,桌面开发平台将进一步提供一系列为桌面开发定制的对象模型,桌面提供的对象模型将和组件的对象模型无缝结合,这样能够使桌面开发组件化,提高二次开发的效率和代码的可充用性。同时桌面提供的对象模型在规范上与组件保持一致,以降低用户学习成本。

桌面开发平台提供的可编程对象模型可同时提供给应用系统开发和脚本开发,这样应用系统的代码和脚本代码就能够完全相互使用。

桌面开发平台的可编程对象模型将提供不同层次的开发对象,即简单的应用可以使用一些集成度较高的对象完成,这样用户可以快速的定制一些应用,同时也提供一些颗粒度更细的对象模型,以满足用户的特殊需求。

由于桌面是基于组件进行实现的,所有直接基于组件开发的代码在桌面里面都可以重用,基于组件开发的系统也可以进过简单的修改就可以集成到桌面里面来。

  

  ■插件编程模型

插件对象模型作为桌面对象模型里非常重要的一部分,提供给用户以进行二次开发的能力,用户可以开发新插件,定制已有插件,扩展已有插件,同时可以实现插件间的通信(根据一定的规范实现),同时开发平台还提供插件管理的功能,能够动态的加载和卸载相关的插件,也可以根据系统配置文件等方式来实现插件的加载定制等功能。另外为了解决不同用户权限问题,还提供插件权限控制机制。

  ■支持脚本开发

支持用户进行脚本开发,可以在桌面环境里动态编写脚本以完成一些系统没有直接提供的功能,比如可以通过脚本来对界面进行定制,可以实现一些跟业务相关的常用功能或者重复性的功能。编写脚本的语言支持C#、VB.NET、J#、C++/CLI等可以在.NET平台下使用的所有语言。由于都是基于同一套对象模型,脚本代码和插件代码完全可以通用。

  ■支持命令行

提供一批预定义的命令,同时支持用户自定义命令。系统会默认提供一批命令集合,并且按照功能类型进行分类,比如有和地图窗口关联使用的命令(类似于CAD的命令模式)、有专门处理数据的命令等等。用户如果觉得系统提供的命令不能满足要求,可以根据自己的要求自定义命令,自定义命令时可以把已有的命令进行重新组合,也可以通过编写代码来实现。

  ■支持界面定制开发

支持配置方式、编程方式等多种定制界面的能力。用户可以通过配置工具对已有的界面元素进行重新组织,比如隐藏一些不用的按钮,修改部分按钮图片、名称等等,甚至完全替换现有界面。对于有更高要求的用户来说,可以通过编码的方式对已有界面进行扩展定制,甚至可以新开发自己的一套界面来替换已有的界面,从而满足用户对界面定制的要求。