質問

2011-12-04 12 views
0

は、WCFは、以下の結合のオプションがあります。質問

  • HTTP(S)
  • net.tcp
  • MSMQ
  • 質問の

カップル:

  • AFAIK、http(s)は、実際にはTCPプロトコルの上位プロトコルであり、実際にはTCPプロトコルはnet.tcpです。では、なぜそれらを両方とも持っていますか?なぜただ一つのTCPプロトコルを持っていないのですか?

  • マシン境界を越えてMSMQを使用できますか?

  • 他のバインディングオプションが必要な場合はどうすればよいですか?

ありがとう。

答えて

3

netTcpBindingは確かに「低レベル」のプロトコルなので、httpよりも速いです。あなたの会社内のイントラネット/ローカルネットワーク環境でうまく動作します。

しかし、netTcpBindingは、ファイアウォールやルータを非常に簡単に通過しません。ポートを開く必要があります。これはセキュリティ上の影響が多く、特に大企業ではしばしば成し遂げられません。ちょうど約すべてのファイアウォール上で開いている - -

WCFのHTTPバインディングは、ポート80上で動作しますので、これらのバインディングを使用すると、より多くの届く提供 - 社外からあなたの顧客との人々は、このようなサービス多くに話すことができますがnetTcpBindingを使用するものよりも簡単です。

WCFの美しさはこれです:あなたは単一のサービスを持つことができますが、2つのエンドポイント公開することができます - ローカルクライアントのためにnetTcpBinding(速い、バイナリエンコーディング)を使用して、1を - と、2番目の「basicHttpBinding`エンドポイントのあなたのLANの外から電話をかけているクライアント。 はこれについて知っておく必要があるサービス実装コードではありません。また、nettcpまたはhttpを使用しているかどうかに別にプログラムする必要はありません。 WCFがこれをすべて処理します。


は、MSMQは全く別の獣である - NETTCPとHTTPバインディングは、「接続」方式での作業中に - あなたがサービスを呼び出すと、答えを待つ - MSMQバインディングは、キューベースのシステムです。この場合、リクエストをキューにドロップするとすぐに完了します。後で、ある種のワーカープロセスまたはプログラムによってキューが処理され、何かが実行されます。あなたは何らかの形で(電子メール、別のキューまたは何かの応答メッセージ)通知されるかもしれませんが、a)サービスの呼び出し、b)メッセージの処理、c)応答の取得は完全に分離され、それは数日かかるかもしれません。そしてはい!もちろんMSMQはマシンの境界を越えて動作します!