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

  • 相关阅读:
    MySQL 之 Metadata Locking 研究
    Spring, MyBatis 多数据源的配置和管理
    ThreadLocal 源码剖析
    Java多线程中的死锁问题
    Java并发基础框架AbstractQueuedSynchronizer初探(ReentrantLock的实现分析)
    PriorityQueue和Queue的一种变体的实现
    被我们忽略的HttpSession线程安全问题
    Java并发之原子变量和原子引用与volatile
    使用Java实现单线程模式
    这些年无处安放的博客
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258754.html
Copyright © 2011-2022 走看看