2

クライアントが .NET Remoting を使用してサーバーと通信するクライアント サーバー アーキテクチャがあります。サーバーは、すべてのビジネス ロジックとデータベースのやり取りを処理します。実行に時間がかかり、返されるデータセットが非常に大きくなる可能性がある操作を追加する必要があります。そのために非同期呼び出しを採用することを考えています。ここで問題が発生します。クライアントがこの非同期呼び出しを行い、操作が SQL クエリを開始し、ユーザーがクライアントを閉じるか [キャンセル] をクリックすると、操作はどうなるでしょうか? SQL サーバーとの通信でビジー状態になっている保留中の非同期呼び出しをキャンセルする方法はありますか?

ありがとう。

4

2 に答える 2

1

クライアントから別の呼び出しを受け取る準備ができているように、サーバーがワーカー スレッドに SQL 処理を実行させるように、クライアント/サーバーの対話を設計できます。そのため、クライアントは呼び出し 1 を行い、SQL 作業を行うように言います。サーバーはその作業をワーカー スレッドに渡し、新しい受信の準備が整います。次に、クライアントはコール 2 を発信し、「気にしないでください」と言います。サーバーは、ワーカー スレッドが完了したときにクライアントにコールバックしないように、いくつかの簿記を行います。

サーバーはワーカー スレッドを安全に中断できますか。わからない。それは、SQL Server の動作に何らかの影響を与えるでしょうか。わからない。

于 2008-11-12T03:10:46.060 に答える
0

クライアントがアプリケーションを閉じたときに進行中の通話をどうしますか? 非同期呼び出しでも同じことができます。

はい、非同期は長時間実行される要求に対応する方法です。結果セットが十分に大きい場合は、サーバーからのいくつかの応答でそのチャンクを送信することも考えられます。

ユーザーが [キャンセル] をクリックすると、結果に関心がないことを示す新しいメッセージがサーバーに送信されます。SQL リクエストがスレッド プールで実行されている場合、実際にはキャンセルできません。

于 2008-11-27T15:00:56.567 に答える