2011-07-15 9 views
1

これがシナリオです。C# - クライアントにプッシュ通知を送信するサーバーに関する設計上の質問 - 実装方法

私のアプリケーションには複数のクライアントがあり、1つのサーバーがあります。 サーバー自体がクライアントから切断され、Windowsサービス(WebサービスとFTP)を介してWebからデータをダウンロードし、データを処理し、すべてのクライアントが接続されているデータベースを更新し、データを取得します。

私はクライアントに積極的に通知することができたいと思います。ダウンロードが発生した場合(つまり、価格/取引の更新が発生した場合は唯一のトレーダー、何かがある場合はエンジニアのみ) )ポーリングなしで。

サーバーは、更新がある場合、継続して「尋ねる」のではなく、接続されたすべてのクライアントに通知する必要があります。この場合、すべてのクライアントで状態を維持する必要があるからです。

私はマトリックスでXMPPを考えました。

これを行うには、各クライアントはWindowsサービスとの永続的な接続を開く必要がありますが、これを実装する方法の詳細は不明です。ノード付き! 私が理解しているところでは、XMPPは私が達成したいことにぴったりであり、必要があればさらに機能を拡張する拡張性を与えます。

自分のサーバーを実装するか、既存のサーバーを使用するかわかりません(jabberd2には優れたWindowsサーバーがあります)。

しかし、私はWindows上で動作するXMPPサーバーと、B)C#ライブラリについての提案が必要です。マトリックスのほかに、私は非常に少数しか見つかりませんでしたが、何よりも私は通知のサポート(pubsub)が必要です。

+0

MQを見ましたか?例:NServiceBus、RabbitMQ、ActiveMQ。これらのすべてがpubsubをサポートしており、.netクライアントを持っています – LostInComputer

+0

IISサーバーを使用したくない理由がありますか? .NETでは、リモーティングを使用してクライアント上のリスナーを作成して、サーバーの変更を通知することができます。 – Eduard

+0

@pebrianこれらの存在を知りませんでした。 @Eduard私はソースを開くことができるくらいスティックしていますが、ありがとう、私はそれを考慮に入れます。 – SimoneF

答えて

1

簡略化のため、私はlong polling技術を実装したWCFサービスの使用を検討したいと思います。 This articleでは、WCFサービスを効率的に拡張する方法についていくつかの詳細を示します。

SQL Serverを使用している場合は、データベースに新しいデータがあることを通知するには、SqlDependencyを試してください。これは、指定されたクエリの結果が変化するたびにコード内で発生するイベントを設定することを可能にします。私はこの種のもののために効果的に使ってきました。

+0

うわー、エリック、私はそれを調べるでしょう。 – SimoneF

関連する問題