All services that exist on the Internet must, logically, be accessed over Internet channels. The underlying structure of the Internet requires you to communicate over Hypertext Transfer Protocol (HTTP) to do this. This means that HTTP communications exist behind all services.
HTTP uses a request/response methodology. Your application makes a request to a web service, and in return, it can receive a response. For example, you might send a request to a web service for product names that start with the letters sta and receive a response containing a list of results. However, responses are optional; sometimes you don't need them. And responses without requests (known as push notifications) require a different way of thinking about things and different programming techniques, as you'll see in Chapter 10.
Various service architectures are built on top of HTTP and make use of the way in which it works. Some, like REST, are simple in nature and provide, by intention, a thin wrapper on top of HTTP. Others, like WCF, are more complex and supply you with a host of powerful features that would otherwise require a lot of code to implement independently.
In this section, you'll learn about HTTP, REST, and WCF services in a little more detail so that you have a little background before you dive into writing code. This section isn't intended to provide exhaustive descriptions of these services. Instead, the information here should help to clarify things as you start ...