やや関連: NServiceBus エンドポイントが異なるシリアライザーを使用して処理および公開することは可能ですか?
インフラストラクチャにはすでに NServiceBus が広く展開されており、すべて を使用して構成されていXmlSerializer
ます。ただし、 がXmlSerializer
要件を満たさないという 1 回限りの状況が発生したため、JsonSerializer
またはを検討していBinarySerializer
ます。
インフラストラクチャ全体のすべてのエンドポイントを別のシリアライザーを使用するように変更することは、展開の面で非常に混乱を招き、時間の浪費になりますが、別のシリアライザーを使用する新しいエンドポイントを 1 つ導入する方法を理解するのに苦労しています...というよりはむしろ、代替シリアライザーを使用するようにエンドポイント自体を構成するのは簡単ですが、他のエンドポイントと通信する方法がわかりません。
NServiceBus 3.x を使用している場合、アーキテクチャ全体で使用される 1 つのシリアライザ タイプに固執していませんか? NServiceBus メッセージ ボードで、シリアライゼーションはエンドポイント レベルで定義できることを一度読んだことを覚えているようですが、詳細はあまり与えられておらず、その回答を書いた人は上記の明らかな相互運用の問題を見落としていた可能性があります。
アーキテクチャを次のようにしたい:
+---------+ +------------+ (pub/sub) +------------+
| Web App |----->| Endpoint A |<--------->| Endpoint B |<-------> ...
+---------+ +------------+ +------------+
| (XML) (XML)
|
| +------------+
+---------->| Endpoint C |
+------------+
(JSON)
もちろん、問題は、明らかにエンドポイント C をJsonSerializer
排他的に使用するように構成できますが (これで問題ありません)、「Web アプリ」には、いずれかと通信するために独自の (送信専用) バスが必要なことです。エンドポイント A またはエンドポイント C。そして、そのバスは1 つのシリアライザーを使用して構成する必要があります。すでに多数の に基づくエンドポイントにメッセージを送信しているため、XmlSerializer
単純に に切り替えることはできませんJsonSerializer
。また、メッセージ レベルまたはエンドポイント レベルのいずれかで、NServiceBus にいくつかのメッセージを異なる方法でシリアル化するように指示する構成またはドキュメントを見つけることができた方法はありません。NSB 4/5 での変更が技術的にこれをサポートするかどうかもわかりません。なぜなら、それらはメッセージの送信方法ではなく、受信方法に関するものだからです。
これを可能にする構成方法または設定が欠けている場所はありますか? そうでない場合、他にどのような賢明なオプションがありますか? おそらく Web アプリで 2 つのエンドポイントをホストしていますか? それとも、他のシリアライザーに委任するカスタム シリアライザーですか?