複数のクライアント要求を一度に処理する必要がある.NET WCFサービスがあります。同時データベースアクセスのIO完了ポート
このサービスは、各クライアント要求に対してデータベース呼び出し(読み取りと書き込みの両方)を行います。
このコードのデータベースアクセス部分でIO完了ポートを使用すると、並列パフォーマンスが向上する可能性がありますか?このような状況では、どのように使用されますか?
複数のクライアント要求を一度に処理する必要がある.NET WCFサービスがあります。同時データベースアクセスのIO完了ポート
このサービスは、各クライアント要求に対してデータベース呼び出し(読み取りと書き込みの両方)を行います。
このコードのデータベースアクセス部分でIO完了ポートを使用すると、並列パフォーマンスが向上する可能性がありますか?このような状況では、どのように使用されますか?
どのようにデータベースの読み書きを行っているかによって異なります。何らかの種類のダイレクトソケットまたはファイル入出力コールを使用している場合は、同時に処理できるコール数を増やすことができます。ただし、データベースの読み取り/書き込みを実際に行う時間は、サーバーによって異なります。
しかし、ODBC/OLEDB/ADO/ADO.NETを介してデータベースにアクセスしている可能性があります。その場合、これらのライブラリはIO完了ポートを使用しません。また、IO完了ポートを使用させることもできません。
IOが完了するのを待っているときにスレッドがブロックされないようにするために、IO完了ポートが使用されます。それを非同期の読み込み/書き込みと考えてください。
ADO.NET 2.0は、IO完了ポートを内部的に使用するasyncコマンドの実行をサポートしています。 (BeginXXX & EndXXXメソッド)
チェックアウトhttp://msdn.microsoft.com/en-us/library/ms379553(VS.80).aspx