由于之前DataDefine的失败,让培升和我对规划工具有了新的认识,从而下定了决心重新架构CAD工具箱。
旧版本的工具箱功能上有数据规整,数据检查,数据转换,入库,调图,电子报批这六大功能。完全是出于项目的需求,有不同的编码人员实现,中间是没有分析人员参与和协调。这就导致几个致命的问题,第一,程序的一致性,纵观DataDefine,编码风格各领风骚。第二,不同模块的衔接,各个模块几乎独立,模块之间几乎没有共享,代码严重冗余。同时由于历史原因,CAD工具箱是有几批人实现的,可想而知里面的代码会是什么样,就不多说了。
新版本的设计核心理念是“所见即所得”,是在深受旧版本的毒害之后,提出的理念。设计的整体框架是采用多进程框架,不同的进程提供不同的服务,从而降低彼此的依赖。采用多进程框架的主要原因是转换、入库、调图模块都使用了ArcGIS接口,为了降低对ArcGIS的依赖,从而使用多进程框架。以下是整体架构图:
CAD工具箱整体框架图
整体框架如图所示,多进程框架的优点:
第一、降低对CAD、AE的依赖,降低耦合。
第二、每个模块都有独立的运行环境,在一个模块崩溃以后,不会对其他模块产生影响。
第三、提供了一组基础服务,为后期扩展和二次开发做准备。
第四、可以搭建分布式计算。
多进程框架的缺点:
第一、由于各个模块的独立性,协调各个模块工作的CSM模块(主)显得十分重要,主模块一旦崩溃,后果很严重。
第二、多进程通讯会影响开发进度,增加开发工时。
第三、增加维护难度。
基于上面的分析,多进程模型的利弊(虽然有点大材小用,当然了也有少许的私心,想自我挑战一下),培升和我提交了多进程模型的开发方案,当然也很顺利的通过了,才有我下半年的工作总结。
废话太多了...还没有到正题。下半年的工作主要有三大模块:第一、实现RPC远程过程调用。第二、实现转换功能测试RPC框架。第三、测试AE接口性能,实现动态调图,内容太多了,下午再写。