2012-09-10 25 views
8

私はこの記事http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspxを使ってバインディングオプションを選択しました。私はWCF - NetMsmqBindingとNetTcpBinding

オフラインまたは切断の相互作用により平均で何の異常な疑問を持っ

、それがサービスを利用したサービスがまだ実行されていない場合でも、クライアントを意味していNetMsmqBinding

を選択?

リアルタイムの例をいくつか共有できますか?

答えて

9

2つの結合は根本的に異なる。

  • NetTcpBindingRPCの概念に類似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がローカルで実行されている場合、クライアントは即時返信(メッセージがキューに入れられたことを示す)を返します。これは、メッセージがサーバーによって正常に受信されたことを意味するものではありません。

+1

大きな回答ですが、私は多数の複雑なシステムで広く使用されていたWCFを使用していましたが、2セントを追加したいだけでした。 1. RESTfulなWebサービスに欠けているものを提供する非常に特殊なユースケースを除いて、WCFをデフォルトにしないでください。 WCFの頭痛の9/10倍は報酬に値するものではありません。 2. NetTcpBindingは、私の個人的な経験の中で、おそらく最高の(そして間違いなく最も速い - 名前付きパイプを除く)バインディングオプションです。ポスターが説明しているように、冗長性は組み込まれていません。 –

+0

同意 - 4年後にxmlはJSONサービスに置き換えられ、WebApiはRESTfulな世界でWCFを追加しました。 – StuartLC

関連する問題