如何在基於面向服務架構設計的項目中應用WebService技術(上篇)

2020-12-11 楊教授工作室

軟體項目實訓及課程設計指導——如何在基於面向服務系統架構設計的項目中應用Web Service技術(上篇)

1、了解軟體系統開發人員所能夠獲得的各種層次的功能服務及所存在的問題

(1)計算機作業系統中所提供的「Service」(服務)

個人計算機軟體的發展早期是基於微軟DOS作業系統的,在早期DOS作業系統中就提供有「中斷服務」的概念和有關的API,允許應用程式直接調用DOS作業系統所提供的中斷服務程序而獲得DOS作業系統中的各種功能(服務)。

隨著個人計算機作業系統從DOS平臺進入到微軟Windows圖形界面的系統平臺,Windows作業系統仍然繼續為PC應用程式提供服務支持,而形成「Window Service」的概念(如開發人員利用VC++訪問Window系統API)。

(2)某種程式語言中所提供的API服務

軟體應用系統的開發人員在應用某種程式語言開發相關的軟體程序時,在該語言中一般也會提供語言級別的API服務。如Java語言中的JDK、C/C++語言中的API庫等形式。如下示圖為JDK API系統庫的幫助文檔的局部截圖,Java程式設計師在開發軟體系統項目時一般都會隨時查閱這個幫助文檔中的相關類、方法及接口等說明信息。

(3)某種開發平臺中所提供的組件服務

在微軟的技術平臺中,提供有COM/DCOM組件;而在Sun J2EE技術平臺中提供有EJB組件。它們都是平臺級別的組件服務。軟體系統的開發人員在應用系統程序的設計和開發實現中,充分地應用這些平臺級別的組件服務,能夠大大地簡化軟體系統的開發工作量和提高軟體系統的可靠性。

儘管在軟體開發中,從作業系統底層乃至開發平臺的高層都提供有不同層次的功能服務,但這些功能服務都存在有一定的限制或者應用要求——作業系統中所提供的各種系統服務只適用該作業系統中運行的各種應用程式,而某種程式語言中所提供的API服務也只適用基於本語言編程實現的各種源程序代碼之間,而開發平臺中所提供的組件服務也同樣只適用該開發平臺,如在J2EE平臺下的程序不能直接獲得微軟的COM/DCOM組件所提高的功能服務,反之也一樣(在微軟的COM/DCOM組件中也不能直接獲得J2EE平臺下的EJB組件所提供的功能服務)!

2、Web Service技術是面向對象/面向組件技術在Internet環境中的進一步延伸

(1)Web Service是面向對象/面向組件技術在Internet中的延伸

Web Service是一種新型的Web應用程式,它們是自包含、自描述、模塊化的應用程式,可以在Web環境(包括企業內部網Intranet和廣域網Internet)中被描述、發布、查找以及通過Web方式來調用其它的Web服務組件。

從這個角度來看,Web Service組件技術其實是面向對象開發技術和更高級別的面向組件開發技術在Intranet/Internet環境中的進一步延伸和擴展。

(2)Web Service從本質上講是放置於Web站點上的可重用組件

WebService組件是分布式和模塊化組件,每個組件本身能夠完成特定的業務功能或者服務、並且遵守WebService技術規範(WS標準),這些WebService技術規範保證Web Service組件之間能夠進行互操作。

作者註:

分布式系統是由一組通過網絡進行通信、為了完成共同的任務而協調工作的計算機節點組成的系統。

(3)Web Services是對諸如RMI、COM和CORBA等現有面向服務的技術的擴展

但Web Services技術目前是一套標準的平臺技術,它定義了Web服務組件如何在Web級別的平臺上實現互操作和在不同的平臺下的應用協同。

由於Web Service技術是採用簡單對象訪問協議(SOAP)進行數據通訊,而SOAP的下層協議仍然為超文本傳輸協議(Http,Hypertext Transfer Protocol)。因此,基於Web Services技術實現的各種服務組件可以是在現有的各種平臺組件的技術基礎上進一步功能擴展和升級完善。

這為企業應用Web Service技術降低了技術應用的成本!因為基於Http協議的網絡已經普及和廣泛地應用了。

3、Web Service技術與微軟的COM組件和Sun的J2EE EJB組件技術不同點

(1)微軟COM組件和Sun J2EE EJB組件協議是基於特定技術平臺

微軟COM/DCOM/COM+組件技術平臺下的客戶端和其伺服器端程序之間相互通訊採用的是基於微軟Windows系統中特有的COM協議——COM協議是微軟公司定義的用於對象、應用程式之間交互功能的標準協議。

