• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試之用XML、XQuery和XML數據庫技術加速SOA (1)

    發布: 2009-8-31 10:33 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 24次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試之用XML、XQuery和XML數據庫技術加速SOA (1)  SOA 架構

    關鍵字:XML、XQuery和XML SOA 很多軟件架構師在面向服務體系結構(SOA)設計中使用 XML,雖然沒有一種 SOA 標準要求在 SOA 中使用 XML 或者提供相關指南。因此,軟件開發社區做了很多實驗和調查來發現定義服務端點和消息定義(模式)的最佳方式。這些方法大多數都會帶來了糟糕的性能和可伸縮性。

    比如,最早提出用 SOA 實現 ebXML 的 General Motors Corp.,其最初的設計使用的是 Universal Business Language (UBL),建立的 XML 消息有 150,000 字節到 10 兆字節甚至更大。2004 年,我的性能測試公司 PushToTest 認為當時的 Java™ 應用程序服務器沒有提供足夠的吞吐量,在 GM Web Services Performance Benchmark 研究中提出了可伸縮性和性能問題。

    當時基于 XML 的 Web 服務技術還非常新,我認為新一代應用程序服務器技術會解決性能問題。但大部分問題仍然存在。

    Web 服務吞吐量問題和復雜的 XML

    2005 年,PushToTest 完成了一項新的 SOA 性能研究(請參閱參考資料)表明,在處理復雜的 XML 消息時,使用當前 Java 應用程序服務器構建的應用程序其性能很差,不足以投入生產。是發現的問題和以前研究中的問題相同: 

    簡單對象訪問協議(SOAP)綁定(代理)低效而緩慢。 
    每次請求都需要一組全新的資源(對象、CPU 和網絡帶寬)來處理響應。沒有緩沖模式。 
    使用關系數據庫技術存儲 XML 數據非常慢而且沒有可伸縮性。 
    為了了解這三個問題,設想一下軟件開發人員如何使用 J2EE 應用程序服務器工具構建和部署 XML 服務。 


    圖 1. WSDL 定義的例子
     

    雖然可以使用使用不同技術建立基于 XML 的 Web 服務,但我發現多數開發人員更愿意從服務的 Web Services Description Language (WSDL) 定義開始。Java 應用程序服務器提供了輸入 WSDL定義和生成代理類的工具。代理器接收 SOAP 請求并把請求轉發給 Java 對象或 Enterprise Java Bean (EJB) 進行處理。SOAP 綁定(代理器)是一種 Java 類,可通過 servlet 接口調用它。


    圖 2. Java 方法調用
     

    圖 2 說明了 Web 服務消費者如何向服務發出 SOAP 請求。SOAP 綁定對 SOAP 消息體中的 XML 內容進行反序列化。這個過程需要進行大量的處理,非常復雜,因為消息體常常包含復雜的數據類型。比如,消費者可能向服務發送包含多個值的散列表。SOAP 綁定需要解碼散列表的內容,對每個值創建 Java 對象的實例。散列表還可能包含其他散列表,因此解碼 SOAP 消息內容不是一件容易的事。如果不相信的話,請看一看 Apache Axis 反序列化器的源代碼。

    SOAP 綁定實例化包含 SOAP 消息體內容的 Java Request 對象。SOAP 綁定調用目標類中的目標方法,并將 Request 對象作為參數傳遞。目標 EJB 或 Java 對象提供所有必要的處理來建立對請求的響應。SOAP 綁定將 EJB 或 Java 對象返回的值序列化到 SOAP 響應消息中。SOAP 綁定將響應對象中的值解碼成能夠序列化到 SOAP 響應消息中的值需要經過同樣復雜的過程。

    通過研究用流行的 Java 應用程序服務器工具創建的 SOAP 綁定,我發現了以下問題:

    應用程序服務器工具創建的 SOAP 綁定效率很低。比如,我發現某些 SOAP 綁定創建 SOAP 請求的多個副本,每個請求都實例化為 String 對象 —— 這樣做并沒有明顯的理由。一些 SOAP 綁定創建了 15,000 個 Java 對象來反序列化消息體中包含 500 個元素的 SOAP 請求。 
    在配備有雙 CPU 3.0 GHz Intel Xeon 處理器的服務器上,我發現在處理有效負荷 10,000 字節、包含 50 個元素的簡單 SOAP 消息時,每秒處理的事務為 15 到 20 個(TPS)。隨著 SOAP 消息復雜性和大小的增加,我發現會造成明顯的伸縮性和性能問題。有效負荷 100,000 字節、包含 750 個元素的 SOAP 消息會把吞吐量降低到 1.5 TPS。SOAP 消息體中元素個數越多,每個元素嵌套越深,問題就會越嚴重。 
    性能問題在 SOA 設計中會引起連鎖反應。SOA 是一種組件軟件重用技術。一個服務通常調用其他服務來確定對消費者請求的響應,從而形成一個調用鏈。


    圖 3. 消費者
     

    不僅僅是一個服務的性能問題,每個服務在序列化、反序列化請求和響應的時候都會增加同樣的開銷。隨著服務調用層次的增加,性能問題也成倍增加。 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: soa SOA xml XML 軟件測試 數據庫 XQuery


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>