1

REST ベースのマイクロサービス アーキテクチャで、関連するデータを 1 つのエンティティにグループ化する正しい方法は何ですか。たとえば、ユーザーの管理を担当するユーザー サービスがあるとします。さらに、これらのユーザーごとに保存された何らかの種類のデータを管理するサービスを提供する場合があります (この例では、ユーザーのアイテム/在庫について話していると仮定します)。

在庫管理サービスを分離して、あらゆる在庫の作成に使用できるので、在庫管理システムが機能するためにユーザーを必要としないことが理想的です。

私が探しているグループ化を提供する使用する典型的なパターンはありますか (単一の所有者に複数の在庫品目)? そのようなアーキテクチャをサポートする残りのエンドポイントはどのようになりますか?

4

2 に答える 2

2

典型的なパターンはないと思います。これは、ビジネス プロセスとエンティティ間の関係によって異なります。しかし、いくつかの一般的なステートメントがあります。

  1. 「エンティティ」サービスは、すべてのビジネス プロセスに依存しない必要があります。
  2. 「エンティティ」サービスの機能コンテキストが重複してはなりません。
  3. サービスの実装に冗長なロジックがあってはなりません。
  4. ビジネス プロセスで必要とされない場合、エンティティごとに新しいサービスを作成する必要はありません。
  5. エンティティ間に強い従属関係がある場合、関連付けられたすべてのエンティティを含む集合体とそれを操作する新しいサービスを導入することができます。

これらのアサーションのほとんどをソリューションに対して正式にチェックできます。

さらに、いくつかのサービスを 2 つの新しいサービスに分割することは常に可能です。ただし、分析段階で努力すればするほど、サービスを一度に分割する必要がなくなります。

于 2014-09-22T20:47:36.490 に答える
1

「サービス」の動作は通常、セマンティックに関係なく、ファクトリパターンの実装に変換されます。

API 側:

POST: yourapi.com/v1/inventory/add/
DATA: {
  userid: 1,
  products: [
     'Canned Chicken Gizzards',
     'Snake Oil Extract',
     'Evaporated Water'
  ]
}

ファクトリ クラス側:

InventoryFactory->addProduct((object) product)

-- also have a method to add products under a user --

InventoryFactory->addProducts((array) products, userid)
于 2014-10-28T05:57:04.630 に答える