WebService服務的優點缺點分析

當前WebService是一個熱門話題。但是,WebService究竟是什麼?,WebService有什麼優點和缺點,什麼情況下應該用WebService?什麼情況下不應該用WebService?是需要我們正確認識的。

實際上,WebService的主要目標是跨平台的可互操作性。為了達到這一目標,WebService完全基於XML(可擴展標記語言)、XSD (XMLSchema)等獨立於平台、獨立於軟體供應商的標準,是創建可互操作的、分散式應用程序的新平台。由此可以看出,在以下三種情況下,使用 WebService會帶來極大的好處。

優點一:跨防火牆的通信

如果應用程序有成千上萬的用戶,而且分佈在世界 各地,那麼客戶端和伺服器之間的通信將是一個棘手的問題。因為客戶端和伺服器之間通常會有防火牆或者代理伺服器。在這種情況下,使用DCOM就不是那麼簡 單,通常也不便於把客戶端程序發布到數量如此龐大的每一個用戶手中。傳統的做法是,選擇用瀏覽器作為客戶端,寫下一大堆ASP頁面,把應用程序的中間層暴 露給最終用戶。這樣做的結果是開發難度大,程序很難維護。

Advertisements

舉個例子, 在應用程序里加入一個新頁面,必須先建立好用戶界面(Web頁面),並在這個頁面後面,包含相應商業邏輯的中間層組件,還要再建立至少一個ASP頁面,用 來接受用戶輸入的信息,調用中間層組件,把結果格式化為HTML形式,最後還要把「結果頁」送回瀏覽器。要是客戶端代碼不再如此依賴於HTML表單,客戶 端的編程就簡單多了。

如果中間層組件換成WebService的話,就可以從用戶界面直接調用中間層組件,從而省掉建立ASP頁面的 那一步。要調用WebService,可以直接使用MicrosoftSOAPToolkit或.NET這樣的SOAP客戶端,也可以使用自己開發的 SOAP客戶端,然後把它和應用程序連接起來。不僅縮短了開發周期,還減少了代碼複雜度,並能夠增強應用程序的可維護性。同時,應用程序也不再需要在每次 調用中間層組件時,都跳轉到相應的「結果頁」

Advertisements

從經驗來看,在一個用戶界面和中間層有較多交互的應用程序中,使用 WebService這種結構,可以節省花在用戶界面編程上20%的開發時間。另外,這樣一個由WebService組成的中間層,完全可以在應用程序集 成或其它場合下重用。最後,通過WebService把應用程序的邏輯和數據「暴露」出來,還可以讓其它平台上的客戶重用這些應用程序。

優點二:應用程序集成

企業級的應用程序開發者都知道,企業里經常都要把用不同語言寫成的、在不同平台上運行的各種程序集成起來,而這種集成將花費很大的開發力量。應用程序經 常需要從運行在IBM主機上的程序中獲取數據;或者把數據發送到主機或UNIX應用程序中去。即使在同一個平台上,不同軟體廠商生產的各種軟體也常常需要 集成起來。通過WebService,應用程序可以用標準的方法把功能和數據「暴露」出來,供其它應用程序使用。

例如,有一個訂單登 錄程序,用於登錄從客戶來的新訂單,包括客戶信息、發貨地址、數量、價格和付款方式等內容;還有一個訂單執行程序,用於實際貨物發送的管理。這兩個程序來 自不同軟體廠商。一份新訂單進來之後,訂單登錄程序需要通知訂單執行程序發送貨物。通過在訂單執行程序上面增加一層WebService,訂單執行程序可 以把「AddOrder」函數「暴露」出來。這樣,每當有新訂單到來時,訂單登錄程序就可以調用這個函數來發送貨物了。

優點三:B2B的集成

用WebService集成應用程序,可以使公司內部的商務處理更加自動化。但當交易跨越供應商和客戶、突破公司的界限時會怎麼樣呢?跨公司的商務交易集成通常叫做B2B集成。

WebService是B2B集成成功的關鍵。通過WebService,公司可以把關鍵的商務應用「暴露」給指定的供應商和客戶。例如,把電子下單系 統和電子發票系統「暴露」出來,客戶就可以以電子的方式發送訂單,供應商則可以以電子的方式發送原料採購發票。當然,這並不是一個新的概念,EDI(電子 文檔交換)早就是這樣了。但是,WebService的實現要比EDI簡單得多,而且WebService運行在Internet上,在世界任何地方都可 輕易實現,其運行成本就相對較低。不過,WebService並不像EDI那樣,是文檔交換或B2B集成的完整解決方案。WebService只是B2B 集成的一個關鍵部分,還需要許多其它的部分才能實現集成。

