顯示具有 web service 標籤的文章。 顯示所有文章
顯示具有 web service 標籤的文章。 顯示所有文章

2009年10月18日 星期日

Web service的技術特點

Webservice的技術特點

長項一: 跨防火牆的通信
如果應用程序有成千上萬的用戶,而且分佈在世界各地,那麼客戶端和服務器之間的通信將是一個棘手的問
題。因為客戶端和服務器之間通常會有防火牆或者代理服務器。在這種情況下,使用DCOM就不是那麼簡單,通常也不便於把客戶端程序發佈到數量如此龐大的每一個用戶手中。傳統的做法是,選擇用瀏覽器作為客戶端,寫下一大堆ASP頁面,把應用程序的中間層暴露給最終用戶。這樣做的結果是開發難度大,程序很難維護。
舉個例子,在應用程序裡加入一個新頁面,必須先建立好用戶界面(Web頁面),並在這個頁面後面,包含相應商業邏輯的中間層組件,還要再建立至少一個ASP頁面,用來接受用戶輸入的信息,調用中間層組件,把結果格式化為HTML形式,最後還要把「結果頁」送回瀏覽器。要是客戶端代碼不再如此依賴於HTML表單,客戶端的編程就簡單多了。

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

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

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

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

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

Web Service是B2B集成成功的關鍵。通過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 提供給別人。兩種情況下,都可以重用代碼和代碼背後的數據。

轉自http://big5.webasp.net/article/5/4876.htm

什麼是web service

關鍵字: SOAP XML XSD WSDL

什麼是webservice
從表面上看,Web service 就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。這就是說,你能夠用編程的方法通過Web來調用這個應用程序。

對Web service 更精確的解釋: Web services是建立可互操作的分佈式應用程序的新平台。作為一個Windows程序員,你可能已經用COM或DCOM建立過基於組件的分佈式應用程序。COM是一個非常好的組件技術,但是我們也很容易舉出COM並不能滿足要求的情況。Web service平台是一套標準,它定義了應用程序如何在Web上實現互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平台上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。

不管你的Web service是用什麼工具,什麼語言寫出來的,只要你用SOAP協議通過HTTP來調用它,總體結構都應如下圖所示。通常,你用你自己喜歡的語言(如VB 6或者VB.NET)來構建你的Web service,然後用SOAP Toolkit或者.NET的內建支持來把它暴露給Web客戶。於是,任何語言,任何平台上的客戶都可以閱讀其WSDL文檔,以調用這個Web service。客戶根據WSDL描述文檔,會生成一個SOAP請求消息。Web service都是放在Web服務器 (如IIS) 後面的,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web服務器來。Web服務器再把這些請求轉發給Web service請求處理器。對VB 6程序來說,Web service請求處理器是一個與SOAP Toolkit組件協同工作的ASP頁面或ISAPI extension。而對VB.NET程序來說,Web service請求處理器則是一個.NET Framework自帶的ISAPI extension。請求處理器的作用在於,解析收到的SOAP請求,調用Web service,然後再生成相應的SOAP應答。Web服務器得到SOAP應答後,會再通過HTTP應答的方式把它送回到客戶端。

基本概念
SOAP
Web service建好以後,其他人就會去調用它。簡單對像訪問協議(SOAP)提供了標準的遠程過程調用( RPC)方法來調用Web service。SOAP規範定義了SOAP消息的格式,以及怎樣通過HTTP協議來使用SOAP。SOAP也是基於XML和XSD的,XML是SOAP的數據編碼方式。客戶端和服務端之間的方法調用請求和結果返回值都放在這些消息裡。

XML和XSD
可擴展的標記語言(XML)是Web service平台中表示數據的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既是平台無關的,又是廠商無關的。無關性是比技術優越性更重要的。XML解決了數據表示的問題,但它沒有定義一套標準的數據類型,更沒有說怎麼去擴展這套數據類型。例如,整形數到底代表什麼?16位,32位,還是64位?這些細節對實現互操作性都是很重要的。W3C制定的XML Schema(XSD)就是專門解決這個問題的一套標準。它定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。Web service平台就是用XSD來作為其數據類型系統的。當用某種語言(如VB.NET或C#)來構造一個Web service時,為了符合Web service標準,所有使用的數據類型都必須被轉換為XSD類型。

WSDL(Web Services Description Language)
用於描述服務端所提供服務的XML格式。WSDL文件裡,描述了服務端提供的服務,提供的調用方法,以及調用時所要遵循的格式,比如調用參數和返回值的格式等等。WSDL 很像COM編程裡的IDL(Interface Description Language),是服務器與客戶端之間的契約,雙方必須按契約嚴格行事才能實現功能。

WSML(Web Services Meta Language)
用於描述WSDL裡提供的方法與實現該方法的COM對像之間的映射關係。該文件是Microsoft的實現中特有的,不是SOAP標準的一部分。一般情況下,該文件只在服務端存在。

轉自 http://big5.webasp.net/article/5/4877.htm