本帖最后由 朗月 于 2012-3-6 13:08 编辑
自Z-GIS框架发布以来,得到了很多网友的关注、批评及指正。
关于Z-GIS介绍请转到:http://baike.baidu.com/view/7831340.htm;
关于Z-GIS框架及应用案例下载地址:http://ishare.iask.sina.com.cn/f/23184629.html
关于Z-GIS框架及应用案例的效果图,请转到:http://bbs.3s001.com/thread-90262-1-1.html
下面的交流与答疑是我从众多网友的交流过程中整理出的(具有代表性的)几个问题,整理如下:
1)
问:Z-GIS框架能够从根本上解决架构稳定性和需求多变性之间的矛盾
LZ可否讲一下设计思想?
答:主要思路:封装变化部分,固化稳定部分;严格遵循开闭原则,针对接口编程,(做到实现依赖抽象)。
详情请参阅:http://baike.baidu.com/view/7839889.htm#1_3
2)
问:LZ的 Z—GIS 已经下载了范例,大概看了一下,与我看到过的很多插件式框架很类似。蒋波涛写过一本插件式开发的书,在论坛里面也有不止一人曾放出插件式的框架,有的甚至放出了一部分源码。我也曾见过已经付诸商用的框架。
按照我主观臆测,LZ的框架可认为是一个定制版的arcmap,二次开发的方式其实可以类比desktop的开发方式,实现“命令”“工具”等。
恕小弟愚昧,没有领会设计思想,可否进一步交流
答:如果非要把Z-GIS开发成一个ArcMap当然是完全可以的,但是ArcMap始终只是一个地理数据编辑工具软件而已。
Z-GIS设计的目标就是支持实现企业级的应用程序开发(如支持定制个性化启动界面,支持定制用户登录模块,还是支持复杂的中间件功能:如解决与遗留系统间的交互,二次模块设计[如果定制个性化进度条,系统异常消息窗口等其他更复杂的模块],特别是多个模块间的交互【Z-GIS完全解决了相关的难题】等等,还有就是Z-GIS定义了IZhoujianControl接口 通过该接口可以在工具栏或菜单上添加任意复杂控件【这个好像很多GIS框架都不支持的,在范例中应该有的】),Z-GIS还支持各种语言的二次开发(如 VB、VC++6.0、Delphi、 .Net等各种支持COM的语言),Z-GIS涉及的内容很多,很难在这里一一和你讲清楚。
3)
问:LZ可以看一下这篇帖子(略),大体上应该和你的框架差不多。
还有一个疑问,就是随着10.1版本的发布,arcgis的二次开发已经不是基于com组件式的开发了,这会不会是以后制约框架发展的一个硬伤。
框架定位为一个行业应用的框架比定位为一个通用的框架是不是更好?
答:这位兄弟,首先谢谢你对本帖子的关注;你说的那篇帖子我也看了,你觉得差不多(从界面上看,好像所有的软件都差不多的,不过差之毫厘谬以千里啊,差别大得去了,呵呵)。看吧
(图略) 这个是那个帖子里面的截图。而Z—GIS框架本身是没有任何实现相关的内容,以及Z—GIS框架对菜单、工具栏、命令(工具)、任意复杂控件的管理完全是通过鼠标拖拽实现的。特别是Z-GIS引入了中件间的概念(对应接口IZhoujianMidware),对于大型的GIS项目特别管用[如项目是异地进行开发时的大型项目]。 还有你说的Arc GIS10.1不再支持COM了,这和Z-GIS框架支持COM开发有什么关系吗?[这个是完全没有关系的,再说了,我现在这个是基于AE9.3的,到AE10.1就不能再出个也不支持COM的框架版本吗?呵呵 ,兄弟啊,你说呢] [补充一点:不管做什么类型的GIS项目(产品)开发;如果是基于Z-GIS框架开发 ,那么Z-GIS框架本身是完全不需要做任何改动的,真正做到遵循“开闭原则”,你再拿Z-GIS框架和其他框架作比较的话,你就从这一点来考虑吧,不然你又要说差不多了。]
4)
问: “Z-GIS框架完全可以应用于任何领域、任何类型、任何规模、甚至任何开发语言的GIS产品(或项目),而完全不需要对Z-GIS框架本身做任何改动,基于Z-GIS框架进行产品(线)开发,将大大减少开发的工作量。”,看到这话我就忍不住要喷··· WebGIS能用?移动平台的GIS能用?
答: 首先,感谢这位仁兄能够不吝赐教。
您只引用了“……应用于任何领域、任何类型、任何规模、甚至任何开发语言的GIS产品……”,那后面的那句“Z-GIS框架运行环境是Windows + ArcEngine Runtime9.3 ;或是windows + 任意版本的AO9.3。”怎么不一起引用呢!需要注意的地方、重要的地方我都是用红色文字显示的!
【补充】现代企业中常有两种人:1)可以把稻草说成金条的商务人士——有利于商业产品推广;2)即使做的是金条尚且怕成色不足的专业技术人士——有利于把产品做好做精。我现在看电视广告时,看到包治百病的广告时也会喷,呵呵
小弟我既无商业人士之才,又没专业技术人士之能。话,说得不准;事,做得不好;软件,也不是很懂;再次感谢您的批评与指正。
5)
问:没有什么特别的,只是多了一层对接口注册机制的管理,
应为底层是COM,只是管理注册组件的接口来暗示实现与抽象的分离,
如果十年前发布,有点市场,现在已经不关注这个了,用户关心的核心是业务与流程
我提些问题吧,
如果用户的权限是要素级控制?框架是不是要调整?
如果用户是要多线程处理数据,你的进度条就有问题了?
如果用户要添加一个自己定义的类似ArcMap的比例尺工具如何(双向控制)?
答:
谢谢你的问题!也怪我没有仔细给大家说个明白,让大家费解了!
我可以给你个肯定的回答:仁兄,你的问题是多虑了(你没有仔细看我的范例啊)!!!但是要让你心里弄个明白,我还是逐一回答一下,以表我对您的尊重!
问:如果用户的权限是要素级控制?框架是不是要调整?
答:请问仁兄说的要素级控制是指对某单个图元进行操作的控制吗?如果是这样的话,为什么要调整框架呢?这和框架完全没关系(因为在AE中可以通过IEngineEditor及连接点技术实现对单个要素监听,从而达到对单个要素的控制);这样吧,我退一步,假设和框架有关系,那么完全可以在系统初始化的时候通过中间件接口(IZhoujianMidWare)来实现对各要素进行权限的初始化控制(或做记录),这样也能做好对要素级的控制。【补充一句:关于权限问题,普通的MIS系统中主要是对用户权限的控制,但是GIS中除此以外,对权限的控制可能会细化到对地图中每个要素的控制,这很常见!】如果,是因为权限控制问题,就要对框架进行改动;那就很“囧”了。
问:如果用户是要多线程处理数据,你的进度条就有问题了?
答:Z-GIS框架连启动界面、用户登录模块、各种复杂的中间件功能都可以根据需求进行个性化定制,难道定制一个进度条会有什么困难吗?Z-GIS框架本身并不实现任何功能,但之所以还是提供了一个默认的进度条功能是因为很多时候对进度条并没有太多的要求,完全是为了在通常情况下使用的方便罢了!
问:如果用户要添加一个自己定义的类似ArcMap的比例尺工具如何(双向控制)?
答:仁兄,这个问题你不该问啊,范例中有现成的呀!!(您可能没有注意到,也怪我搞得不够醒目)
很少有人关于Z-GIS框架向我一连提出几个问题,,再次谢谢这位仁兄! |
6)
问:LZ的回复很谦虚
LZ说“完全不需要对Z-GIS框架本身做任何改动”,就是说ZGIS本身用得是插件式架构,所以在基于这上面的二次开发的时候,就不需要改动ZGIS本身,只要写插件就行了。
由于用的是插件方式,那只要ZGIS暴露足够的接口给插件使用,那插件就可以实现各种功能,所以也就能“应用于任何领域、任何类型、任何规模、甚至任何开发语言的GIS产品”
是这个意思吧?
答:您说“……只要ZGIS暴露足够的接口给插件……”,其中足够是指足够多的接口吗?
还有您只引用了“应用于任何领域、任何类型、任何规模、甚至任何开发语言的GIS产品”,那后面的那句“Z-GIS框架运行环境是Windows + ArcEngine Runtime9.3 ;或是windows + 任意版本的AO9.3。”要一起引用!需要注意的地方、重要的地方我都是用红色文字显示的!
不是我回复得谦虚,我主要是怕被人扔鞋子。
7)
【接着6)】(即接着上面那个问题)
问:嗯,我理解的是足够多的接口···,是这样吗?
答:那多少个接口,才算是足够多呢? 我们又怎么知道需要设计什么样的接口(或多少个接口)才可以应付各种复杂而多变的用户(开发)需求呢?又如何保证所设计的接口都是有用的(而又不使框架本身变得过于复杂)呢?【我觉得足够多的接口,是不能从根本上解决 保证框架本身稳定性的 问题。】
Z-GIS框架提供的接口只有 IZhoujianApplication,IZhoujianDockableWindow,IZhoujianControl ,IZhoujianStartForm ,IZhoujianProgressBar,IZhoujianStatusBar,IZhoujianLabel,IZhoujianMidWare 等几个接口,况且其中还有三个不是必须的(是为了使用便捷而准备的)。
所以,并不是接口足够多,就能解决问题的。
该贴已经同步到 朗月的微博
|