メインサーバが.NET上で実装されている間に、システム間/言語の互換性を最大限に高める必要がある場合は、NServiceBusまたはMassTransitを使用できますか、純粋なRabbitMQを使用する方が良いでしょうか? NServiceBusまたはMassTransitはかなり優れた抽象的なレベルを提供しますが、さまざまなソリューションと環境の間のコミュニケーションの容易さは非常に重要です。私は今、純粋なRabbitMQを使用することをもっと考えていますが、私が間違ってそれを考慮している場合、いくつかの長所と短所を指して本当に感謝しています。システム間の互換性が最大です - 純粋なRabbitMQまたはNServiceBus、MassTransit?
答えて
言語が異なる複数のアプリケーションがあり、メッセージの送受信が必要な場合は、NServiceBusまたはMassTransitはお勧めしません。彼らは彼ら自身が追加する特定のメッセージヘッダーを必要とします。これらのメッセージングフレームワークが提供するすべての機能を活用することは決してできません。しかし、内部的にはすべて.NETであり、メッセージングインフラストラクチャを使用する複数のアプリケーションがある場合、NServiceBusとMassTransitは多くの価値を追加します。
第三者との相互運用性についてNServiceBusとMassTransitの両方の長所と短所は、強く型付けされたクラスやインタフェースとしてメッセージを送受信する必要があることです。これらはJSON/XML/BSONなどにシリアル化され、デシリアライズされて再び型に戻ります。
このため、デシリアライズの目的でメッセージの種類を示すメッセージヘッダーが必要です。メッセージタイプヘッダーがなければ、動作しません。
種類の操作ははるかに簡単ですが、相互運用性の問題が発生する可能性があります。タイプのないXMLまたはJSONメッセージを送信するサードパーティとの統合では、サービスとサードパーティの間に翻訳層を作成する必要があります。
XML/JSONにマッピングする独自の型に変換することも、XML/JSONの文字列プロパティを含む単純型に変換することもできます。いずれにしても、翻訳層はMassTransit/NServiceBusを使用してメッセージを内部的に公開するため、メッセージには、提供するすべての機能を完全に活用するために必要なヘッダーがすべて含まれます。
第三者にメッセージを送信する場合、翻訳層はメッセージを第三者が期待するXML/JSONに変換します。
サードパーティ/システム間の統合にどのくらいのメッセージングシステムが関係していますか?答えが非常に少ない場合、NServiceBusとMassTransitは素晴らしい機能を多数提供するため、素晴らしい選択肢になります。
回答が多ければ、まだ良い選択肢かもしれません。翻訳層を用意することで、内部サービスが第三者の要件やスキーマの変更にさらされるのを防ぐことができます。余分に動く部品を犠牲にして、より大きなコントロールと柔軟性を提供します。
最終的に、トランスレーション層は、NServiceBusとMassTransitによってすぐに提供されるパターンを実装するほど複雑ではありません。だから私は真剣にそれらを実行可能な選択肢と考えています。相互運用性に関する
いくつかのリンクは
http://masstransit-project.com/MassTransit/advanced/interoperability.html
こんにちはVanlightly!あなたの説明をありがとう。翻訳層がRebbitMQに直接話す必要がある場合、またはこの層がNServiceBus/MassTransin(JSON文字列にシリアル化してNServiceBus/MassTransinを送信する場合など)と連携する必要がある場合は、 – Oleksii
"翻訳層"はNServiceBus/MassTransitを内部システムに話し、第三者の外部のプロトコル/技術を話します。詳細は実際にあなたの状況の詳細に依存します。もう少し詳細を与えることができれば、私は答えがあまり抽象的ではないかもしれません – Vanlightly
この最高のIMOを合計した文章は「最終的に、翻訳層はすぐに使えるパターンを実装するほど複雑ではありませんNServiceBusとMassTransitによって、私は真剣にそれらを実行可能な選択肢と考えています。 –
- 1. NServiceBusの互換性
- 2. 商用システムの構築:純粋なErlangまたはErlang/OTP?
- 3. [osmdroid]ポリラインは互換性がないため、互換性がありません
- 4. 図のためのJavaScript拡大鏡 - ブラウザ間の互換性
- 5. SQL Serverのvarchar型(最大)とvarchar互換性のない
- 6. は、キューがRabbitMQのとMassTransitの永続
- 7. iOS用シンデレラまたは純粋なOpenGL
- 8. アプリケーションインスタンス間の非互換性:rabbitmqが特定のヘッダーでメッセージを消費しないようにする
- 9. MassTransit:メッセージ間の依存性
- 10. 純粋な関数が純粋な意味を返すのは何ですか?
- 11. なぜC++はCと下位互換性がありますか?なぜ "純粋な" C++言語がないのですか?
- 12. MassTransit with RabbitMQ:エラーキューの復旧
- 13. 純粋なJavascriptまたはプロトタイプベースのフリータイムラインライブラリ
- 14. 純粋なCSSドロップダウンまたはjqueryドロップダウンですか?
- 15. png画像はブラウザ間で互換性がありますか?
- 16. MassTransit RabbitMQの処理方法
- 17. コンピュータ間でのオブジェクトファイルの互換性
- 18. Cython純粋なpythonモード
- 19. 多くのスレッドでMasstransit rabbitMQを公開
- 20. TCPとの互換性:TCPがパケットブロードキャストおよびマルチキャストアクションと互換性がないのはなぜですか?
- 21. 最も互換性のあるプロセス間通信プロトコル
- 22. IExtensibleDataObjectが前方互換性と後方互換性を達成しました
- 23. 最も高速で純粋なJavascript、Graphビジュアライゼーションツールキットは何ですか?
- 24. Node.jsとWebCryptoの間のECDSAシグネチャは互換性がないようですか?
- 25. 純粋なJavaScriptの
- 26. Thriftバージョン間のデータフォーマットの互換性
- 27. スパークジョブがGoogle Dataprocと互換性がなくなりました
- 28. Berkley DBファイルのバージョン間の互換性
- 29. ライブラリのバージョン間のスウィフト互換性
- 30. イテレータは互換性がないのはなぜですか?
https://docs.particular.net/nservicebus/messaging/third-party-integrationが、私はここに同様の質問に答え:http://stackoverflow.com/questions/25953891/why-do-we-need-サービスバス - フレームワークのようなサービスバス - 私の頂上でのトランジット - 25957608#25957608 –