官术网_书友最值得收藏!

  • 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):描述服務的非功能性層面的要求和語義信息等。

在設計服務合同的時候要特別小心。首先,服務合同必須提供服務交互所需的全部信息。其次,由于服務合同代表了服務消費者對服務提供者的一種依賴,服務提供者必須根據服務合同提供服務。在服務升級的時候,服務提供者必須保證能夠繼續按照原有的服務合同提供服務,同時給新的服務消費者按照新的服務合同提供服務。這里需要對服務合同進行很好的維護和版本管理。

主站蜘蛛池模板: 永和县| 大新县| 巴彦县| 海林市| 珠海市| 邵阳市| 大埔区| 安岳县| 旌德县| 客服| 岳阳市| 太原市| 三穗县| 金湖县| 惠东县| 道真| 福州市| 独山县| 三河市| 新郑市| 英德市| 连州市| 台前县| 古丈县| 双柏县| 古丈县| 南丹县| 康保县| 合水县| 贵溪市| 永德县| 盈江县| 萨嘎县| 屏山县| 百色市| 黄平县| 湖南省| 文登市| 伊宁市| 景宁| 福安市|