2012-03-05 9 views
14

通知プロジェクトの場合は、イベント通知をプッシュします。これらは、ログイン、プロフィールの変更などのようなもので、適切なクライアントに表示されます。私はそれをまとめることについていくつかのアイデアを話したいと思いますし、最良のアプローチについていくつかアドバイスを受けています。イベントベースのプッシュ通知用にASP.Net、IISNode、Node.JS、およびSQL ServerでSocket.IOを実装する方法は?

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

私はクライアントイベントに興味があるので、データベースベースのイベントを検出すると、これはちょっと複雑に思えると思いますが、ユーザーログインなどのイベントが発生するといくつかのイベントの詳細(RESTfulな要求?)とともにNode Serverにメッセージが送信されます。このメッセージは処理され、接続されているすべてのクライアントにブロードキャストされます。適切なクライアントが通知を表示します。

  • .NET 4.0
  • のNode.js
  • SQL Server 2008の

この意志Socket.IO

  • IISNode
  • をIIS:生態系が提案

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

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

    また、IISエンドポイントを使用することもできますが、(Socket.IOを介して)ロングポーリングしかサポートできませんでした。これにより、いくつかの.Netバックエンド処理が追加されますが、アーキテクチャが複雑すぎる可能性があります。

    ノードに対してSQL Serverベースのイベント通知が利用できますか?

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

    用語の生態系構成の権利がわからない場合は、明確にしてください。

    ありがとうございました。

  • 答えて

    13

    iisnode/node.jsを既存のASP.NETアプリケーションの技術の組み合わせに加えることを検討する前に、まずをチェックアウトすることをお勧めします。

    ASP.NETまたはnode.js(socket.io)を使用している場合でも、Windows 8までWeb.SocketがHTTP.SYS/IISでサポートされていないため、待機時間の短い通知にのみHTTP長いポーリングを使用できますiisnodeは現在(Windows 8でも)ウェブソケットをサポートしていませんが、このようなサポートは後で追加できます。

    最近、node.jsからのMSSQLアクセスに関する調査を行ったそこにはいくつかのOSSプロジェクトがあり、その中には固有のプラットフォーム固有の拡張機能を使用するものもあれば、純粋にJavaScriptでTDSプロトコルを実装しようとするものもあります。私はあなたがSQL Notifications機能にアクセスすることを可能にするものは認識していません。しかし、MSSQLチーム自体がnode.js用のファーストクラスのMSSQLドライバに投資しているので、これは今後の方向性を見据えたものです(https://github.com/tjanczuk/iisnode/issues/139)。

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

    +0

    ありがとうTomasz。 SignalRの実装については、非常に良い点があります。しかし、問題は、プロジェクトがレガシーASPコードと.Netコードの間で断片化されているため、現在はJavaScriptベースの通信(C#ではなく)がおそらく最良の選択であると思います。私がSignalRの概念を正しく取得している場合は、プロジェクトが.Netに完全に移行された後、SiglanRに切り替えます。 Node.JS、IISNode、およびSocket.IOのウォークスルーがありますか?また、いくつかのSQL Serverのオプションを見て、しかし、このアプリのために過剰です。 – ElHaix

    +0

    修正:従来のASPコードで使用できるWCFサービスとして.Net 4.0でSignalRアプローチを実装します。解決済み。 – ElHaix

    +1

    Tomasz - iisnodeのドキュメントでこの制限を明確にすることができますか?私はWindowsソケットにiisnodeとnodejsをインストールしました.WebSocketのサポートを使用することを主な目的としていましたので、Windowsでnginxまたはapacheを使用しているか、Linuxに移行しています。 – jnoss

    1

    Pusherを使用することを強くお勧めします。これが私たちが使用しているもので、ホスティングされたソリューションとして実装するのが簡単です。だから、それを差し込んで動作させるのはとても簡単です。それはあなたが大規模にそれを介してメッセージの狂った量をプッシュしようとしていない限り、多くの費用はかかりません。

    +0

    こんにちはマット - 「プッシャー」のリンクがありますか? – pithhelmet

    関連する問題