http://www.cnblogs.com/frank_xl/archive/2009/02/18/1392844.html
1.Web Service的基本概念
什麼是Web Services?Web Services 是設計支援支援機器與機器的通過網路互操作的一種軟體系統(W3C的定義).是一組可以通過網路調用的應用程式API.Web Services 是應用程式組件 , 使用開放協議進行通訊 ,獨立的(self-contained)並可自我描述 ,可通過使用UDDI來發現 ,可被其他應用程式使用的功能.
Web services 平台主要涉及到XML \SOAP\WSDL\UDDI四個主要元素.我們在這裡簡要做下介紹.
(1)XML :XML是EXtensible Markup Language的縮寫,XML是一種類似於HTML的標記語言,XML是用來描述資料的,XML的標記不是在XML中預定義的,你必須定義自己的標記 XML使用文件類型定義(DTD)或者模式(Schema)來描述資料 ,XML使用DTD或者Schema後就是自描述的語言.
(2)SOAP :SOAP(Simple Object Access Protocol)簡易物件存取通訊協定 (SOAP)是在分散或分布式的環境中交換資訊的簡單的協議,是一個基於XML的協議。它包括四個部分:SOAP封裝 (envelop),封裝定義了一個描述訊息中的內容是什麼,是誰發送的,誰應當接受並處理它以及如何處理它們的架構;SOAP編碼規則 (encoding rules),用於表示應用程式需要使用的資料類型的執行個體; SOAP RPC表示(RPC representation),表示遠端程序呼叫和應答的協定;SOAP綁定(binding),使用底層協議交換資訊。
(3)WSDL: Web services 描述語言, 它的主要構成要素有五個.Types: 定義WSDL定義中所用到的資料類型,即XML Schema Types;Message : 對一組訊息的輸入和輸出參數的定義;portType : 定義Web服務的操作;Binding :描述特定服務介面的協議、資料格式、安全性和其它屬性.Services : 制定特定服務的URL和提供的調用介面,包含一組連接埠元素. 這樣Web services 就實現了自我描述.
(4) UDDI :Universal Description Discovery and Integration即統一描述、發現和整合協議。UDDI同時也是Web服務整合的一個體系架構。它包含了服務描述與發現的標準規範。UDDI規範利 用了W3C和Internet工程工作群組織(IETF)的很多標準作為其實現基礎,比如擴充標註語言(XML),HTTP和網域名稱服務 (DNS)(DNS)這些協議。 有了它我們的Web services 就可以註冊到UDDI中心.供其客戶尋找使用.
Web services 一般分為4類:
(1)面向業務的服務(Business-Oriented Web Service): 該類服務針對的是那些面向公司專屬應用程式服務;
(2)面向客戶的服務(Consumer-Oriented Web Service): 此類服務針對的是那些原先的B2C的網站的改造,比如我們完全就可以在個人財務案頭系統中整合(調用)Internet上的股票價格查詢Web服務、機票 預定Web服務等,使得個人財務應用的自動化程度更高。
(3)面向裝置的服務(Device-Oriented Web Service): 此類服務的使用終端一般是手持功能和日用家電,比如Palm、PocketPC、手機等。。
(4)面向系統的服務(System-Oriented Web Service): 一些傳統意義上的系統服務,比如使用者權限認證,系統監控等,譬如跨國企業的所有線上服務可以使用同一個使用者權限認證Web服務。
2.Web Service優勢和缺點
我們先來瞭解以前平台的缺點.中介軟體平台(RMI, Jini, CORBA, DCOM 等等)提供了強大的服務實現手段,但是,這些系統有一個共同的缺陷,那就是它們無法擴充到互連網上:它們要求服務用戶端與系統提供的服務本身之間必須進行 緊密耦合,即要求一個同類基本結構。不支援跨平台的資訊交換.而對比後我們就發現, Web Service 的很顯然具有以下優點:
(1)跨平台:WebService完全基於XML(可延伸標記語言 (XML))、XSD(XMLSchema)等獨立於平台、獨立於軟體供應商的標準;
(2)自描述:Web Service 使用WSDL標準語言進行自我描述,包括服務的方法\參數\類型\傳回值等相關的完備資訊.
(3)模組化:Web Service 是應用程式組件,我們可以使用任何開發平台來開發,並且按照模組進行封裝.
(4)跨放火牆:Web Service 使用http協議進行通訊,可以穿越防火牆.
Web Service 的缺點也很明顯:
(1)效率低下,不適合做單應用系統的開發.
(2)安全問題,Web Service的沒有自身的安全機制,必須藉助http協議或IIS等宿主程式實現資訊安全加密
3.Web Service使用的場合
那麼什麼時候應該使用Web Service,從上面的總結我們可以看出.使用Web Service能夠帶來利益的情況.
(1)跨防火牆的通訊
(2)應用程式整合,主要是指公司專屬應用程式系統的整合.
(3)B2B的整合,主要是指電子商務平台的整合.
(4)軟體和資料重用,軟體重用是一個很大的主題,重用的形式很多,重用的程度有大有小。最基本的形式是原始碼模組或者類一級的重用,另一種形式是二進位形式的組件重用。
有一些情況,不適合使用WebService。
(1)單機應用程式
單機應用程式如office等,可以直接調用系統WindowsAPI\COM進行編程,實現功能效率更高.
(2)區域網路的同構應用程式
例如在區域網路裡,使用COM+和.NET Remoting進行通訊,會獲得更高的效率.我們不需要使用WebService.
4.Web Service安全問題
安全問題是開發和部署Web service涉及最多的問題,主要還是防止重要訊息的泄露.包括非法請求和惡意攻擊.網路常見的安全問題Web service都會面臨.
Web service的部署方式一般包括3種:
(1)IIS託管.這個最簡單,直接藉助IIS,發布方式類網站發布.
(2)Console.可以駐留在控制台程式中.
(3)Windows Service.駐留在系統服務中.
最常見的就是Web service通過IIS託管發布,這個方式好處是它可以使用所有的ASP.Net的認證授權機制。
Web service處在展示層和商務邏輯層之間.當然它可以直接地與資料庫互動.簡 單的驗證辦法就是調用方法裡實現對請求的合法性的判斷.通過驗證我們就執行Web Method,返回使用者資料簡單的辦法是使用System.Web.Services.Protocols.SoapHeader的類。來傳遞客戶票據到 伺服器進行驗證.下我們我們將實現簡單的Web service和驗證機制.
通過IIS部署的Web Service,安全也可以通過iis網站屬性裡設定。包括
(1)身分識別驗證和屬性控制,可以整合Windows驗證、網域服務器驗證、.Net Passport驗證。如。
(2)IP網域名稱限制,只允許特定的ip或者域內機器訪問,對非法的請求進行過濾,如。
(3)安全通訊設定,使用者可以啟用Web伺服器憑證,採用SSL對網路傳遞的資訊進行加密,來保證Web Service的安全,如。(具體實現可以baidu)
5.Web Service開發
Web Service開發十分簡單,利用Visual Studio 2005\8都有清楚的嚮導,在建立web項目裡,選擇Web Service服務即可..
我們今天的開發流程主要包括一下4步:
1).建立一個類繼承自SOAPheader,來接收 SOAP header裡的訊息。
2).添加一個方法在服務端Web service類和用戶端(添加引用會自動產生服務端類的代理)。
3).添加屬性SoapHeaderAttribute到 Web service類和用戶端代理服務類的方法上。
4).可以在用戶端訪問代理類設定SOAPheader的票據值,服務端判斷用戶端SOAPheader裡的票據值。根據驗證結果是否相應調用。