什麼時候應該使用Web Service【轉,推薦】

來源:互聯網
上載者:User
web 現在我將列舉三種情況,在這三種情況下,你將會發現使用Web service會帶來極大的好處。此後,我還會舉出不應該使用Web service的一些情況。

跨越防火牆的通訊

    如果你的應用程式有成千上萬的使用者,而且他們都分布在世界各地,那麼用戶端和伺服器之間的通訊將是一個棘手的問題。那是因為用戶端和伺服器之間通常都會有防火牆或者Proxy 伺服器。在這種情況下,你想使用DCOM就不是那麼簡單了,而且,通常你也不願意把你的用戶端程式發布到如此龐大數量的每一個使用者手中。於是,你最終選擇了用瀏覽器作為用戶端,寫下一堆ASP頁面,把應用程式的中介層暴露給終端使用者。結果呢?運氣好的話,只是開發難度大了一些,運氣不好的話,就會得到一個根本無法維護的應用程式。

    想象一下你應該怎麼在你的應用程式裡面加入一個新的頁面:你必須先建立好使用者介面(Web頁面),以及在這個頁面後面,包含相應商業邏輯的中介層組件。這還不夠,你還要再建立至少一個ASP頁面,用來接受使用者輸入的資訊,調用中介層組件,把結果格式化為HTML形式,最後還要把"結果頁"送回瀏覽器。要是用戶端代碼不再如此依賴於HTML表單,用戶端的編程不就簡單多了嗎?還有,建立ASP頁面的那一步可以省略掉嗎?

    當然。如果你的中介層組件是Web service的話,你完全可以從使用者介面直接調用中介層組件,從而省掉建立ASP頁面的那一步。要調用Web service,你可以直接使用Microsoft SOAP Toolkit或.NET這樣的SOAP用戶端,也可以使用你自己開發的SOAP用戶端,然後把它和你的應用程式串連起來。這樣做,不僅可以縮短開發週期,還可以減少代碼的複雜度,並增強整個應用程式的可維護性。同時,你的應用程式也不再需要在每次調用中介層組件時,都跳轉到相應的"結果頁"了。

    以我的經驗來看,在一個使用者介面和中介層有較多互動的應用程式中,使用Web service這種結構,可以輕鬆的節省花在使用者介面編程上的20%的開發時間。這樣做還有另一個好處,就是你將得到一個由Web service組成的中介層,這一層是完全可以在應用程式整合或其他場合下被重用的。最後,通過Web service把你的應用程式的邏輯和資料暴露出來,還可以讓其它平台上的客戶重用你的應用程式。

應用程式整合

    企業級的應用程式開發人員都知道,企業裡經常都要把用不同語言寫成的在不同平台上啟動並執行各種程式整合起來,而這種整合將花費很大的開發的力量。你的應用程式經常都需要從運行在古老的IBM主機上的程式中擷取資料;或者再把資料發送到主機或UNIX應用程式中去。即使是在同一個平台上,不同的軟體廠商生產的各種軟體也常常需要整合起來。通過Web service,應用程式可以用標準的方法把功能和資料暴露出來,供其它的應用程式使用。

    例如,你有一個訂單登入程式,用於登入從客戶來的新訂單,包括客戶資訊、發貨地址、數量、價格和付款條件等資訊。同時,你還有一個訂單執行程式,用於實際貨物發送的管理。這兩個程式是來自不同軟體廠商的。一份新訂單進來之後,訂單登入程式需要通知訂單執行程式發送貨物。通過在訂單執行程式上面增加一層Web service,訂單執行程式可以把"AddOrder"函數暴露出來。這樣,每當有新訂單到來時,訂單登入程式就可以調用這個函數來發送貨物了。進而通過Web service整合應用程式

B2B的整合

    用Web service整合應用程式,可以使你公司內部的商務處理更加自動化。但當交易跨越了你的供應商和客戶,突破了公司的界線時又會怎麼樣呢?跨公司的商務交易整合通常叫做B2B整合。

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

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

