MassTransit や手書きの MSMQ クライアントなどのフレームワークと比較して WCF を使用する利点は何ですか?

StackOverflow https://stackoverflow.com/questions/617859

質問

今後のプロジェクトで非同期実行を行うためのソリューションとして MSMQ を使用することを検討しています。WCF と、MassTransit などのフレームワーク、または MSMQ からタスクを配置/読み取るための手書きの MSMQ クライアントの使用との違いを知りたいです。

基本的にアプリケーションは、サービス層 (WCF または通常の Web サービス) を介してデータを読み書きする複数の Web サイト (LAN を介した内部またはインターネットを介した外部) になります。次に、このサービス層は次の 2 つのうちの 1 つを実行します。1.データベース 2 にデータを書き込みます。および/またはメッセージをキューに入れてバックグラウンド プロセスをトリガーします。3.明らかに、データベースからデータを取得することもできます。キューの反対側にある小さなエージェント (Windows サービス) はキューを監視し、タスク コマンドに基づいて実行します。

このアーキテクチャは、RPC や分散実行などと比較して、拡張 (キューとエージェントの追加) が非常に簡単で、実装も簡単です。また、エージェントの処理はリアルタイムである必要はありません。また、エージェント層とサービス層は、共通のドメイン オブジェクトやリポジトリなどを共有することを除いて、別個のアプリケーションです。

どう思いますか?上記の要件に対するアーキテクチャの提案は歓迎されます。ありがとう!

役に立ちましたか?

解決

WCFは、MSMQに抽象化を追加します。実際、互換性のあるコントラクトを定義したら(操作はOneWayでなければなりません)、構成内のMSMQを透過的に切り替えることができます。 (たとえば、通常のHttpWSまたはNetTcpバインディングに切り替えることができます。)

セキュリティなど、他のWCFの利点を評価して、ニーズにどのように適合するかを確認する必要があります。繰り返しますが、MSMQを使用しているという事実を合理的に透過的にする必要があります。たとえば、SOAPセキュリティの追加などは、MSMQの使用とは無関係に「正常に動作する」必要があります。

(IIRCでは、MSMQを使用するサービスアカウントを使用して、MSMQを使用する各マシンのデスクトップにログインし、マシンのローカルプロファイルに証明書を生成する必要があります。そして、その後、ユーザープロファイルが読み込まれないため、IIS6からはうまく機能しません。一般的な苦痛ですが、WCFとは特に関係ありません。)


それとは別に:

SQL Server Service Brokerをご覧になりましたか? MSMQ + WCFとSSSBを使用した後、SSSBの構成と管理は非常に簡単になったと思います。 SSSBは、SQLクライアント上のT-SQLコマンドで動作します(LinuxのMonoからトランザクションを使用して使用しています)。また、リモートでも、トランザクションによる送受信が可能になります(MSMQ 4ではこれが可能になったと思います)。本当にメッセージキューイングから多くの苦痛を取り除きます。SQLServerを既に使用している場合は...

SSSBは、SQL Management StudioにはすべてGUIデザイナーがいないため見落とされがちですが、難しくはなく、素晴らしいオプションです。欠点は、ローカル送信機能(ネットワークがダウンしたときにメッセージをキューに入れる)が必要な場合、ローカルSQL Expressインスタンスを実行する必要があることです。

他のヒント

あなたのアーキテクチャは健全で合理的​​だと思われます。ただし、手動でコーディングされた MSMQ クラスではなく、WCF ネット MSMQ トランスポートを使用することを検討する必要があります。WCF は、この共通の機能を優れたプログラミング モデルにラップします。また、基本的な System.Messaging と比較して、wcf で使用されるプロトコルにはいくつかの改善があると思います。

単純なMSMQの付加価値をご覧ください:

http://readthedocs.org/docs/masstransit/en/ latest / overview / valueadd.html

要約すると、MassTransitを使用したAPIには、多くのメッセージングの概念が明確に示されています。手動でコーディングしたり、WCFを使用した場合には、ある程度は必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top