2つの結合は根本的に異なる。
NetTcpBinding
はRPC
の概念に類似MS独自の形式(通常はバイナリ)(例えば.NET Remoting
を置き換えるために使用することができる)と考えることができます。同期的です。つまり、クライアントとサーバーの両方が同時にオンラインでなければならず、クライアントはすぐに応答を受信します。
MSMQ
は、Microsoftが提供するメッセージ指向ミドルウェアソリューションです。これは、非同期キューを中心にしています。クライアントがメッセージを送信するときに宛先サーバーがオフラインの場合、サーバーはオンラインに戻るまでクライアントにキューされます。各キューは一方向のみであるが、双方向通信はサーバからクライアントへの第2のキューを介して達成することができる。 WCF MSMQメッセージを送信するには、クライアントにMSMQ
サービスをインストールする必要があります。キュー上のメッセージは配信タイムアウトを持つことができ、それ以外は該当するデッドレターキューに置かれます。
実世界の例:
- Iは、例えば、高パフォーマンスのためのバイナリシリアル化のMicrosoft WCFクライアントとサーバ間の同期通信のニーズを
NetTcpBinding
を使用しますファイルのアップロード、Xml
は有用ではないメディアなど(そうでない場合、私はXml
/SOAP
同期メッセージングにwsHttpBinding
を使用します)
- DTCが2つの以上のシステム(例えば金融)との間に信頼性の高いメッセージングを確保するために有効にして、私は
MSMQBinding
を使用する、と少なくとも1つのエンドポイントが.Net内にあり、互換性のあるサーバー(必ずしもWCF
ではない)、、または他のEAI
ハブまたはMSMQ
のアダプターを持つESB
バス、例えば、ブリッジはMSMQ and MQSeries
の間に存在します。メッセージは通常、Xml
形式です。
TL;
DR
は、それがサービスを利用したサービスがまだ実行されていない場合でも、クライアントを意味してい
はい。 MSMQ
がローカルで実行されている場合、クライアントは即時返信(メッセージがキューに入れられたことを示す)を返します。これは、メッセージがサーバーによって正常に受信されたことを意味するものではありません。
大きな回答ですが、私は多数の複雑なシステムで広く使用されていたWCFを使用していましたが、2セントを追加したいだけでした。 1. RESTfulなWebサービスに欠けているものを提供する非常に特殊なユースケースを除いて、WCFをデフォルトにしないでください。 WCFの頭痛の9/10倍は報酬に値するものではありません。 2. NetTcpBindingは、私の個人的な経験の中で、おそらく最高の(そして間違いなく最も速い - 名前付きパイプを除く)バインディングオプションです。ポスターが説明しているように、冗長性は組み込まれていません。 –
同意 - 4年後にxmlはJSONサービスに置き換えられ、WebApiはRESTfulな世界でWCFを追加しました。 – StuartLC