1

このドキュメントの定義を理解しようとしています。 http://www.opengroup.org/soa/source-book/ontologyv2/service.htm

サービス、サービス インターフェイス、およびサービス コントラクトの定義が不明確であるか、私が通常遭遇するものとは異なっているように見えます。

サービス:

「サービスとは、特定の結果をもたらす反復可能な活動を論理的に表現したものです。自己完結型であり、消費者にとっては「ブラック ボックス」です。」</p>

WCF プロジェクトがあり、2 つのオペレーション StoreFront +GetPrice +AddToCart があるとします。

定義には「繰り返し可能な活動」と書かれています。それで、サービスStoreFrontですか?または、2 つのサービス (GetPrice と AddToCart) がありますか。

サービス契約: 「効果」クラスがあります。効果は「返品」と「カートに入れる」ですか?

4

1 に答える 1

1

同じ記事から:

「明確に定義された「契約条件」とインターフェースを使用して、あるエンティティまたは複数のエンティティが他のエンティティに提供する機能。」(出典: OMG SoaML 仕様 - イタリック体)

私の意見では、これは「反復可能な活動」について話している定義よりも好ましい定義です。

定義のキーワードは機能です。機能とは、BPM 業界から引き継がれたビジネス機能を指しますが、SOA のコンテキストでは、明確な境界を持つビジネス ドメインを指します。

したがって、この定義から、サービスは公開する必要があるか、ビジネス機能/プロセスの境界内で動作する必要があると推測できます。これは、サービスが明確に定義された境界内で自律的であるべきであるという (SOAのプリンシパルまたはテナントからの) アイデアに私たちを導きます。

あなたの例では、あなたは尋ねています

それで、サービスStoreFrontですか?または、2 つのサービス (GetPrice と AddToCart) がありますか?

それに対する答えはいつものように「場合による」です。ただし、通常、価格設定 (GetPrice) は注文 (AddToCart) とは異なるビジネス機能に属します。さらに、操作は他のいくつかの重要な点で異なります。

  • GetPrice は読み取り操作ですが、AddToCart は書き込み操作です。
  • GetPrice は同期操作ですが、AddToCart は非同期操作である可能性が非常に高くなります

これらのことから、おそらく、ビジネスの観点からは 2 つの異なるサービスであると想定する必要があります。

この仮定には、いくつかの根本的な影響があります。それらが2つのサービスである場合、SOAによれば、それらは自律的でなければなりません。つまり、サービス間の結合を可能な限り最小限に抑え、可能な限りサービスを個別の関心事として計画、開発、テスト、構築、展開、ホスト、サポート、および管理できるようにする必要があります。

もう 1 つの反響は、サービスをこの程度まで物理的に分離する場合、どうすればこれらのものを一緒にユーザーに見せることができるかということです。それらは異なる機能である可能性がありますが、それでも画面上で連携する必要があります。

さらに、バックエンドの観点からすると、注文は価格データについて知る必要があります。データベースを 2 つに分けた場合、Checkout サービスは、どのくらいの費用がかかるか、どの割引を適用するかなどをどのように知ることができますか?

この内容については以前にも投稿しましたので、よろしければご覧ください。Lewis と Fowler によるMicroservicesに関する優れた記事も読むことをお勧めします。

于 2014-05-02T09:14:12.803 に答える