2009-06-11 7 views
1

テーブルからデータを読み込み(SQL 2005)、そのデータを他のアプリケーションに送信する必要があります5秒ごとに私は同じことをするための最善のアプローチを探しています。5秒ごとにSQL Serverからデータをクエリして他のアプリに送信するアドバイスが必要(NET C#)

今はSQL Server 2005(別のアプリケーションで作成されるQUEUEテーブル)からデータを読み込み、TCP/IPを介して他のアプリケーションに送信するコンソールアプリケーション(.NETとC#)を作成する予定です。中央サーバ)。スケジュールタスクの下でそのコンソールアプリケーションを5秒ごとに実行します。私はスケジュールされたタスクは、タスクがすでに実行されている場合(同時実行を実行しないように)新しい実行イベントを破棄するように注意していると仮定しています。

どのような身体も同様の状況になりますか?最良のアプローチについては、あなたの経験とアドバイスを教えてください。

あなたの貴重な時間を私のリクエストで事前に感謝します。

-Por-hills-

+0

キュー内の何かを変更する必要がありますか?読み込んだアイテムを削除したり、「完了済み」とマークしたりするなどしてください。 –

+0

こんにちはJoel、私のスレッドを試してくれてありがとう。 はい、完了したか保留中の他のアプリケーションから受信したACKに基づいてフラグを更新する必要があります。 – porhills

答えて

3

私たちはsimliarの仕事をしました。 5秒ごとにSQLデータベースを照会する場合は、非常に高速に最適化されたストアード・プロシージャーを使用してください。必然的に必要な場合を除き、データを更新すべきではありません。このアプローチは一般的に「ポーリング」と呼ばれ、SQL Serverがあまりにも多くの他の呼び出しに悩まされていない場合には受け入れられることがわかりました。

私が使ったアプローチでは、ポーリングを行うWindowsサービスがうまく機能します。

他のアプリに結果を伝えるには、他のアプリが何をやっているのか、どのタイプのインターフェースを作成できるのか、そして結果がどれくらい速く必要なのかによって決まります。マイクロソフトのWCFクラスライブラリは、リアルタイムコミュニケーションのための多くの実行可能なアプローチを提供します。私の好みは、アプリケーションデータベースに書き込んだり、アプリケーションにデータを読み込ませたり(そのアプリケーションで動作する場合)です。あなたが何かをリアルタイムで必要とするなら、WCFが行く方法です。私は、< 5秒の応答時間が必要な場合(標準のHTTPポストを使用して)、TCP/IPのような無期限のプロトコルを使用することをお勧めします。必須。

+0

こんにちはデール、私のスレッドを試してくれてありがとう。 はい、私は、SQLデータベースを照会するつもりですし、そのクエリは、ステータス=「ReadToSend」 私はWindowsサービスを使用することを考え SELECT GUIDのような非常に単純なselect文、InterfaceMessagesからのメッセージであるが、以下のブログを読んだ後混乱し、それがあるしています理由はここ のすべてからのアドバイスを受けていますが、リンクです:別のアプリにhttp://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspx 回答:他のアプリケーションがJavaであります着信要求に対して特定のポートを指定します。私thread.Hereを試みるため – porhills

0

私は5秒ごとに実行されるいくつかのタイマーを持っているWindowsサービスを(あなたがC#のであるから)の書き込みをお勧めします。そうすれば、いつでもアプリケーションを起動したり停止したりすることはなく、マシンに誰もログインしていなくても実行でき、マシンの再起動時に自動的に起動します。

+0

こんにちはT、私のスレッドを試してくれてありがとう。私はWindowsサービスを使用すると思ったが、読んだ後、次のブログは混乱しており、その理由が皆様からアドバイスを受けています。 http://weblogs.asp.net/jgalloway/archive/2005/10/ 24/428303.aspx – porhills

+0

ここでは、5秒ごとに1つのデータが送信されているのであれば、5秒ごとにデータが送信されているのではないかと思います。 Windowsサービスはまだ私にとって最良の選択肢のように聞こえる。 – Tetraneutron

+0

家の中に商品があるときにカスタムコードを書くのはなぜですか? SQL ServerエージェントジョブでスケジュールされたSSISパッケージを使用しますか?すべてのスケジューリング、エラー通知などが組み込まれています!私が心配しなければならないのは、ビジネス機能を自動化することだけです。 –

0

私のプロジェクトでは、定期的に何かをする必要がありました。私はサービスを選択し、データの読み取りを担当するタイマーを設定しました。あなたはその解決策を検討するかもしれません。それは私のためにうまくいった。

+0

こんにちは、スレッドを試していただきありがとうございます。私はWindowsサービスを使用すると思ったが、読んだ後、次のブログは混乱しており、その理由が皆様からアドバイスを受けています。 http://weblogs.asp.net/jgalloway/archive/2005/10/ 24/428303.aspx – porhills

0

アプリケーションではなくWindowsサービスを作成し、自分でタイミングを実行することをお勧めします。タイマーを作成し、各タイマーイベントで1つのステップを実行します。コミュニケーションには多くの選択肢があります。私は、WebサービスやWinows Communication Foundationのような標準的な技術の使用を検討します。

このカスタムソリューションの他に、Microsoft Integration Servicesを使用してタスクを解決できるかどうかを評価します。

最後にもう1つ質問があります。なぜこのアプリケーションが必要ですか?なぜデータを消費するアプリケーションがデータベースにクエリしないのですか?高価な投票が必要ですか?データ作成者は、新しいデータの利用可能性をデータ消費者に直接通知することは可能ですか?

+0

こんにちはダニエル、あなたの質問に私のthread.Answersを試してくれてありがとう: 我々は受注(原材料)配送ビジネスにあり、私たちは各csrマシン上で実行されるwinformアプリケーションがあり、それらの人々は注文を取るそれらの注文は1つのテーブルにキューイングされます。この注文は当社のバックエンドサービス(サードパーティ)を通じていっぱいになり、TCP/IPポートを介してそのバックエンドサービスにカスタマイズされたメッセージを送信する必要があります。 – porhills

0

あなたのプロジェクトの詳細、具体的にはセキュリティに関することはよく分かりませんが、SSISパッケージを作成してジョブとしてスケジュールするほうがよいでしょうか?

+0

こんにちはおかげで私たちは、注文している私のプロジェクトについての詳細 (原料)配信事業であり、私たちは各CSRのマシン上で実行され、それらの人々が電話を通じて注文を取るだろうし、それらの注文が意志Winフォームアプリケーションを持っています1つのテーブルにキューイングされます。この注文は、バックエンドサービス(サードパーティ)を通じて完全に満たされ、TCP/IPポート – porhills

+0

を介してそのバックエンドサービスにカスタマイズされたメッセージを送信する必要があります。私はあなたがWCFとのメッセージ交換を探求したいと思うかもしれないと思うが、それは私が専門家ではないものだ。 – CountCet

1

私はあなたの中央記憶域もSQL 2005であると想定しているため、SQL Server 2005が提供するものを使用して要件を満たすことを検討しましたか? 5秒ごとにプールするのではなく、TCP/IPをマーシャリングおよび非マーシャリングし、TCP/IPパイプの認証と認可を実装し、ボックス転送でTCP転送をスケーリングし、メッセージの承認と再試行を管理し、セントラルサイトのアベイラビリティを処理し、大きなメッセージを断片化し、送信などの理由で、単にService Brokerを使用しないのはなぜですか?すでにテスト済みで、パフォーマンスとスケーラビリティのために既に調整されている、必要な機能をすべて備えています。

信頼できるメッセージングの権利を得ることは自明ではなく、ビジネスの特質を満たすために努力する必要があります。

+0

私はSQL Service Brokerについて考えていない。私はdefenetlyあなたのオプションを見ていきます。アドバイスありがとうございます。 – porhills

関連する問題