用WebService來實現B2B集成的最大好處在於可以輕易實現互操作 性。只把商務邏輯「暴露」出來,成為WebService,就可以讓任何指定的合作夥伴調用這些商務邏輯,而不管他們的系統在什麼平台上運行,使用什麼 開發語言。這樣就大大減少了花在B2B集成上的時間和成本,讓許多原本無法承受EDI的中小企業也能實現B2B集成。

優點四:軟體和數據重用

軟體重用是一個很大的主題,重用的形式很多,重用的程度有大有小。最基本的形式是源代碼模塊或者類一級的重用,另一種形式是二進位形式的組件重用。 當前,像表格控制項或用戶界面控制項這樣的可重用軟體組件,在市場上都佔有很大的份額。但這類軟體的重用有一個很大的限制,就是重用僅限於代碼,數據不能重用。原因在於,發布組件甚至源代碼都比較容易,但要發布數據就沒那麼容易,除非是不會經常變化的靜態數據。

WebService在允許重用代碼的同時,可以重用代碼背後的數據。使用WebService,再也不必像以前那樣,要先從第三方購買、安裝軟體組 件,再從應用程序中調用這些組件;只需要直接調用遠端的WebService就可以了。舉個例子,要在應用程序中確認用戶輸入的地址,只需把這個地址直接 發送給相應的WebService,這個WebService就會幫你查閱街道地址、城市、省區和郵政編碼等信息,確認這個地址是否在相應的郵政編碼區 域。WebService的提供商可以按時間或使用次數來對這項服務進行收費。這樣的服務要通過組件重用來實現是不可能的,那樣的話你必須下載並安裝好包 含街道地址、城市、省區和郵政編碼等信息的資料庫,而且這個資料庫還是不能實時更新的。

另一種軟體重用的情況是,把好幾個應用程序的 功能集成起來。例如,要建立一個區域網上的門戶站點應用,讓用戶既可以查詢聯邦快遞包裹,查看股市行情,又可以管理自己的日程安排,還可以在線購買電影 票。現在Web上有很多應用程序供應商,都在其應用中實現了這些功能。一旦他們把這些功能都通過WebService「暴露」出來,就可以非常容易地把所 有這些功能都集成到你的門戶站點中,為用戶提供一個統一的、友好的界面。

將來,許多應用程序都會利用WebService,把當前基 於組件的應用程序結構擴展為組件/WebService的混合結構,可以在應用程序中使用第三方的WebService提供的功能,也可以把自己的應用程 序功能通過WebService提供給別人。兩種情況下,都可以重用代碼和代碼背後的數據。

從以上論述可以看出,WebService在通過Web進行互操作或遠程調用的時候是最有用的。不過,也有一些情況,WebService根本不能帶來任何好處。

缺點一:單機應用程序

目前,企業和個人還使用著很多桌面應用程序。其中一些只需要與本機上的其它程序通信。在這種情況下,最好就不要用WebService,只要用本地的 API就可以了。COM非常適合於在這種情況下工作,因為它既小又快。運行在同一台伺服器上的伺服器軟體也是這樣。最好直接用COM或其它本地的API來 進行應用程序間的調用。當然WebService也能用在這些場合,但那樣不僅消耗太大,而且不會帶來任何好處。

缺點二:區域網的同構應用程序

在許多應用中,所有的程序都是用VB或VC開發的,都在Windows平台下使用COM,都運行在同一個區域網上。例如,有兩個伺服器應用程序需要相互 通信,或者有一個Win32或WinForm的客戶程序要連接區域網上另一個伺服器的程序。在這些程序里,使用DCOM會比SOAP/HTTP有效得多。 與此相類似,如果一個.NET程序要連接到區域網上的另一個.NET程序,應該使用.NETremoting。有趣的是,在.NETremoting中, 也可以指定使用SOAP/HTTP來進行WebService調用。不過最好還是直接通過TCP進行RPC調用,那樣會有效得多。

Advertisements

你可能會喜歡