- SOA實踐
- 余浩等編著
- 825字
- 2018-12-26 17:00:21
1.1.2 服務都有服務合同
服務合同指的是服務消費者和服務提供者之間的約定。服務消費者和服務提供者必須遵守該約定,服務才能順利進行,并得到雙方預期的結果。如果任何一方違反該約定,得到的結果則是不可預期的。顯然,服務合同是服務提供者和服務消費者之間交互的前提,沒有服務合同,服務雙方的交互根本不可能發生。此外,服務合同也必須是完整的,即服務的消費者和服務的提供者只需要服務合同,而不需要其他額外的信息,就可以進行交互。
服務合同一般由服務提供者提供,作為對它所提供的服務的描述。服務的消費者在消費該服務前,必須理解該服務合同,并按照服務合同的要求與服務提供者交互,才可以使雙方最終得到預期的結果。
服務合同在計算機行業里并不是新鮮的名詞,它的歷史可以追溯到早期的Application Programming Interface (API)。API提供了一種簡單的技術層面的服務合同,描述了服務的功能方面的要求,規定了服務的名字、調用該服務所需的參數個數和類型,以及返回參數的類型。服務的消費者如果遵守該服務合同,提供正確的參數個數和類型,就會得到預期的返回值。
在面向服務的架構的范疇內,服務合同有著更高的抽象層次,它不僅包含了對技術層面的要求,也包括了對服務的非功能性層面(比如性能,可靠性等)的要求,甚至還包含了語義方面的信息。在采用Web服務技術來實現服務時,服務合同一般包括以下4部分。
(1)WSDL文檔:用于描述服務的端點、服務提供的操作,以及每一個操作的輸入和輸出信息。
(2)XML Schema:定義交互的數據類型。
(3)WS-Policy文檔:描述沒有在WSDL中定義的服務元信息。
(4)Service Level Agreement(SLA):描述服務的非功能性層面的要求和語義信息等。
在設計服務合同的時候要特別小心。首先,服務合同必須提供服務交互所需的全部信息。其次,由于服務合同代表了服務消費者對服務提供者的一種依賴,服務提供者必須根據服務合同提供服務。在服務升級的時候,服務提供者必須保證能夠繼續按照原有的服務合同提供服務,同時給新的服務消費者按照新的服務合同提供服務。這里需要對服務合同進行很好的維護和版本管理。
- Learn TypeScript 3 by Building Web Applications
- Interactive Data Visualization with Python
- Mastering QGIS
- 深入淺出WPF
- ASP.NET Core 2 and Vue.js
- React.js Essentials
- Java軟件開發基礎
- Java面向對象程序設計
- Python項目實戰從入門到精通
- Flask Web開發:基于Python的Web應用開發實戰(第2版)
- 軟件測試分析與實踐
- 深入理解Java虛擬機:JVM高級特性與最佳實踐
- Learning Cocos2d-JS Game Development
- Yii2 By Example
- LabVIEW入門與實戰開發100例(第4版)