3

サーバーでホストされている.Netサービスと、インターネット経由でこのサーバーに接続している.Netクライアントがあります。

クライアントがサービスのイベントをサブスクライブし、データが利用可能になったときにデータをプッシュできるパブリッシュサブスクライブモデルを実装したいと思います。別の方法は、クライアントにデータを求めてサーバーをポーリングさせることですが、これは必要なものに対して遅すぎる可能性があります。したがって、パブリッシュ/サブスクライブタイプの通信が必要です。

WCFバインディングWSDualHttpBindingでこれが可能になることは理解していますが、欠点があります。「ProgrammingWCFServices」の著者であるJuvalLowyによると、

... WSDualHttpBindingは、サービスをクライアントから分離するさまざまな通信バリアをトンネリングすることは事実上不可能であり、特定のWebサーバーマシンを見つける必要があるため、ほとんど使用できません。

これは、WSDualHttpBindingで動作するには、サーバーがコールバックするために、クライアントが(必要なルーター構成とともに)マシンのポートを開く必要があることを意味すると解釈しました(間違っている場合は訂正してください)。これが事実である場合、WSDualHttpBindingを使用することは私にとってオプションではありません。WindowsAzureの使用もオプションではありません。

したがって、私の質問の核心は、クライアントマシンのポートを開く必要なしに、インターネットを介してパブリッシュ/サブスクライブ/コールバックタイプの通信を実現するにはどうすればよいかということです。オープンスタンダードは問題ありませんが、クライアントとサーバーはどちらも.Netであるため不要であり、WindowsAzureはオプションではありません。

4

4 に答える 4

2

WSDualHttpBindingには、クライアントからサーバーへのチャネルとサーバーからクライアントへのチャネルの2つのチャネルが含まれています。後者は確かにファイアウォールとNATの設定が必要です。Net.Tcpはどうですか?単一のチャネルのみを使用し、クライアントからサーバーに開始されたそのチャネルを介したコールバック(二重通信)をサポートします。クライアントとサーバーの両方が.NETアプリケーションになるため、サーバーのファイアウォール構成で可能になるはずだとおっしゃいました。

于 2010-09-26T08:46:34.313 に答える
2

あなたはあなたの投稿でほとんどのオプションについて言及しています。

3つのオプションがあります:

  • クライアントはサーバーをポーリングします。開いているポートは必要ありませんが、遅すぎます。
  • WSDualHttpBindingにはポートを開く必要があります
  • Azure Service Busはそれを行いますが、オプションではありません。

実際にそれを行う方法があります。Azureサービスバスがどのように機能するかを見ると、実際にクライアントにメッセージを送信するために使用されているときに、クライアントをだまして送信ポートにあると思い込ませます。この機能の実装を試みることができます。

もう1つ試すことができるのは、http://nservicebus.com/にあるnservicebusですこれは、オープンソースの.netサービスバスです。

于 2010-09-26T09:01:57.170 に答える
2

Internet Communication Engine(ICE)は、パブリッシュ/サブスクライブサービスであるIceStormを提供します。

そのオープンソースであり、インストールをダウンロードすると、パブリッシュ/サブスクライブの実装方法を示すサンプルのVisual Studioプロジェクトがあります(「demos」.zipファイルと「IceStorm」ディレクトリをクロックデモで確認してください)。

ICEはあなたのためにすべての面倒な作業を行います。主にドキュメントが大規模で、親しみやすく、よく書かれているため、学習曲線は非常に短くなります。

于 2011-03-01T13:26:09.240 に答える
0

インターネットを介したDDS(OMGのデータ配信サービス)を強くお勧めしますhttp://www.omg.org/news/meetings/workshops/Real-time_WS_Final_Presentations_2008/Session%203/03-02_Bertocci_et_al.pdf

OMGから、私が言わなければならないのはそれだけです。はい、OMGが終わったと思われるかもしれません。私はそうしません、そして政府のカウンセラーとして私は本当に基準を求めています。リベラルなイデオロギーと危機に加えて、政府は依然として巨大な顧客であり、相互運用が必須であることを忘れないでください。

NServiceBus?そうですね、それで問題ありませんが、今すぐ始めるには複雑すぎませんか?学習曲線も...急です?そうではないと思いますが、もっと簡単なものはありますか?

ICEは良い選択です。物事をより良くしようとしているCORBAの世界の人たち。疑わないで、使って、試してみてください!ただの感覚:ストームサービスを使用しても、要求/応答の世界にいると感じるかもしれません...しかし、それは欠点ですか?


ただし、商用でオープンなソリューションを好む場合は、プロトコルバッファを使用したパブリッシュサブスクライブ(Googleプロトコルバッファの検索)を検討してください...最初のアプローチhttp://protocolbus.casessite.org。これは私のowmの仕事です...申し訳ありませんが、これは最初のプロジェクトですが、代替トランスポートとして中央ブローカーディストリビューションを使用しています(デフォルトはマルチキャストですが、ブロードキャストとudpも利用できます)。オープンソースなので、無料で...

于 2012-04-08T16:03:07.853 に答える