473,395 Members | 1,689 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Is HTTP an Async Protocol

Hi,

Simple question (although I guess with a complicated answer). Is HTTP
an async protocol? For instance, if I send a message to a c#
webservice via http what is the protocol actually doing?

Thanks in advance
Steffan

Jan 31 '06 #1
4 2447
> Simple question (although I guess with a complicated answer). Is HTTP
an async protocol?
Short answer, no.

Long answer: HTTP is a protocol. "asynch" is not relevant to protocols.
"asynch" (ansynchronous) is a term related to programming. It is a reference
to how a program performs certain types of operations. In a single-threaded
program, the program cannot execute more than one instruction at a time, as
a single thread cannot execute more than one instruction at a time.
Therefore, any instruction which takes a certain amount of time to execute
will "block" the execution of the thread until it is completed. In a
multio-threaded program, you have the option of performing operations
"asynchronously" (that is, independently of each other, wthout having to
wait).

A protocol is a standard for communication. Network protocols almost
entirely work in the same way that humans communicate. That is, a computer
sends a message to another computer, and the other computer responds to that
message. Since there are any number of reasons why a response might be
delayed, or even not occur, network applications generally use asynchronous
threads to communicate with other network resources. This way, the program
can create a thread to do the communication, and continue with other work.
When the communication thread receives a response, or times out waiting for
one, it can notify the application, via an event or callback, which can then
react to the response.

The HTTP protocol is a networking protocol. It defines a set of standards
for applications to communicate on a TCP network. This set of standards is
based upon a client-server Request/Response exchange. The client makes an
HTTP request of the HTTP server, which then responds with an HTTP response.
These requests and responses are at least partially in the form of text,
although binary data can accompany the message. The protocol itself,
however, is pure text.

For a quick and easy "crash course" on HTTP, see:

http://www.jmarshall.com/easy/http/

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Who is Mighty Abbott?
A twin turret scalawag.

"Bob Badger" <sj********@hotmail.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com... Hi,

Simple question (although I guess with a complicated answer). Is HTTP
an async protocol? For instance, if I send a message to a c#
webservice via http what is the protocol actually doing?

Thanks in advance
Steffan

Jan 31 '06 #2
Kevin Spencer wrote:
Simple question (although I guess with a complicated answer). Is HTTP
an async protocol?


Short answer, no.

Long answer: HTTP is a protocol. "asynch" is not relevant to protocols.
"asynch" (ansynchronous) is a term related to programming. It is a reference
to how a program performs certain types of operations. In a single-threaded
program, the program cannot execute more than one instruction at a time, as
a single thread cannot execute more than one instruction at a time.
Therefore, any instruction which takes a certain amount of time to execute
will "block" the execution of the thread until it is completed. In a
multio-threaded program, you have the option of performing operations
"asynchronously" (that is, independently of each other, wthout having to
wait).

A protocol is a standard for communication. Network protocols almost
entirely work in the same way that humans communicate. That is, a computer
sends a message to another computer, and the other computer responds to that
message. Since there are any number of reasons why a response might be
delayed, or even not occur, network applications generally use asynchronous
threads to communicate with other network resources. This way, the program
can create a thread to do the communication, and continue with other work.
When the communication thread receives a response, or times out waiting for
one, it can notify the application, via an event or callback, which can then
react to the response.

The HTTP protocol is a networking protocol. It defines a set of standards
for applications to communicate on a TCP network. This set of standards is
based upon a client-server Request/Response exchange. The client makes an
HTTP request of the HTTP server, which then responds with an HTTP response.
These requests and responses are at least partially in the form of text,
although binary data can accompany the message. The protocol itself,
however, is pure text.

For a quick and easy "crash course" on HTTP, see:

http://www.jmarshall.com/easy/http/


While still synchronous, HTTP/1.1 does support pipelining. Normally
each HTTP request is made one after the other. You can see this by
connecting (use telnet.exe to port 80) to a web server and issuing GET
commands. Using pipelining you can issue lots of commands all at once,
and get lots of response all at once. The commands can even finish out
of order and ultimately our http client libraries can act on those
commands out of order, this type of facilities helps enable our use of
asynchronous programming approaches.

See http://www.w3.org/Protocols/HTTP/Per.../Pipeline.html

Now the unknown question is: Do the various .NET Http libraries support
using pipelining? Could threads share a Http connection pool which
pipelines commands on open Http connections? Does it matter? How much
may this accelerate my use of Web Services.

