私は相談するビジネスをサポートする一連のサービス用のSOAアーキテクチャを検討していましたが、以前は各アプリケーションが共有MS SQLデータベースから必要なものを選び、私たちはJava、.net、およびマイクロソフトのアクセスを含むモンスターデータベースと統合している様々なアプリを持っていましたが、すべてが緊密に結合されているので、参照整合性がありました。SOAスタイル - データの共有
サービス間のデータ共有をサポートする方法について少し混乱しています。
卸売業者によって毎月提供される製品データベースの上に位置する製品サービスを受け取ります。ドメインモデルを構築し、これをHibernateまたはwhatveverを使用してデータベースに格納します。implentation wise Productは、製品に関する卸売業者から提供された情報を与えられた大きなオブジェクトグラフです。
レビューサービス、料金設定サービス、配送サービス、および在庫サービスが、ProductUpdated、ProductAdded、ProductDeletedを購読するとします。問題は、各サービスが製品に関する情報の一部または一部しか必要としないことです。配送には寸法と重量だけが必要です。価格設定には、現在までの製品ID、卸売費、数量割引、価格のみが必要な場合があります。レビューで商品ID、商品名、プロデューサーが必要な場合があります。
ProductUpdatedなどの非加入者固有の契約(適切なスキーマ、すべての製品オブジェクトグラフを表す適切なスキーマ)を公開し、加入者が必要なものをドメインモデルにマップできるようにするのが標準的な方法です一体、彼らがやりたいことも、ドメインモデルを持っていない可能性があります)...
をそれとも私がこれを書いている私は多分考えている:
製品・サービスがProductAddedメッセージを発行します(単に製品の詳細情報が含まれていません製品のIDとおそらくタイムスタンプ)
料金設定サービスsu ProductAddedにbscribesおよび公開するRequestPricingForProductメッセージが
製品・サービスを公開しResultForPricingForProductメッセージ
は、うーん...ちょっと良さそうです...しかし、私は、他のどのような私ができるサービスに基づく製品・サービスの契約を構築してるようには感じています何を求めているのか、将来のXYZサービスでは、おそらく異なるものが必要です。私が混乱しているところではっきりしてきていると思うので、私はそこで止まるつもりです...おそらく上記はうまくいくでしょう。
ご意見やご感想は大変ありがたいです。これは半分焼いて見えて申し訳ありません。