zoukankan      html  css  js  c++  java
  • 基于插件技术的GIS应用框架(C# + ArcEngine9.3)(一)

    基于插件技术的GIS应用框架(C# + ArcEngine9.3)(一)

                   -------------------------几个问题

    一直想把原来用Delphi写的GIS应用框架进行升级,可由于家庭和工作牵扯了太多的精力,没能如愿,最近一段时间,终于研墨执笔开始了框架的升级工作,历时一个多月,终于新鲜出炉了,现在静下心来进行总结,以提炼我这一个多月的辛劳与汗水。

     

    一、关于平台的选择

    实际上本人一直从未用过Visual Studio,更未用C#做过一个完整的项目,其实就开发平台而言并不存在太多的差异,就像.net框架和J2EE的包,以及delphi的VCL,他们的思想其实都是大同小异的,语言使用到了一定的高度,有了一定的积累,转换到另外一种语言,困难就小多了。其实只要支持COM的语言都可以用来进行GIS框架的开发,之所以采用C#开发新版本的GIS应用框架,对于自己来说无非是两点:第一,界面更加完美;第二,就是想检验一下自己的学习能力。

     

    二、关于ArcEngine接口的选择

    这个问题我觉得很重要,看过很多人家的代码以及成型的系统,似乎都乐意采用ToolbarControl这个东西,我研究了一段时间,这个东西不仅控制麻烦,而且会带来很多负面问题,比如,我无法在ToolbarControl里加入自己的控制逻辑,而且更糟糕的是,对于想要保存自己定制内容的程序员来说,这样的封装显得太过了。此外,比如IEngineEditor接口的选择,这个接口提供了很强大的功能,对于编辑任务和编辑图层几乎可以不用写什么代码就能实现,但是编辑任务和编辑图层两个列表都必须出现在ToolbarControl中,这对于我这个追求完美的人来说,无疑是个灾难,所以在我是框架里,抛弃了ToolbarControl和IEngineEditor这个对于很多程序员来说非常方便的东西,IEngineEditor的功能基本上完全靠自己代码来实现,编辑任务、编辑图层等都以插件的形式出现在自己的框架里,既做到了界面风格统一,也做到了功能完全可以自定义。当然这背后的代价是你自己编写行数不菲的代码。

     

    三、关于事件

    开发GIS应用框架,最核心的一个问题就是事件的处理了,毕竟有了事件,所有的插件对象才能有机地构成一个整体,这也是所有插件对象进行协同工作的基础所在。COM提供了连接点的机制来进行事件的发布,而C#则较为简单,可以直接通过事件代理的形式来处理,这样一来,所有客户插件感兴趣的MapControl事件和PageLayoutControl事件即可以方便的通过事件代理来获得框架的调用。

     

    四、关于反射

    .net 的反射机制的确是个好东西,获取插件的类型信息易如反掌,只是本人没有深入研究,在这里也就不赘叙了。

     

    五、关于插件的加载与保存

    实际上有很多种方式可以对定制的结果进行保存,比如:结构化存储文件,xml等等,在本文论及的框架里,选择了后者,不光是因为插件的加载与否,如何加载只需要简单的进行XML配置就可以实现,而且也便于单独调式某个插件或某一组插件。

     转载:

    从前从前 新浪微博,地址:http ://blog.sina.com.cn/s/blog_4c0b48dc0100l2nj.html

  • 相关阅读:
    NYOJ 625 笨蛋的难题(二)
    NYOJ 102 次方求模
    ZJU Least Common Multiple
    ZJUOJ 1073 Round and Round We Go
    NYOJ 709 异形卵
    HDU 1279 验证角谷猜想
    BNUOJ 1015 信息战(一)——加密程序
    HDU 1202 The calculation of GPA
    "蓝桥杯“基础练习:字母图形
    "蓝桥杯“基础练习:数列特征
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258753.html
Copyright © 2011-2022 走看看