15

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

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

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

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

  • .Net 4.0
  • IIS
  • IISノード
  • Socket.IO
  • Node.JS
  • SQL Server 2008

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

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

別の方法として、IIS エンドポイントを使用することもできますが、サポートできるのは (Socket.IO を介した) ロング ポーリングのみです。これにより、追加の .Net バックエンド処理が提供されますが、アーキテクチャが過度に複雑になる可能性があります。

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

最善のアプローチは何ですか?

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

ありがとう。

4

2 に答える 2

15

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

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

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

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

于 2012-03-05T17:56:26.237 に答える
2

Pusherの使用を強くお勧めします。それが私たちが使用しているものであり、ホストされたソリューションであるため、実装が簡単になります. そのため、プラグインして機能させるのは非常に簡単です。膨大な量のメッセージを大規模にプッシュしない限り、それほど費用はかかりません。

于 2012-08-30T02:50:31.330 に答える