Under the umbrella of interoperability falls a variety of programming issues. One of the primary issues concerns the protocols that allow for communication, interaction, and data exchange. Another critical issue is the schema of the data being exchanged. In recent years, we have observed the standardization process, which moves forward incrementally and is far from complete.

HTTP (Hypertext Transfer Protocol), which is broadly accepted and supported, was the first step to building a programmable Web. HTTP standardized the transportation layer of the anticipated infrastructure. To make a long story short, HTTP is always a valid protocol for communicating with remote applications.

Raw ASCII text was the natural type of information to exchange using HTTP, and although it worked well for a large number of applications, it wasn’t appropriate for all of them. In the programming world, as in everyday life, the more you have, the more you want, and the more precise and circumstantial your demand is. So although ASCII text worked pretty well, it wasn’t good enough because you couldn’t tag all its information, and a better option was needed. XML surfaced as the standard way to describe data across machines and platforms. Shortly after XML came SOAP and, for you, the ability to use standard techniques to issue remote method calls.

XML schemas and Web Services nearly complete the puzzle of interoperability. After these pieces are fully integrated in our work, all we need is a standard way to search and query for data. As I write this book, this standardization is under way.

In the next chapter I’ll delve into .NET Web services and its cross-platform applicability. In this chapter, you learned about the concept of interoperability. We started out making old (Windows DNA) and new (.NET) Windows systems work together, and then we tackled the more general challenge of making data available outside the native platform—in this case, the .NET platform. XML (including schemas and serialization) can make data widely available as can object serialization in the context of .NET.