Often I wish I had a job in research which would allow me to investigate
and answer these questions.
--
Jay R. Wren
Jan 31 '06 #3
you are not quite correct. TCP/IP is an asynchronous protocol (like most
network protocols). .net api webclient give a sync and async interface to
the protocol, which may confuse you.

the difference between a synchronous and asynchronous protocol is in timing.
a synchronous protocol (like an atm switch uses), has standard time slices,
and packets are guaranteed to be delivered in that timeslice.

HTTP is actually 3 layers

network layer (IP)
transport layer (TCP/IP)
session layer (HTTP)

IP is a an asynchronous datagram layer
TCP/IP is an asynchronous reliable delivery layer, the sender get
acknowledgement that each packet was received, and the receiver get packets
delivered in transmit order.

HTTP is a session layer. it is a simple send request, receive a response
protocol. when the client sends the request, it has no idea of how long the
response will take.

when a library supplies an api to a network protocol, it can supply a
blocking or nonblocking api. this is commonly referred to as synchronous /
asynchronous (but this is not strickly true, most operating systems run all
code asynchronously, as any real-time programmer will tell you). when in
blocking mode it looks synchronous, because the next statement will not run
until the network request completes, while in nonblocking mode you do not
which code statement will be executing when the request completes.

with a nonblocking api there are two approaches, one where your code polls
for a completion status (unix i/o approach), and a asynchronous trap mode,
where a completion routine (delegate in .net terms) is called when the
request completes.

this is all different then using a seperate thread for calling a blocking
api.
-- bruce (sqlwork.com)



"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Simple question (although I guess with a complicated answer). Is HTTP
an async protocol?


Short answer, no.

Long answer: HTTP is a protocol. "asynch" is not relevant to protocols.
"asynch" (ansynchronous) is a term related to programming. It is a
reference to how a program performs certain types of operations. In a
single-threaded program, the program cannot execute more than one
instruction at a time, as a single thread cannot execute more than one
instruction at a time. Therefore, any instruction which takes a certain
amount of time to execute will "block" the execution of the thread until
it is completed. In a multio-threaded program, you have the option of
performing operations "asynchronously" (that is, independently of each
other, wthout having to wait).

A protocol is a standard for communication. Network protocols almost
entirely work in the same way that humans communicate. That is, a computer
sends a message to another computer, and the other computer responds to
that message. Since there are any number of reasons why a response might
be delayed, or even not occur, network applications generally use
asynchronous threads to communicate with other network resources. This
way, the program can create a thread to do the communication, and continue
with other work. When the communication thread receives a response, or
times out waiting for one, it can notify the application, via an event or
callback, which can then react to the response.

The HTTP protocol is a networking protocol. It defines a set of standards
for applications to communicate on a TCP network. This set of standards is
based upon a client-server Request/Response exchange. The client makes an
HTTP request of the HTTP server, which then responds with an HTTP
response. These requests and responses are at least partially in the form
of text, although binary data can accompany the message. The protocol
itself, however, is pure text.

For a quick and easy "crash course" on HTTP, see:

http://www.jmarshall.com/easy/http/

--
HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Who is Mighty Abbott?
A twin turret scalawag.

"Bob Badger" <sj********@hotmail.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com...
Hi,

Simple question (although I guess with a complicated answer). Is HTTP
an async protocol? For instance, if I send a message to a c#
webservice via http what is the protocol actually doing?

Thanks in advance
Steffan


Feb 1 '06 #4
Thanks for the clarification Bruce. I suppose it's a matter of how one
interprets the question, and/or the definition of "HTTP" in the context of
the question. If you say that HTTP is 3 layers, which is true in one sense,
you are including the network and transport layer, which are not
HTTP-specific. TCP/IP and IP are used by many protocols. As the poster was
asking specifically about HTTP, I made an assumption which may or may not
have been correct about what he was asking. However, after your
clarification, I'm sure he has all the information he needs.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Who is Mighty Abbott?
A twin turret scalawag.

"Bruce Barker" <br******************@safeco.com> wrote in message
news:O8**************@TK2MSFTNGP15.phx.gbl...
you are not quite correct. TCP/IP is an asynchronous protocol (like most
network protocols). .net api webclient give a sync and async interface to
the protocol, which may confuse you.

the difference between a synchronous and asynchronous protocol is in
timing. a synchronous protocol (like an atm switch uses), has standard
time slices, and packets are guaranteed to be delivered in that timeslice.

HTTP is actually 3 layers

network layer (IP)
transport layer (TCP/IP)
session layer (HTTP)

