What are web services and why do we care?

What are web services and why do we care?

To understand the benefits of web services and even what they are, it helps to think back a bit to life before the advent of the Web. It was very difficult for diverse kinds of computers to communicate; they each had their own protocol stacks and translation was tricky. The Web offered a lowest-common-denominator approach, making text its foundation with HTML and sending it over one standard protocol, HTTP. This created a revolution. Suddenly web browsers running on any platform could communicate with web servers on any platform, and they didn't need to know or care where those resources resided.

In essence, web services create the same type of revolution, but this time for programs. Integrating disparate applications is the bane of the IT professional. Integration work requires using specialized application programming interfaces (APIs) or complex standards such as DCOM and CORBA to communicate between applications. Further, when applications are upgraded, the integrations typically break and must be refactored.

Web services strip this process down from programmatic remote procedure calls to simple text messages, which are exchanged between systems. With the help of web services, integrators do not need to know or care whether the application they will be interoperating with is written in Java, C++, C#, Perl, or ABAP. It simply doesn't matter, as we will see.

Here's a formal definition of web services:

Web services are self-contained and self-describing application functionalities that can be processed through open Internet standards.

Web services are, in essence, small, modular applications that communicate using a text format and open Internet standards.

Their modularity is important because we can create and expose services slowly and organically with a gradual adoption plan. We can expose existing application functionality as services, allowing reuse instead of reinventing the wheel. Their small scope allows us to respond quickly to changing business conditions, introducing new services as needed. We will unpack the more formal definition further as we go, but this is enough to get you started.

 Python   SQL   Java   php   Perl 
 game development   web development   internet   *nix   graphics   hardware 
 telecommunications   C++ 
 Flash   Active Directory   Windows