2009-08-11 15 views
2

データベースからデータを読み取るWindowsサービスを開発しました。データベースはASP.net MVCアプリケーションを使用して作成されます。2つの別々のアプリケーション間の通信

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

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

答えて

2

通知はどの程度信頼できるものですか?通知が紛失した場合(通信パイプにルータでヒートアップがあり、ソケットを落としているとします)、世界の終わりが来るか、いつものように営業していますか?サービスが停止している場合、Webサイトからの通知は、起動時にキューに入れられるようにするか、安全に削除できますか?

信頼性が高いほど、キューに入れられたソリューション(MSMQ)に向かう必要があります。信頼性に問題がなければ、待機していないソリューション(リモート、TCP、UDPブロードキャスト、HTTPコールなど)のミラージュから選択できます。

セキュリティに関してまったく気になりませんか?あなたは攻撃者が私のpingを「リフレッシュ」して死に至らないことを恐れていますか?もし悪化しないなら少なくともDoSを引き起こしますか? 「更新」コールを行っているWebサイトを認証しますか?通知のプライバシー(暗号化など)が必要ですか? UDPはセキュアにするのが難しい(セッションなし)。

ソリューションは、現場で簡単に展開、設定、管理できるようにする必要があります(つまり、スタンドアロンのパッケージ化された製品)か、何かがあった場合に「ジャストインタイム」に修正することができる変更?

これらの要因の詳細を知っている人は、「Xを使う」と言うのが難しいです。少なくとも1つのことは確かです。リモート処理は現在では時代遅れです。

私は、WCFを使用することをお勧めします.WCFは、バインディングをオンザフライで変更することが容易であるため、コード変更なしでさまざまな構成(TCP、ネットパイプ、HTTP)をテストできます。

ところで、Query Notificationsを使用して、ウェブサイトからのアクティブな通知ではなく、データの変更を検出すると考えましたか?私は暗闇の中でのショットだと思っていますが、多くのデータベースでは同等のアクティブキャッシュサポートが存在しています。

+0

多くの素晴らしい情報があります。ありがとうございます。 これはビジネス上重要ではないため、通知がキューに入れられているかどうかは気にしません。 私の経験は非常に限られていますが、私はWCFルートを調査します。クエリ通知も面白そうです。 –

+0

WCFにショットを付ける価値がある。 WCFがない場合は、TCPまたはUDPのいずれかのブロードキャストが送信されます。 RemotingとMSMQは過剰なようです。 –

0

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

1

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

+0

これは私が考慮していない1つのオプションです。私はそれを調べる提案に感謝します。 –

関連する問題