2

簡略化... ストレージの更新に NServiceBus を使用しています。

このサガでは、最初にストレージからデータを読み取り、データを更新して、再びストレージに戻します。NServicebus インスタンスは、Windows サービスでセルフホストされます。ストレージへの呼び出しは、独自のアセンブリ ('assembly1') で分離されます。

ここで、WCF を介したストレージからの同期読み取りも必要になります。場合によっては、サガでの更新時に必要だったのと同じ読み取りが行われることがあります。

私の意見はかなり明確ですが、間違っているかもしれないので、この質問をしています...

「assembly1」のコピーを使用する別の WCF サービスをセットアップする必要がありますか? それとも、WCF インスタンスは nservicebus をホストする必要がありますか? または、それを行うより良い方法はありますか?

ある意味では、同期呼び出し用の WCF と、現在 nservicebus (既に存在する) をホストする Windows サービスの 2 つのエンドポイントです。

4

2 に答える 2

2

あなたの質問やコメントで 2 つの異なるエンドポイントに分ける理由はありません。単一の論理サービスについて説明しているように聞こえますが、私のデフォルトの立場は、単一のプロセスで各論理サービスをホストすることです。これは、展開とトラブルシューティングが容易になるため、通常は最も単純な方法です。

編集

これが役立つかどうかはわかりませんが、現在のクライアントは IIS でホストされている WCF エンドポイントで NSB を実行しています。したがって、コマンドは NSB メッセージを介して処理されますが、クエリは WCF を介して引き続き公開されます。これまでのところ、1 つのプロセスで 2 つを一緒にホストすることに問題はありませんでした。

于 2015-09-18T14:39:42.933 に答える
2

一般に、saga は自身の状態 (Data プロパティ) のみを更新し、他のエンドポイントにメッセージを送信する必要があります。他の状態を更新したり、RPC 呼び出し (WCF など) を行ったりしてはなりません。

より具体的な推奨事項を示す前に、saga の特定の役割と「assembly1」によって更新されるデータについて理解することをお勧めします。

于 2015-09-19T07:06:37.440 に答える