[转]GIS开发平台的未来 —— .NET还是J2EE?
我們可以把GIS的開發分成幾個層次:數據、基礎軟件平臺、應用業務邏輯和數據表現。為了便于快速構建GIS應用系統,GIS平臺開發商提供了種類繁多的二次開發語言,如ESRI的AML,Avenue,Intergraph 則有 MicroStation Development Language (MDL),還有MapInfo的MapBasic。這些開發語言有自己的語法和結構,只能在固定開發商的軟件環境下運行,盡管它們曾經擁有輝煌,盡管它們的確代表了一個時代,它們也不可避免的走向沒落。GIS是一個開放協作的系統,數據和應用要分離,軟件的功能要分離,而當我們需要的時候,他們又應該能夠互相配合成為一個整體。這難道不就是組件化的思想了嗎?于是對象和組件開始充斥著我們的左右,沒有什么不是對象,沒有什么開發不要組件,我們進入了組件的時代。當網絡變得無處不在,所有的應用都要能夠適用于Web,適用于嵌入式的設備,適用于移動設備;我們仍然要求更強的互操作能力,我們希望即使是專注于某項業務邏輯開發的系統也能夠方便的得到復用。毫無疑問,.NET和J2EE為我們達到這個目的鋪平了道路,GIS的開發步入Web Service的世界是不可逆轉的潮流。在Web Service 的世界里,數據和應用徹底分離,而構建應用則是通過XML 或SOAP來傳遞消息,我們不用買數據,不用維護數據庫,只要提供Web Service和使用Web Service,世界變得井然有序。
.NET?àJ2EE
那么到底是.NET還是J2EE?我們仍然無法回避這個問題。也許做一個比較是回答問題的好辦法,盡管這個比較是那么困難。
.NET代表了自1993年以來,微軟軟件開發環境最重要的一次變革。微軟的目標是在保留和擴展已有的VB、ASP技術的同時,增加那些Web應用所必需的新技術。在.NET之前,程序員們需要在一個環境中開發桌面應用程序,而在另一個環境中開發服務器程序,開發Web應用則又是一個環境。如果我們需要開發移動平臺上的應用,我們就得再搞一個環境。.NET的到來,從某種意義上講,實現了這些不同開發環境的透明,為不同平臺,不同環境下的軟件開發構筑了一條筆直大道。
.NET和J2EE有著太多的相似之處:都是面向對象的開發思想,其上都可以創建桌面或跨Web的應用。這些相似之處其實集中于一點:那就是他們的設計初衷都是希望構建一個能夠連接桌面和Web應用的開發環境。其實,一個應用系統的開發完全可以既用.NET又適用J2EE。人們在開發大量的工具軟件以提高.NET和J2EE之間的互操作性。比如一些工具能夠把.NET的代碼轉成純Java。當然,也有能把Java代碼轉成C#的工具,JUMP( Microsoft's Java User Migration Path software.)( http://www.microsoft.com/presspass/press/2001/jan01/01-25javaupgradepr.asp)。2003年末,微軟發布了一份專業刊物:Application Interoperability ,Microsoft .NET and J2EE,這個300多頁的文檔能夠在微軟網站的下載中心找到,這也許對我們理解.NET和J2EE有所幫助。
值得注意的是,微軟的.NET戰略和.NET集成開發環境雖說是不同層面上的東西,但是在實際中它們卻緊密捆綁,尤其是和微軟各類服務器的捆綁。可以這么講,接受了.NET,就意味著對微軟“Back Office”解決方案的全面接受。而J2EE則是一個相對松散的結構,一般說來,J2EE開發的應用系統都能夠和不同的數據庫、工具聯系起來。
四個層次
.NET和J2EE都可以分成4個層次。
首先是基礎平臺和操作系統。J2EE的應用程序可以運行在Windows,Solaris,Linux。而.NET目前還是只能運行在Windows上。不過有一個多平臺的開源版本叫做Mono(http://www.go-mono.com)的,正在開發中。
其次是應用程序運行環境。J2EE的應用程序要運行在JVM下;同理,.NET是使用CLR。JVM在多平臺上都可以運行,CLR必須在Windows下運行。
第三則是所謂的Framework,這是指那些為了方便應用系統的開發所制作的一些大型類庫或開發包。J2EE中是如Swing、EJB、JSP、 JDBC這些東西。而在.NET中則包括ASP.NET,ADO.NET等。
第四就是應用系統本身了。
另外有一點非常值得一提,那就是Visual Studio .NET。VS.NET是一個集多種開發語言和不同應用層次一體的高效集成開發環境。而對于J2EE來說,使用Java來開發應用程序就顯得缺乏像VS.NET這樣的利器。雖說也有Borland JBuilder, iPlants NetBeans和BEA的WebLogic等工具。但VS.NET的威力和魅力卻總是令人難以抵擋。
Web Service之間如何通信是個問題。HTML對于Web Service通信來說是個小兒科的東西,為了滿足更復雜的需要,XML就應運而生了。SOAP則是一個使用XML結構的消息傳遞協議。SOAP能夠使Web組件間進行復雜的數據通信,還可以幫助開發者們方便地把數據層和應用層分離開來。不過XML的結構中有很多內容都是為了便于互操作而定義的,這些內容其實和真正要傳遞的信息無關。有時候這會讓我們覺得傳輸這些“不實質”的東西有些浪費,不過為了提高互操作性,浪費點也不算什么。
到底應該怎么如何選擇呢
既然Web Service的體系結構是大勢所趨,那么不管是.NET還是J2EE,在地理信息的世界里,他們應該扮演什么角色呢?其實,底牌就是數據和應用的分離。GIS最重要的是數據,地理數據量大不說,維護起來也非常困難。如果GIS中能夠做到數據——應用分離,應用的開發就會變得簡單而高效,那該有多么好呀。多層的結構,松散的體系,更靈活的系統,更強的可用性,Web Service難道不正是我們所想要的嗎?
很多GIS軟件公司已經開始了.NET或Java的GIS產品開發工作。比如微軟的MapPoint Web Services(http://www.microsoft.com/mappoint/webservice/default.mspx), ESRI的 Arc Objects Assemblies和MapObjects Java Edition(http://www.esri.com/software/mojava/index.html )。還有MapInfo的MapXtreme。J2EE平臺上也有不少成功的案例,比如Laser-Scan Gothic JADE(http://www.laser-scan.com/technologies/gothic/goth_jade.htm)。
說到這里,我們還是沒有對.NET和J2EE做出一個結論。.NET開發又快又方便,和Windows上的各種服務緊密相連,有人說.NET跑的還要更快些。J2EE呢,就更靈活,伸縮性也強,和其他組件組合的能力也強,當然用起來就比較復雜,管理起來也難。其實他們之間并無優劣之分,關鍵是因地制宜,看誰更合適些。?
?
總結
以上是生活随笔為你收集整理的[转]GIS开发平台的未来 —— .NET还是J2EE?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何学j2ee
- 下一篇: Gis 热点技术分析