一个项目需要,要求写一个api,领导说以后可以用在其它项目上,无奈呀,其实有很多现成的可以用吗,幸好甲方采购了esri的server,大家都知道,server其实有很多api,在arcgis10里面他们叫APIs,领导其实想用flex,因为被esri销售忽悠的,flex确实漂亮,但是我等dotnet开发人员,对那个不怎么来电,而且,学flex并不轻松,如果用微软的Silverlight吧,那东西还在更新,每次更新都有不同的接口,估计等项目快完时,他又更新,我岂不是死了,所以,我觉得还是javascript靠普点,但是js这东西对各浏览器的兼容性是在让人头疼,根据esri官方的说法,貌似都支持,但是发现甲方的机器都是ie6,幸亏甲方通情达理,说,你们看吧,如果要升级系统都没关系,但是你们要负责按装培训,多么和蔼可亲的甲方呀,我等兄弟最后商量,还是用jsapi,把甲方的ie升级的7,要是ie8吧,虽然支持html5,但是新东西,还是少用,保险~~~。
选择了api,又有问题了,怎么和他交互呢?公司的软件都是xml为交互的,但是这个确是json,公司积累了很多年,不容易呀,无数的先烈来来去去的,积攒了这么些资源,我们项目又小,本来就不太惹人喜欢,最主要的,快到年跟了(大家都明白的),我等兄弟~~~~。
最后大家决定在公司的模块上再包一层,把需要的xml在转成json,问题解决了。其实很简单的一件事,让我来说明一下。
首先,继承公司的模块,然后把所有的输出根据esri的帮助,转成对应的json,有兴趣的同僚可以去看看,http://help.arcgis.com/en/arcgisserver/10.0/apis/rest/。举个例子,我们要查询一个二维表,其实这个表跟地图没有任何关系,而且,这个表也没有通过server发布出来,因为他就是一个业务表,关联几个表查一下,然后显示出来就可以了,很简单,公司的模块有专门干这个事情的,拉过来,继承,把输出改写成json,如下:
json.getTableQueryJson(DataTableToXML(getPage(sqling)));
把原来的DataTableToXML在包一个getTableQueryJson,哈,完成了,可以利用dojo显示了,说个题外话,为什么用dojo呢,因为jsapi是利用dojo的,所以为了方便,我们也选用了dojo,和jquery,ext比起来谁优谁略,嗯,不好说呢,个人喜好,把我的喜好强加于兄弟们,真是不好意思了。有人说了,dojo本身有xml解析呀,为什么还要转,我觉得在服务器上干事情总比在客户端好,而且我等兄弟都是写cs出身的,写这些服务端的东西不在话下,但是到了客户端,郁闷的气息弥漫在办公室ing。
不知道各位看客有没有其他的方法,欢迎回复。