Порты завершения ввода-вывода для одновременного доступа к базе данных - PullRequest
2 голосов
/ 11 марта 2009

У меня есть служба .NET WCF, которая должна обрабатывать несколько клиентских запросов одновременно.

Служба выполняет вызовы базы данных (как чтение, так и запись) для каждого запроса клиента.

Могут ли порты завершения ввода-вывода быть полезными для частей доступа к базе данных этого кода для улучшения одновременной производительности? Как они будут использоваться в такой ситуации?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2009

ADO.NET 2.0 поддерживает выполнение асинхронных команд, которые внутренне используют порты завершения ввода-вывода. (Методы BeginXXX и EndXXX)

Выезд http://msdn.microsoft.com/en-us/library/ms379553(VS.80).aspx

0 голосов
/ 24 марта 2009

Это зависит от того, как вы выполняете чтение и запись в базу данных. Если вы используете какие-либо прямые вызовы ввода / вывода через сокет или файл, вы можете увеличить количество вызовов, которые вы можете обслуживать одновременно. Однако время фактического чтения / записи в базу данных зависит от сервера.

Но очень вероятно, что вы обращаетесь к базе данных через ODBC / OLEDB / ADO / ADO.NET, и в этом случае эти библиотеки не используют порты завершения ввода-вывода. И вы не можете заставить их использовать порты завершения ввода / вывода.

Порты завершения ввода-вывода используются для предотвращения блокировки вашего потока, когда он ожидает завершения ввода-вывода. Думайте об этом как асинхронное чтение / запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...