web-dev-qa-db-ja.com

イベントベースのプッシュ通知のためにASP.Net、IISNode、Node.JS、およびSQL ServerでSocket.IOを実装する方法は?

通知プロジェクトの場合、イベント通知をプッシュアウトしたいと思います。これらは、ログイン、プロファイルの変更などであり、適切なクライアントに表示されます。それをまとめる上でいくつかのアイデアについて話し合い、最善のアプローチについてアドバイスをもらいたいと思います。

here CouchDBに加えられた変更は、_changesストリームで検出され、ノードによって取得され、プロセスが開始されることに気付きました。このようなものを実装したいと思います(SQL Serverを使用していますが、このレベルのエントリポイントは最善の解決策ではない可能性があります)。

CouchDBの例(データベースベースのイベントの検出、クライアントイベントに関心があるため、これは複雑になると思います)に従う代わりに、ユーザーログインなどのイベントが発生すると、メッセージが送信されると考えていました。 Nodeサーバーにいくつかのイベントの詳細(RESTfulリクエスト?)を送信します。このメッセージは処理され、接続されているすべてのクライアントにブロードキャストされます。適切なクライアントに通知が表示されます。

提案されたエコシステム:

  • .Net 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.JS
  • SQL Server 2008

これは、.Netフレームワーク(IISなど)を使用して既存のプロジェクトの上に構築されます。クライアントのブラウザの多くはWebソケットをサポートしていないため、Socket.IOを使用することをお勧めします(フォールバックサポート)。ただし、 わかります から、Socket.IOはIISNodeを介した長いポーリングのみをサポートします(これは実際には問題ではありません)。

オプションとして、Socket.IO/Nodeエンドポイントをすべてのクライアントに公開し、クライアントベースの通知をJS経由でNodeサーバーに送信して、メッセージをブロードキャストできるようにします。(基本的なチャットサーバー/ client/serverの例)。

または、IISエンドポイントを使用することもできますが、サポートできるのは(Socket.IOを介した)長いポーリングのみです。これにより、追加の.Netバックエンド処理が提供されますが、複雑になりすぎる可能性があります。建築。

ノードで使用できるSQLServerベースのイベント通知はありますか?

最善のアプローチは何でしょうか?

用語のエコシステム構成が正しく理解できなかった場合は、明確にしてください。

ありがとう。

14
ElHaix

既存のASP.NETアプリケーションのテクノロジの組み合わせにiisnode/node.jsを追加することを検討する前に、まず SignalR を確認することをお勧めします。

WebSocketに関しては、ASP.NETまたはnode.js(socket.io)のどちらを使用するかに関係なく、WebSocketはWindows8までHTTP.SYS/IISでサポートされていないため、低遅延通知にはHTTPロングポーリングのみを使用できます。現在、WebSocketをサポートしています(Windows 8でも)が、そのようなサポートは後で追加される可能性があります。

私は最近、node.jsからのMSSQLアクセスに関していくつかの調査を行いました。そこにはいくつかのOSSプロジェクトがあり、それらのいくつかはネイティブのプラットフォーム固有の拡張機能を使用し、いくつかは純粋にJavaScriptでTDSプロトコルを実装しようとします。 SQL通知機能にアクセスできるようになるものはありません。ただし、MSSQLチーム自体がnode.js用のファーストクラスのMSSQLドライバーに投資しているため、これは今後の注目を集めるものです( https://github.com/tjanczuk/iisnode/issues/139 )。

SQL通知を使用して低遅延通知をサポートすることを計画している場合は、SQLサーバーレベルで必要なレベルのトラフィックをシミュレートするパフォーマンスベンチマークから始めることを強くお勧めします。 SQL通知は、主にデータベースのコンテンツと整合性のあるメモリキャッシュを維持するためのメカニズムとして意図されていたため、通知シナリオの要件を満たす場合と満たさない場合があります。最低限、これらの測定値は、より良い設計から始めるのに役立ちます。

13
Tomasz Janczuk

プッシャー を使用することを強くお勧めします。それが私たちが使用しているものであり、ホスト型ソリューションであるため、実装が容易になります。したがって、プラグを差し込んで機能させるのは本当に簡単です。あなたが大規模にそれを通して狂った量のメッセージをプッシュするつもりでない限り、それはそれほど費用がかかりません。

2
Matt Watson