<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    SOAP和WSDL初識

    SOA是英文Service-Oriented Architecture,即面向服務架構的縮寫。

    這個詞匯最近一兩年頻頻出現在各種技術期刊上。但是一直以來對于SOA到底是什么沒有明確的回答;SOA有什么特點?適合用于解決哪些問題?與其他的技術有什么區別與聯系?Web Service和SOA又是什么關系?SOA的出現對于軟件架構設計有什么影響?本文將就上面提到的這些問題,嘗試根據作者自己的理解給出SOA的定義;總結出SOA特有的三個基本特征;然后以HTTP協議為例對這些特征進行解釋;最后簡要的說明SOA對今后軟件架構設計可能帶來的影響。  
    SOA定義   
    下面是作者給SOA下的一個定義:
    SOA是指為了解決在Internet環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種軟件系統架構。從這個定義中我希望表達的前提有下面兩點:   
    1) 軟件系統架構:SOA不是一種語言,也不是一種具體的技術而是一種軟件系統架構,它嘗試給出在特定環境下推薦采用的一種架構,從這個角度上來說,它更像一種模式(Pattern)。因此它與很多已有的軟件技術比如面向對象技術,是互補的而非互斥的。它們分別面向不同的應用場景,用來滿足不同的特定需求。   

    2) SOA的使用范圍:需求決定同時也限制功能。SOA并不是包治百病的萬靈丹,它最主要的應用場合在于解決在Internet環境下的不同商業應用之間的業務集成問題。

    在下面我們會詳細討論Internet的各種特點如何決定SOA的特點,這里我們只需要先簡單回顧一下Internet環境區別于Intranet環境的幾個特點:   
    a) 大量異構系統并存,計算機硬件工作方式不同,操作系統不同、編程語言也不同;  
    b) 大量、頻繁的數據傳輸仍然速度緩慢并且不穩定;   
    c) 版本升級無法完成,我們根本就無法知道互聯網上有哪些機器直接或者間接的使用某個服務。   

    基于上面的前提,下面就讓我們一起看一下SOA的基本特征。   

    SOA三大基本特征   
    1 獨立的功能實體  
    在Internet這樣松散的使用環境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進行控制的結構都會面臨嚴重的穩定性問題。SOA非常強調架構中提供服務的功能實體的完全獨立自主的能力。傳統的組件技術,如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當這些宿主運行結束時這些組件的壽命也隨之結束。這樣當宿主本身或者其它功能部分出現問題的時候,在該宿主上運行的其它應用服務就會受到影響。   SOA架構中非常強調實體自我管理和恢復能力。常見的用來進行自我恢復的技術,比如事務處理(Transaction),消息隊列(Message Queue),冗余部署(Redundant Deployment)和集群系統(Cluster)在SOA中都起到至關重要的作用。   

    2 大數據量低頻率訪問   

    對于.NET Remoting,EJB或者XML-RPC這些傳統的分布式計算模型而言,他們的服務提供都是通過函數調用的方式進行的,一個功能的完成往往需要通過客戶端和服務器來回很多次函數調用才能完成。在Intranet的環境下,這些調用給系統的響應速度和穩定性帶來的影響都可以忽略不計,但是在Internet環境下這些因素往往是決定整個系統是否能正常工作的一個關鍵決定因素。因此SOA系統推薦采用大數據量的方式一次性進行信息交換。   

    3 基于文本的消息傳遞   
    由于Internet中大量異構系統的存在決定了SOA系統必須采用基于文本而非二進制的消息傳遞方式。在COM、CORBA這些傳統的組件模型中,從服務器端傳往客戶端的是一個二進制編碼的對象,在客戶端通過調用這個對象的方法來完成某些功能;但是在Internet環境下,不同語言,不同平臺對數據、甚至是一些基本數據類型定義不同,給不同的服務之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數據類型的,因此服務間只傳遞文本,對數據的處理依賴于接收端的方式可以幫忙繞過兼容性這個的大泥坑。   此外,對于一個服務來說,Internet與局域網最大的一個區別就是在Internet上的版本管理極其困難,傳統軟件采用的升級方式在這種松散的分布式環境中幾乎無法進行。采用基于文本的消息傳遞方式,數據處理端可以只選擇性的處理自己理解的那部分數據,而忽略其它的數據,從而得到的非常理想的兼容性。   

    HTTP協議:一個典型的SOA實現   每一項新技術都是在一些舊的技術基礎上發展出來的。正如XML根本思想來自于在60年代就已經出現的早期標記性語言一樣,SOA雖然這兩年才出現,但是它所表達的觀念應該說在網絡這種分布式系統結構出現不久就已經廣泛應用了。例如我們最熟悉的HTTP協議就是一個非常典型的SOA架構設計。HTTP協議的工作過程簡單敘述如下:   

    1) 客戶端,通常是通過瀏覽器,向服務器端以文本的方式發送一個請求,索取一個Web頁面;   

    2) 服務器端接收到這個請求之后,根據請求的內容進行處理并且返回一個符合HTML語法的文本;   

    3) 客戶端接收到服務器端的響應文本后調用本地的程序,通常還是瀏覽器,把返回的HTML文本的內容展現出來。   

    下面來看一下HTTP協議如何滿足了SOA的特點:   
    * 獨立的功能實體:作為服務器端的Web服務器是絕對不會因為客戶端的狀況變化而改變的,它總是非常穩定地按照自己的內在邏輯運行,響應外部的請求,管理自己的資源和數據。這里一個非常好的例子就是Web服務器對緩存(Cache)的處理,很多Web服務器為了提高性能都或多或少的對數據進行緩存,但是緩存數據、刷新數據這些于客戶端完全無關的操作完全由服務器端獨立完成,完全不受客戶端的影響。   

    * 大數據量低頻率訪問:對于一個HTTP請求來說,客戶端與服務器之間訪問的邊界非常簡單:就是一個請求,一個響應,沒有任何其它的信息往返。無論客戶端申請的網頁上除了文字之外還有什么信息,對于客戶端來說,它發出的請求只是簡單的告訴Web服務器它所需要的網頁的位置;至于為了生成這個網頁,服務器端是否需要訪問數據庫,執行Servlet或者其它的CGI程序對客戶端而言,都是完全透明的。

       * 基于文本的消息傳遞:迄今為止兼容性最好的系統可能就是HTTP協議支撐的大部分的web應用了,我們可以在Windows平臺下用IE查看互聯網上一個Linux+Apache服務器上的由Perl腳本自動生成的網頁。這里的關鍵就是所有內容都是以格式化的文本方式傳遞的,不管Perl腳本如何執行,只要它的輸出是符合HTML規范的網頁,就可以被客戶端的瀏覽器解釋。而由于不同的操作系統上對于相同的HTML的解釋遵循相同的規范,因此不同操作系統下仍然能夠看到一致的用戶界面。   我們上面基本描述了SOA作為一種軟件架構有哪些特點,下面讓我們一起看看Web Service與SOA的關系。   SOA與Web Service   Web Service是就現在而言最適合實現SOA的一些技術的集合,事實上最近SOA的火爆在很大程度上歸功于Web Service標準的成熟和應用的普及為廣泛的實現SOA架構提供了基礎。下面讓我們看看Web Service中的各種協議是如何互相工作來滿足SOA所需的特點的:   

    * 獨立的功能實體:通過UDDI的目錄查找,我們可以動態改變一個服務的提供方而無需影響客戶端的應用程序配置。所有的訪問都通過SOAP訪問進行,只要WSDL接口封裝良好,外界客戶端是根本沒有辦法直接訪問服務器端的數據的。   

    * 大數據量低頻率訪問:通過使用WSDL和基于文本(Literal)的SOAP請求,我們可以實現能一次性接收大量數據的接口。這里需要著重指出的是SOAP請求分文本方式和遠程調用(RPC)兩種方式,正如上文已經提到的,采用遠程調用方式的SOAP請求并不符合這點要求。但是令人遺憾的是現有的大多數SOAP請求采用的仍然是遠程調用(RPC)方式,在某些平臺上,例如IBM WebSphere的早期版本,甚至沒有提供文本方式的SOAP支持。   

    * 基于文本的消息傳遞:Web Service所有的通訊是通過SOAP進行的,而SOAP是基于XML的,不同版本之間可以使用不同的DTD或者XML Schema加以辨別和區分。因此只需要我們為不同的版本提供不同的處理就可以輕松實現版本控制的目標。   SOA對于軟件架構設計的影響   無論您現在的系統是否牽涉到基于Internet的業務集成,采用SOA推薦的架構都對提高您系統的擴展性有很大幫助,下面是在系統中引入SOA后需要在軟件架構方面做出的改變:   

    * 使用基于文本方式的SOAP調用,擺脫遠程調用中出現的函數參數類型等與數據無關的信息,保證所有SOAP傳遞的都是有意義的商業數據。依賴于Schema,而不是類定義對這些數據進行解釋。   

    * 傳統的三層Web應用將可能變成四層結構:傳統意義上的商業邏輯層將被進一步劃分為存放每個會話(Session)信息的客戶邏輯層和與狀態無關Sateless的SOA層。




    WSDL

    Web Services Description Language的縮寫,是一個用來描述Web服務和說明如何與Web服務通信的XML語言。

    怎樣向別人介紹你的Web service有什么功能,以及每個函數調用時的參數呢?你可能會自己寫一套文檔,你甚至可能會口頭上告訴需要使用你的Web service的人。這些非正式的方法至少都有一個嚴重的問題:當程序員坐到電腦前,想要使用你的Web service的時候,他們的工具(如Visual Studio)無法給他們提供任何幫助,因為這些工具根本就不了解你的Web service。解決方法是:用機器能閱讀的方式提供一個正式的描述文檔。Web service描述語言(WSDL)就是這樣一個基于XML的語言,用于描述Web service及其函數、參數和返回值。因為是基于XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應Web service的代碼。
    ================================================================================================
    WSDL用來提供對服務的描述 ,它的主要構成要素有五個:
    1)Types: 定義WSDL定義中所用到的數據類型,即XML Schema Types
    2)Message : 對一組消息的輸入和輸出參數的定義
    3)portType : 定義Web服務的操作
    4)  Binding :描述特定服務接口的協議、數據格式、安全性和其它屬性.
    5)  Services : 制定特定服務的URL和提供的調用接口,包含一組端口元素


    posted on 2008-01-08 23:51 々上善若水々 閱讀(3536) 評論(0)  編輯  收藏 所屬分類: WebService

    主站蜘蛛池模板: 一级女人18片毛片免费视频 | 亚洲人成网站色在线入口 | 亚洲av无码一区二区三区在线播放| 久久久久免费看黄a级试看| 亚洲精品乱码久久久久久中文字幕 | 亚洲精品高清国产一线久久| yy一级毛片免费视频| 国产精品亚洲美女久久久| 视频免费1区二区三区| 国产成人亚洲精品影院| 黄床大片免费30分钟国产精品 | 亚洲免费在线视频播放| 亚洲一级视频在线观看| 毛片A级毛片免费播放| 精品久久久久久久久亚洲偷窥女厕| 成人男女网18免费视频| 国产成人亚洲精品播放器下载| 亚洲 无码 在线 专区| 国产三级在线免费观看| 亚洲人成在线影院| 成年女人免费视频播放77777| 亚洲欧美日韩中文二区| 亚洲中文字幕视频国产| 久久精品一区二区免费看| 亚洲免费观看网站| 亚洲AV无码乱码在线观看性色扶| 国产精品无码免费专区午夜| 亚洲AV无码专区亚洲AV伊甸园| 天天影院成人免费观看| 亚洲第一第二第三第四第五第六| 亚洲成a人一区二区三区| 人妻无码一区二区三区免费| 亚洲偷偷自拍高清| 日韩亚洲变态另类中文| **真实毛片免费观看| 色偷偷尼玛图亚洲综合| 区久久AAA片69亚洲| 免费国产成人高清在线观看网站| 国产亚洲精品2021自在线| 久久久久亚洲精品影视| 好爽好紧好大的免费视频国产|