而Sun(現為Oracle公司)的J2EE EJB組件技術平臺下的客戶端和其伺服器端程序之間相互通訊採用的是RMI-IIOP協議——RMI-IIOP是基於Internet ORB間協議的Java遠程方法調用,是J2EE標準體系中實現分布式對象的相互通信的標準。

如下示例圖的左邊為微軟的DNA架構體系工作原理示圖(DNA是指Windows Distributed Internet Application Architecture,也就是「Windows分布式應用結構」的含義),而右邊代表J2EE三層架構的工作原理示圖。

由於微軟的COM協議和J2EE的RMI-IIOP協議一方面都是某個特定的技術平臺下特有的專用協議,另一方面它們都採用二進位格式的數據作為網絡協議,這樣將無法穿越企業網絡系統的防火牆——組件的客戶端無法在企業網絡的外部對部署在企業內部的伺服器端中的組件進行訪問以獲得相關的功能服務。

(2)Web Service技術組件之間的協議是跨平臺的XML技術標準

Web Service核心技術基礎是可擴展標記語言XML,其相關標準協議包括服務調用協議SOAP、服務描述語言WSDL以及服務註冊檢索訪問標準UDDI等都是基於XML標準的。這將保證Web Service組件能夠適應「異構的企業應用環境」和「不斷變化的企業需求」。

另外,也為企業推廣「移動辦公」和跨地區(包括跨國)、跨行業的「遠程訪問」和「業務協同」提供了技術實現的可能性。因為XML是文本格式,基於XML格式的交互消息可以穿越企業網絡系統的防火牆——組件的客戶端可以在企業網絡的外部對部署在企業內部的伺服器端中的組件進行訪問以獲得相關的功能服務。

4、Web Services組件的客戶端和伺服器端組件的請求和響應過程

(1)Web Services組件客戶程序通過網絡並利用SOAP協議向Web Services服務組件所在的應用程式伺服器發出SOAP消息的請求,該請求中的URI中包含有該伺服器識別和被調用的具體Web Services組件的標識。請參考下圖所示的過程說明圖。

(2)支持Web Services技術的伺服器讀取SOAP請求消息,並且識別它需要調用的目標組件中的方法。

(3)伺服器進一步解析SOAP請求消息以獲得請求參數、並對客戶端傳遞來的請求參數實現從XML到Java之間的轉換(利用對象反序列化技術實現)。

(4)然後再對目標組件中的請求方法進行調用,並向目標方法傳遞由客戶端通過SOAP請求消息傳遞來的調用參數。

(5)目標組件中的請求方法被調用完畢之後,後端Web服務功能組件返迴響應的結果,由Web Services伺服器使用合適的序列化類將該響應從Java數據類型再轉換為XML數據類型(利用對象序列化技術實現),然後再將它打包為SOAP消息響應向客戶端調用者返送。

整個請求響應的過程請見上圖示例圖所示,根據Web Service的請求響應的過程也可以了解到Web Service體系架構中存在有三個不同的角色。

(1)服務提供者

從業務角度看,它是服務的擁有者;而從系統體系看,它是訪問服務的平臺。

(2)服務請求者

從業務角度看,它是請求特定功能的業務;而從系統體系看,它是尋找並調用服務或啟動與服務交互的應用。服務請求者可以是基於B/S系統的Web程序或者是基於GUI圖形用戶界面的應用程式實現。

(3)服務註冊中心

是一個可搜索的註冊器,服務提供者將服務描述發布其中,服務請求者查找服務並獲取綁定信息的工作。

5、應用Web服務組件技術的開發實現過程

(1)Web服務組件開發者的工作內容

主要涉及設計和編程需要發布為Web服務的業務功能組件,並向WebService伺服器的註冊中心提供本WebService服務方法的說明信息——這可以利用WSDL來描述本WebService組件中的Web服務方法。

當然,為了使WebService的客戶端程序(Web服務的請求者)能夠找到和了解本Web服務組件,需要對本Web服務組件進行註冊——這同樣也是利用WSDL來描述本WebService組件有關的信息。

(2)Web服務組件使用者的工作內容

Web服務組件使用者(Web服務客戶)從Web服務組件所在的WebService伺服器的註冊中心中搜尋和發現所需要訪問的目標Web服務組件——這要利用統一描述、發現和集成協議UDDI(UDDI, Universal Description Discovery and Integration,它是一套基於Web的、分布式的、為Web Service提供的、信息註冊中心的實現標準規範而且也是基於XML標準)。

成功找到後,然後使用Web服務組件中的目標方法、並獲得目標方法的返回結果——這仍然要應用SOAP協議進行通訊和描述返回的信息。

(3)MyEclipse開發工具全面地提供了對開發WebService的技術支持