IP is a an asynchronous datagram layer
TCP/IP is an asynchronous reliable delivery layer, the sender get
acknowledgement that each packet was received, and the receiver get
packets delivered in transmit order.

HTTP is a session layer. it is a simple send request, receive a response
protocol. when the client sends the request, it has no idea of how long
the response will take.

when a library supplies an api to a network protocol, it can supply a
blocking or nonblocking api. this is commonly referred to as synchronous /
asynchronous (but this is not strickly true, most operating systems run
all code asynchronously, as any real-time programmer will tell you). when
in blocking mode it looks synchronous, because the next statement will not
run until the network request completes, while in nonblocking mode you do
not which code statement will be executing when the request completes.

with a nonblocking api there are two approaches, one where your code polls
for a completion status (unix i/o approach), and a asynchronous trap
mode, where a completion routine (delegate in .net terms) is called when
the request completes.

this is all different then using a seperate thread for calling a blocking
api.
-- bruce (sqlwork.com)



"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Simple question (although I guess with a complicated answer). Is HTTP
an async protocol?


Short answer, no.

Long answer: HTTP is a protocol. "asynch" is not relevant to protocols.
"asynch" (ansynchronous) is a term related to programming. It is a
reference to how a program performs certain types of operations. In a
single-threaded program, the program cannot execute more than one
instruction at a time, as a single thread cannot execute more than one
instruction at a time. Therefore, any instruction which takes a certain
amount of time to execute will "block" the execution of the thread until
it is completed. In a multio-threaded program, you have the option of
performing operations "asynchronously" (that is, independently of each
other, wthout having to wait).

A protocol is a standard for communication. Network protocols almost
entirely work in the same way that humans communicate. That is, a
computer sends a message to another computer, and the other computer
responds to that message. Since there are any number of reasons why a
response might be delayed, or even not occur, network applications
generally use asynchronous threads to communicate with other network
resources. This way, the program can create a thread to do the
communication, and continue with other work. When the communication
thread receives a response, or times out waiting for one, it can notify
the application, via an event or callback, which can then react to the
response.

The HTTP protocol is a networking protocol. It defines a set of standards
for applications to communicate on a TCP network. This set of standards
is based upon a client-server Request/Response exchange. The client makes
an HTTP request of the HTTP server, which then responds with an HTTP
response. These requests and responses are at least partially in the form
of text, although binary data can accompany the message. The protocol
itself, however, is pure text.

For a quick and easy "crash course" on HTTP, see:

http://www.jmarshall.com/easy/http/

--
HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Who is Mighty Abbott?
A twin turret scalawag.

"Bob Badger" <sj********@hotmail.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com...
Hi,

Simple question (although I guess with a complicated answer). Is HTTP
an async protocol? For instance, if I send a message to a c#
webservice via http what is the protocol actually doing?

Thanks in advance
Steffan



Feb 1 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: turnit \(removethis\) | last post by:
I have a login form that uses the post method to carry the information to the next page. The form works just fine in ie6.0, but fails in mozilla and fails in ie5.2 on a mac. "HTTP/1.1 400 Bad...
0
by: David | last post by:
I am building a library that comunicate with a custom service through a custom protocol using Sockets. I want to implement a BeginExecute, so the command is sent to the server and I release the...
2
by: brendonlam | last post by:
Hi there, Hoping someone could advise me here pls; I'm creating a C# class that implements a telnet client socket allowing a VB . NET application to communicate with telnet servers. After...
3
by: Stig-Arne Basberg | last post by:
I am working on a project where I want to send at file from a Win CE device to a receiving PC using the HTTP protocol. For testing purpose I made a simple test app on my PC (code below). The...
0
by: Dan Diephouse | last post by:
I am working on developing a series of web services around the jabber protocol. I have written the necessary soap over jabber code on the server side (java) and am now working on the client side...
3
by: Sundar | last post by:
how d you classify a serial com port application as a asynchronous or a synchronous operation...Meaning if i hve a handshakeing protocol t b implemented then is it async or sync?
1
by: Rogier | last post by:
Hello, I'm Writing my own NZb download App, using Async Network Streams en Callback delegates. The Problem is that if I Want tot Receive Large chunks of data (for instance the LIST NEWSGROUPS...
10
by: Frankie | last post by:
It appears that System.Random would provide an acceptable means through which to generate a unique value used to identify multiple/concurrent asynchronous tasks. The usage of the value under...
2
by: dougmcmurtry | last post by:
I have an Asynchronous socket that sends data to a server for credit card approvals. The socket is kept alive by the server through a heartbeat that sends a "beat" every 90 seconds. Trouble is that...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.