Получение преимуществ Async / Await на стороне сервера без изменения контракта на обслуживание - PullRequest
0 голосов
/ 25 сентября 2019

Потратил некоторое время на поиск в Google, но не нашел окончательного ответа и не уверен, как доказать это с помощью теста (предложения приветствуются).

У нас есть служба WCF с методом, который ожидает определенного события, чтобыпроисходят в цикле.В цикле он использовал Thread.Sleep, чтобы подождать несколько 100 мс, что много для службы (мы хотим изменить это. Не очень хорошая идея спать в службе, верно?).

Я бы хотелповысить пропускную способность, сделав метод асинхронным и используя вместо него Task.Delay, не изменяя контракт на обслуживание.После выполнения асинхронного метода и восстановления класса контракта кажется, что подпись контракта не повреждена.Я также вижу, что сгенерированный код теперь имеет машину состояний, которая, кажется, указывает, что он теперь асинхронный.

Мой вопрос заключается в том, получу ли я преимущество от того, что поток доступен для другой работы, даже если я вызову асинхронный вызовметод обслуживания синхронным способом?Будет ли фреймворк ждать метода обслуживания?

Br

1 Ответ

2 голосов
/ 25 сентября 2019

У меня вопрос: получу ли я преимущество от доступности потока для другой работы, даже если я вызову метод асинхронного сервиса синхронно?

Так что преимущества метода на стороне сервераасинхронность отключена от того, как клиент использует службу?

Асинхронность не зависит от стороны сервера и стороны клиента.Асинхронность на сервере обеспечивает большую масштабируемость (которая может увеличивать или не увеличивать пропускную способность).Асинхронность на клиенте обеспечивает отзывчивость пользовательского интерфейса.

Сетевое взаимодействие здесь является «делителем», поэтому любая сторона может обрабатывать его асинхронно или синхронно, независимо от другого приложения.

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