4

Windows / WPFアプリケーションをc#で記述しています。このアプリケーションは、パブリックサーバーでホストされているリモートデータベースに接続します。アプリケーションはすべてのシステムにインストールされます。ユーザーは、このアプリケーションによってデータベースに値を追加できます。誰かがデータベースに値を追加したときに、インストールされているすべてのWindowsアプリケーションに通知を送信するための通知メカニズムが必要です。

このシナリオを実装するための最良のアプローチを教えてください。

前もって感謝します。

4

2 に答える 2

1

データが変更されたときにアプリケーションに通知できる SQL Server のクエリ通知機能を使用できます。

以下のリンクを参照してください。

http://support.microsoft.com/kb/555893?wa=wsignin1.0

于 2013-01-04T10:16:10.317 に答える
0

アーキテクチャを一般化し、インターフェイス駆動型にすることで、基礎となるトランスポートを交換できるようにします。

public interface INotificationService
{
    event EventHandler NewNotification;
    void SendEvent(string eventDetails);
}

非常に単純な例として。

実装には、いくつか(数百)のオプションがあります。イベントがデータベースに入れられているとあなたは言いました。一意の増分整数キーがあることを確認すると、各クライアントからデータベースをポーリングして、最後のイベント ID のイベントを見つけることができます。それを 10 秒ごとに行うか、できるだけ早く行います。これは非常に小さなパフォーマンス ヒットであり、それほど効率的ではありませんが、非常にシンプルで信頼性が高く、データベースにイベントを配置しているため、既にデータベースにアクセスできます。

または、Web サービスまたは WCF サービスを作成することもできます。通常、Web サービスはポーリングする必要がありますが、WCF サービスは二重通信で構成できるため、ポーリングする必要はありません。

その他のオプションには、MSMQ、または他のメッセージング ソリューションの 1 つ、RabbitMQ、Tibco などがあります。それはすべて詳細に依存します。

ここで重要なことは、最初のインターフェイスとそれに対するコードがあることを確認することです。そうすれば、データベースのポーリングが遅くなりすぎて Tibco にアップグレードする必要がある場合、非常にローカライズされた単純な変更になります。

于 2013-01-04T09:58:41.903 に答える