軟體重用

    軟體重用是一個很大的主題,它有很多的形式和程度。最基本的形式是原始碼模組或者類一級的重用。另一種形式是二進位形式的組件重用。當前,像表格控制項或使用者介面控制項這樣的可重用軟體組件在市場上都佔有很大的份額。但這類軟體的重用都有一個很嚴重的限制:重用僅限於代碼,而資料不能被重用。原因在於你可以很輕易的發布組件甚至原始碼,但要發布資料就沒那麼容易了,除非那些資料都是不會經常變化的待用資料。

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

    另一種軟體重用的情況是把好幾個應用程式的功能整合起來。例如,你想要建立一個區域網路上的門戶網站應用,讓使用者既可以查詢他們的聯邦快遞包裹,察看股市行情,又可以管理他們的排程,還可以線上購買電影票。現在Web上有很多應用程式供應商,都在其應用中實現了上面的這些功能。一旦他們把這些功能都通過Web service 暴露出來,你就可以非常輕易地把所有這些功能都整合到你的門戶網站中,為使用者提供一個統一的、友好的介面。
用Web service來整合各種應用中的功能,為使用者提供一個統一的介面
許多應用程式都會利用Web service,把當前基於組件的應用程式結構擴充為組件和Web service 的混合結構。你也可以在應用程式中使用第三方的Web service 提供的功能。你還可以把你自己的應用程式的功能通過Web service 提供給別人。所有這些情況下,你都可以重用代碼和代碼後面的資料。總之,Web service 將是軟體重用的一種非常有力的形式。

什麼時候不應該使用Web Service

    一個對Web service的完整介紹還應該包括什麼時候不該用Web service。經過前面的介紹,我們知道了Web service 在通過Web進行互操作或遠程調用的時候是最有用的。不過,還有許多情況,Web service根本不能給你帶來任何好處。

單機應用程式

    目前,我們還有很多傳統型應用程式是供商用和個人使用的。其中一些只需要與運行在本機上的其他程式通訊。在這種情況下,我們最好就不要再用Web service ,只要用本地的API就可以了。COM非常適合於在這種情況下工作,因為它既小又快。運行在一台伺服器上的伺服器軟體也是這樣:最好直接用COM或其他本地的API來進行應用程式間的調用。當然Web service 也能用在這些情況下,但那樣不僅消耗太大,而且不會給你帶來任何好處。

區域網路上的同構應用程式

    在許多應用中,你所有的程式都是用VB或VC開發的,都在Windows平台下使用COM,都運行在同一個區域網路上。例如,你有兩個伺服器應用程式需要相互連信,或者你有一個Win32或WinForm的客戶程式要串連到區域網路上的另一個伺服器程式。在這些程式裡使用DCOM會比SOAP/HTTP有效多。類似的,如果你的一個.NET程式要串連到LAN上的另一個.NET程式,那麼你應該使用.NET remoting。有趣的是,在.NET remoting中,你也可以指定使用SOAP/HTTP來進行Web service 調用。不過最好還是直接通過TCP進行RPC調用,那樣會有效得多。總之,只要你從應用程式結構的角度看來,有別的方法比Web service 更有效,更可行,那就不要再用Web service。

總結

    Web service是建立可互操作的分布式應用程式的新平台。Web service 的主要目標是跨平台的可互通性。為了達到這一目標,Web service 是完全基於XML、XSD等獨立於平台、獨立於軟體供應商的標準的。

    Web service在應用程式跨平台和跨網路進行通訊的時候是非常有用的。Web service適用於應用程式整合、B2B整合、代碼和資料重用,以及通過Web進行用戶端和伺服器的通訊的場合。

    當然,Web service也不是萬能的,你不能到處濫用Web service。在有些情況下,Web service 會降低應用程式的效能,而不會帶來任何好處。例如,一台機器或一個區域網路裡面啟動並執行同構應用程式就不應該用Web service 進行通訊。

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。