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

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

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

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

    Web Service實現的關注點分離

    發布: 2008-2-22 12:32 | 作者: Tieu Luu | 來源: dev2dev | 查看: 348次 | 進入軟件測試論壇討論

    領測軟件測試網

      關注點分離(separation of concerns)是面向服務的架構(Service-Oriented Architectures,SOA)的核心原則。令人遺憾的是,該原則在實現SOA服務時常常起不到作用。我們通常會看到帶有多個關注點(如安全、事務管理)的巨大的實現類,使用業務邏輯記錄所有混合在一起的關注點。使用Spring Framework和Aspect Oriented Programming (AOP)原則,我們可以將關注點分離,以用于服務實現。

      本文中我們將演示如何使用Apache Axis和Spring來開發Web service,并使用Acegi Security對其進行保護——同時保持關注點很好地分離。

        動機和設計

      本文中我們將使用的示例是名為FundsTransferService的服務,銀行使用該服務將資金從一個賬戶轉移到另一個賬戶�?梢栽诒疚牡膮⒖假Y料部分找到該服務的WSDL及所有源代碼、配置文件和構建文件。我們有意讓該服務保持非常簡單,以便集中討論本文更有意義的方面。在本服務的實現中,我們將涉及三個關注點:

        ·Web service管道,用來公開作為服務的功能

        ·用于轉移資金的業務邏輯

        ·安全性,用于保證只有經授權的用戶才能執行資金轉移

      而真正的系統很可能是必須處理其他的關注點,如事務管理、日志等。

      我們想設計這樣一種實現,處理每個關注點的代碼與其他的代碼完全分離。對于Web service管道,我們將使用Axis來公開作為服務的功能。用于將資金從一個賬戶轉移到另一個賬戶的業務邏輯將封裝在一組POJO(Plain Old Java Object)中。將通過Acegi Security框架來提供安全性。我們將使用Spring Framework及其AOP工具把各方面聯系起來,使構成該Web service實現的所有代碼之間的依賴性減到最小。

      該實現的設計如圖1所示。以黃色表示的對象就是我們需要實現的Web service。以藍色表示的對象來自Axis;以粉紅色表示的對象來自Acegi;以綠色表示的對象來自Spring。FundsTransferService是WSDL中所定義的服務接口。為了簡化圖表,我們將所有Axis類顯示為名為Axis Engine的組件。BasicHandler也是Axis類,但由于它對于設計比較重要(稍后詳述),所以單獨顯示出來。FundsTransferServiceSoapBindingImpl是Axis的生成類,需要實現它來提供服務功能。將直接通過Spring委派業務邏輯POJO AccountMgrImpl(稍后也會對此進行詳細解釋)。AccountMgrImpl與AccountMgr接口捆綁在一起是不錯的做法,因為這樣就允許我們插入Spring以發揮其作用(盡管有其他方法可以不帶接口使用Spring)。

      

       圖1.FundsTransferService實現的設計

      現在回到BasicHandler。需要返回的原因涉及到如何選擇以提供安全。在本例中,將在兩個不同級別上處理安全性:Web service的安全性,及應用程序代碼的安全性,如POJO。按照關注點分離的理念,我們提出允許進行分離的設計。Axis允許插入定制的處理程序,偵聽請求和響應消息,以提供其他功能(如安全性)。因此,我們將創建名為AcegiBridgeAuthenticationHandler的定制處理程序,負責處理Web service安全。將擴展Axis類BasicHandler,以便可以將其插入Axis處理程序框架。Acegi將用于提供應用程序級的安全,如提供對POJO的訪問控制。

      為了使這些方面無縫工作,需要將Web service安全上下文連接到Acegi安全上下文——因此定制的Axis處理程序類的名稱為AcegiBridgeAuthenticationHandler。它不僅將處理Web service安全性,還負責將從該過程獲取的安全上下文連接到Acegi環境,這樣Acegi就可以決定是否授權訪問POJO。方法是從Web service請求消息中提取安全聲明,進行驗證,然后創建認證令牌,因為我們已經為本例選擇了用戶名/密碼認證,所以為UsernamePasswordAuthenticationToken。然后將該認證令牌設置到Acegi SecurityContext中,這樣稍后在控制訪問業務邏輯POJO時,Acegi可以使用請求方的證書和權限。

    延伸閱讀

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

    TAG: web Web WEB Service

    41/41234>

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