2

データベースからデータを読み取る Windows サービスを開発しました。データベースは ASP.net MVC アプリケーションを介して読み込まれます。

データベースに選択クエリを発行して、サービスがメモリ内のデータを再ロードするようにする必要があります。この再読み込みは、Web アプリによってトリガーされます。これを達成するためのいくつかの方法を考えました。たとえば、Remoting、MSMQ、または単純にサービスがソケットでリロード コマンドをリッスンするようにすることです。

これに対する最善のアプローチは何かについての提案を探しています。

4

3 に答える 3

2

通知はどの程度信頼できる必要がありますか? 通知が失われた場合 (通信パイプがルーターでヒックアップし、ソケットがドロップされたとします)、世界の終わりが来るか、それとも通常どおりのビジネスになりますか? サービスがダウンしている場合、Web サイトからの通知は、起動時にキューに入れる必要がありますか? それとも、安全に削除できますか?

必要とする信頼性が高いほど、キュー ソリューション (MSMQ) に移行する必要があります。信頼性が問題にならない場合は、さまざまな非キュー ソリューション (リモーティング、TCP、UDP ブロードキャスト、HTTP 呼び出しなど) から選択できます。

セキュリティについてまったく気にしませんか?攻撃者があなたの「更新」に ping を送信して死に至らしめ、少なくとも DoS を引き起こすことを恐れていますか? 'refresh' 呼び出しを行う Web サイトを認証しますか? 通知のプライバシー (つまり、暗号化) が必要ですか? UDP は保護するのがより困難です (セッションなし)。

ソリューションは、現場での展開、構成、および管理を容易にする必要がありますか (つまり、スタンドアロンのパッケージ化された製品です)、または何かが変更された場合に「ジャストインタイム」で修正できる 1 回限りの展開ですか?

これらすべての要因の詳細を知らずに、「X を使用する」と言うのは困難です。少なくとも 1 つ確かなことは、リモーティングはもはや時代遅れになっているということです。

オンザフライでバインディングを簡単に変更できるため、コードを変更せずにさまざまな構成 (TCP、ネット パイプ、http) をテストできるため、WCF を使用することをお勧めします。

ところで、 Web サイトからのアクティブな通知の代わりに、クエリ通知を使用してデータの変更を検出することを検討しましたか? これは暗闇の中のショットだと思いますが、同等のアクティブ キャッシュ サポートが多くのデータベースに存在します。

于 2009-08-11T21:00:40.327 に答える
1

Windows サービス内で WCF サービスをホストするだけです。netTcpBindingTCP/IP 経由でバイナリを使用するバインディングに使用できます。これはソケットよりもはるかに単純ですが、開発と保守が容易です。

于 2009-08-11T20:56:07.527 に答える
0

私は標準のTCPソケットを使用します-これは、あらゆる種類のコンポーネントの移動に耐え、構成の問題を最小限に抑えます。

于 2009-08-11T20:48:07.963 に答える