Member 10617417 Ответов: 2

Разница между синхронными и асинхронными веб-сервисами в asp.net


Привет.
Может ли кто-нибудь объяснить мне, в чем разница между синхронными и асинхронными веб-сервисами в asp.net с примером


Спасибо
Киран

2 Ответов

Рейтинг:
8

Pranav-BiTwiser

First lets clear your doubt about Synchronous and asynchronous

Synchronous communication is direct communication where the communicators are time synchronized. This means that all parties involved in the communication are present at the same time. This includes, but is not limited to, a telephone conversation (not texting), a company board meeting, a chat room event and instant messaging.

Asynchronous communication does not require that all parties involved in the communication to be present at the same time. Some examples are e-mail messages, discussion boards, blogging, and text messaging over cell phones. In distance (specifically online) education asynchronous communication is the major (sometimes the only) method of communication. Usually, we use different discussion boards in each class with each having its own purpose.


e.g. synchronous

When I call you on the phone, I dial your number and WAIT until you pick up. Then you say something, and in the very same moment I listen to you. When you finished, I send you data (talk to you) and in the same moment you receive them (listen to me). At the end of our communication one of us says "END OF TRANSMISSION" (Good Bye), the other says "Acknoledged" (Good Bye) and then both ring off.

asynchronous

I write you a letter. I put it to the postoffice, and it will be sent to you. I the meantime I do NOT WAIT. I do many different other things. Then you receive the letter. You read it while I still do many different other things. Then you write me an answer and send it to me. In all those things I am not involved. At the next day I get a (synchronous) message (a signal) from the system (postman). It (he) says: "Here is a message for you". Alternatively I could poll my inbox every five minutes to check if a new letter is there. Then I pause my other work, receive your letter and read your answer. Then I do something according to this answer. But this are things you will not notice, because you are not involved in what I do with your asynchronous answer.



Теперь поговорим о веб-сервисах---




Асинхронное обслуживание

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

Если вы настроите это как "синхронную" веб-службу (используя определение WCF), то вызывающему клиенту придется ждать завершения обработки, и обычно это блокируется на одном из серверов. asp.net рабочие потоки во время завершения обработки. Для сервиса с высоким трафиком это может стать проблематичным.

Если вы настроили это как асинхронную веб-службу, то вы говорите, что ваш код собирается делегировать часть длительной обработки другому потоку или использовать неблокирующий механизм, и что это вернется в какой-то момент в будущем (если вы используете c# 5.0, то вы можете посмотреть примеры ключевых слов async и await).

Например, чтение большого файла может быть выполнено с помощью одного из асинхронных методов ReadFile.

Это не заблокирует ни один из asp.net рабочие потоки, позволяющие потенциально увеличить пропускную способность. Клиент обычно должен вызывать эту службу другим способом, либо используя ключевые слова async, либо опрашивая для завершения, в зависимости от того, как она настроена.