Java平臺的開發人員可以藉助於MyEclipse IDE開發工具開發實現WebService組件、包括發布Web服務等,大大地簡化了開發過程,並提高了開發效率。而且提供了對JAX-RS和JAX-WS兩種不同風格的WebService框架的支持。如下示圖為在MyEclipse IDE開發工具創建WebService項目的界面局部截圖。

相關焦點

  • 如何在基於面向服務架構設計的項目中應用WebService技術(下篇)
    軟體項目實訓及課程設計指導——如何在基於面向服務系統架構設計的項目中應用Web Service技術(下篇)6、Web服務組件在開發中常應用的各種設計模式(1)在Web服務組件具體開發中常用到的設計模式GOF設計模式在設計Web服務組件時可以起到「調適不同的接口」、「隔離不同的功能組件」和「統一請求的入口」等方面的作用。
  • 軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計1、什麼是基於SOA的軟體系統架構(1)什麼是面向服務的軟體系統體系架構所謂的SOA(Service-Oriented Architecture,面向服務的軟體系統體系架構
  • 軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計1、什麼是面向對象的軟體應用系統的架構設計從軟體應用系統的架構設計師的角度來看,所謂的軟體應用系統的系統架構就是一套構建軟體應用系統的整體結構的各種設計準則
  • 如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)
    軟體項目實訓及課程設計指導——如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)1、良好的可重用性軟體系統架構設計結果的主要體現可重用性的軟體應用系統的系統架構設計結果主要體現在如下兩個方面——本項目的系統架構設計的結果是可重用的和在本項目的系統架構設計中重用成熟的系統架構設計方案
  • 軟體項目實訓及課程設計指導——為什麼要應用和實現SOA架構設計
    軟體項目實訓及課程設計指導——為什麼要應用和實現面向服務的系統架構設計面向對象的架構設計能夠適應不斷變化的軟體系統的需求,而面向切面架構設計是對面向對象架構設計的進一步擴展和完善,但面向對象的架構設計和面向切面架構設計都是針對單一的軟體應用系統設計的方法。
  • SOA(面向服務的體系架構)基本概念
    Web服務是實現服務的技術手段,就如同各種程式語言中的對象是實現對象的技術手段,J2EE中的EJB是實現組件的技術手段一樣。這種基於標準、開放的網際網路技術,以服務為中心的計算環境,我們稱之為"面向服務的計算環境"。1.2.3 面向服務的計算環境在面向服務的計算環境中,系統可以是高度分布、異構的。
  • 軟體項目實訓及課程設計指導——系統設計中的系統架構設計示例
    由於J2EE技術規範為開發複雜的、分布式企業級的應用系統定義了一套體系結構和技術規範,它不僅提供了一套完整的基於標準化模塊的功能服務組件,而且也提供了對企業應用系統的標準縱向分層設計方案。如下示圖為在J2EE技術平臺下的軟體應用系統的典型分層設計方案,在該分層設計中的系統各個層之間只存在單向依賴關係,從而較好地實現了各個層的封裝和彼此間的隔離。
  • 如何保證軟體應用系統架構設計結果的可擴展性和可重用性(下篇)
    軟體項目實訓及課程設計指導——如何保證軟體應用系統架構設計結果的可擴展性和可重用性(下篇)4、封裝軟體應用系統中的各個核心功能模塊面向對象技術中的封裝性是保證軟體應用系統具有良好的模塊性的基礎,並且封裝能夠防止軟體應用系統中相互依賴性所帶來的變動影響——因為封裝機制能夠避免模塊以外的程序代碼被隨意地訪問或者存取模塊內部的屬性
  • Google官方應用程式架構指南
    常見的架構原則如果您不應該使用應用程式組件來存儲應用程式數據和狀態,那麼您應該如何設計應用程式?關注點分離最重要的原則是 分離關注點,在一個 Activity 或一個Fragment 中編寫所有代碼是一個常見的錯誤。這些基於UI的類應該只包含處理UI和app交互的邏輯。通過保持這些類的精簡,您可以避免許多與生命周期相關的問題發生。
  • 技術沙龍|賦能企業數位化轉型,移動云云原生應用架構實踐
    5G時代,信息技術正在加速融入千行百業,雲計算成為驅動企業數位化轉型的新引擎。企業如何全面擁抱雲原生,如何充分利用雲提供的豐富業務PaaS能力,構建架構領先、業務創新的雲化企業級應用,是企業在數位化時代重構其核心競爭力的關鍵所在。
  • 微軟Visual Studio 2010架構設計的功能應用
    Visual Studio經過近十年左右的發展,已經不再是僅僅面向某一個角色(開發人員)的工具,而是要服務於軟體開發過程中的所有不同的角色(開發人員、測試人 員、架構師、項目經理等),使其覆蓋在整個軟體開發生命周期(SDLC)中,本文將重點講述VSTS2010架構設計方面的新功能應用。
  • 如何實現程序類設計的高內聚和低耦合的系統設計目標(上篇)
    軟體項目實訓及課程設計指導——如何實現程序類設計的高內聚低耦合的系統設計目標(上篇)1、前言為了能夠設計和實現一個高內聚、低耦合的軟體應用系統,軟體應用系統的設計和開發人員不僅要有靈活的系統體系架構設計結果,而且也還要有良好的程序類的設計結果
  • 雲端遷移 - Evernote 基於Google 雲平臺的架構設計和技術轉型(上)
    在遷移的過程中,面對網絡、硬體、軟體、用戶各方面的問題,Evernote是如何處理,並設計新的架構的,我們一起來學習。註:本文來自Evernote官方文檔翻譯,若有不對的地方請參考原文。如果災難場景擊中US-West1,我們將能夠使用US-Central1中的數據做恢復服務。關於未來的考慮圍繞著如何重新構建應用程式以更有彈性,以及如何能夠同時服務多個區域的流量,以進一步減少從災難場景中恢復所需的時間。同時還在考慮如何更好地利用GCP的全球足跡來提高訪問Evernote服務時的用戶延遲。在這一點上,我們已經定義了需求,並做出了一些戰略決策。
  • 軟體項目實訓及課程設計指導——如何在項目中實現日誌、事務功能
    軟體項目實訓及課程設計指導——如何在J2EE平臺項目中實現交易日誌、事務控制等功能1.1 基於面向切面AOP設計思想的系統架構設計實現交易日誌的應用示例1、面向對象OOP設計中的「開-閉」(OCP,Open-Close Principle)設計原則
  • 基於中臺架構的「新」國土空間基礎信息平臺——六大關鍵技術能力
    由此可見,加快以大數據、雲計算等信息技術為代表的新基礎設施建設,對提升國家治理能力有著舉足輕重的作用。過硬的技術是信息化建設工作進步的重要支撐,上海數慧一直以來都十分重視新技術的研究和應用。本期系列專題將圍繞基於中臺架構的「新」國土空間基礎信息平臺,為大家帶來六大關鍵技術能力的剖析。
  • 軟體項目實訓及課程設計指導——可擴展和可重用是架構設計的目標
    軟體項目實訓及課程設計指導——可擴展性和可重用性是面向對象架構設計的主要目標1、什麼是合理的軟體應用系統的系統架構設計軟體應用系統的設計人員經常會陷入一種困惑,面向對象系統架構設計結果的評價標準是什麼?
  • 深度好文|如何設計實時數據平臺 -- 上篇(ODF強烈推薦)
    在上篇設計篇中,我們首先從兩個維度介紹實時數據平臺:從現代數倉架構角度看待實時數據平臺,從典型數據處理角度看待實時數據處理;接著我們會探討實時數據平臺整體設計架構、對具體問題的考量以及解決思路。在下篇技術篇中,我們會進一步給出實時數據平臺的技術選型和相關組件介紹,並探討不同模式適用哪些應用場景。希望通過對本文的討論,讀者可以得到一個有章可循、可實際落地的實時數據平臺構建方案。
  • 在軟體系統設計中如何降低軟體系統中程序類之間耦合關係(上篇)
    軟體項目實訓及課程設計指導——如何降低軟體系統中程序類之間耦合關係(上篇)1、分離軟體應用系統中各個模塊類的接口定義和對應接口的具體功能實現面向對象程序類設計的五大原則中的「開放-封閉原則」 ( OCP,Open-Close Principle)倡導分離接口的定義和接口的具體功能實現的設計原則
  • 基於大數據技術的安管平臺架構與設計
    大數據總體架構設計是基於信息安全驅動下的大數據分析和挖掘,涉及數據採集、集成、存儲、處理、分析、評估、預測等大數據全生命周期管理過程。而大數據相關技術應用需解決兩大基本問題,第一是數據的存儲問題,如何存儲龐大的數據量的問題;第二是數據的計算問題,如何處理分析海量的數據。因此,從生命周期和技術應用角度出發,把大數據安全分析平臺整體架構分為五大層級,分別為數據源層、數據採集層、數據存儲層、數據計算引擎、數據分析層和應用層。
  • 技術中臺應用集成架構之移動微應用集成
    目錄:1.應用集成架構簡介2.移動微應用平臺架構分析3.移動微應用集成一、應用集成架構簡介1.1 數位化中臺建設之技術中臺作為企業數位化中臺建設支撐的技術中臺,其前臺是企業應用,後臺是企業基礎設施(網絡、存儲、計算等資源),可為企業數位化中臺建設提供標準化、端到端、柔性(可變化)的軟體生產能力,從而提升企業