基本的にデータベースのフロントエンドである、さまざまな古い学校のクライアント サーバー C# WinForm クライアント側アプリがあります。次に、クライアント アプリが注文を送信するのを待機し、注文を処理する C# サーバー側 Windows サービスがあります。
サーバー側サービスが実行する作業があるかどうかを確認する方法は、データベースをポーリングすることです。何年にもわたって、待機中の注文をポーリングするロジックは、無数のビジネス ルールのためにさらに複雑になりました。このため、ポーリング ストアド プロシージャ自体は、何もする必要がない場合でも、かなりの量の SQL Server リソースを使用します。これに加えて、注文が送信された瞬間に注文が処理されるという要件が追加され、データベースが絶えずポーリングされているため、パフォーマンスの問題が発生します。
セットアップは実際には今のところ問題なく動作していますが、負荷が屋根を通り抜けようとしているため、持ちこたえられないことは明らかです.
多数の異なるクライアント側アプリとサーバー側 Windows サービスの間で通信するための効果的な方法は何ですか?現在の方法よりも将来性がありますか?
データベース サーバーは SQL Server 2005 です。実際に最新の SQL Server にアップグレードするほどの力を手に入れることはできますが、その戦いには参加したくありません。