Web services simplified
ZapThink LLC, special to SearchWebServices
by Jason Bloomberg
One of the few shining lights in today's murky Internet technology environment is the area of Web services. Spearheaded by Microsoft's .NET initiative, Sun's SunOne architecture, and IBM's WebSphere platform, Web services promise a new level of compatibility across multiple technology platforms. Many companies who still have R&D budgets are pouring time and money into Web services, and an alphabet soup of technologies are springing forth: WSDL, SOAP, and UDDI, to name a few.
The ideas behind Web services are reasonably straightforward. Start with XML. XML -- the eXtensible Markup Language -- forms the backbone of the Web services movement. This straightforward language provides a "least common denominator" method for different systems to talk to each other. Next, use XML to create a set of industry standard protocols for finding companies, describing and exchanging information, and handling transactions between companies. Add water, and voila! You have a brave new world of automated eCommerce.
On the other hand, maybe what you really have is nothing more than a new spin on some old technologies. Web services look an awful lot like distributed component-based technologies that have been in wide use for a few years now (for example, CORBA, RMI, and DCOM, for you acronym-lovers out there). So, what's going on? Are Web services the key to eCommerce compatibility nirvana? Or are they nothing more than an incremental development in the never-ending saga of technology companies looking for new stuff to sell?
Only time will tell, of course, but there are fundamental differences between Web services and distributed technologies that just might provide a new level of compatibility and flexibility, just as promised. To understand these differences without having to immerse yourself in the technical details, it helps to have an understanding of how distributed technologies have developed.
For most of the history of computing, programming has been performed on a computer-by-computer basis. Programs are discrete chunks of computer code that run on one computer. This isolated computer mindset has been around so long that it pervades all thinking about software.
Then along came networks, and that mother of all networks, the Internet. People realized that computer programs did not necessarily have to reside on individual computers. So they developed distributed computing techniques that enabled programs to be broken up into pieces, with different pieces running on different computers.
The problem is, programmers still had that isolated computer mindset. So each of these distributed technologies took basically the same approach: write your programs so that the remote computer appears to be a part of your own computer. Take all the code that handles the communication between computers, and hide it from the programmer. If a programmer needs some code that lives on someone else's computer, they might make a simple request, and the hidden machinery of the distributed platform packages up the remote code and ships it to the programmer.
Believe it or not, this is the way most distributed computing takes place today, in spite of two glaring problems. First of all, the code on each of the two computers typically must be completely compatible. Same platform, same programming language, and even the same conventions about what everything means. If any detail is out of whack, then nothing works the way it should.
The second big problem is the security issue. Shipping pieces of executable code around the Internet has proven to be a serious security risk, because of the danger of including malicious code, like computer viruses.
What the software world needs is a different way of thinking about distributed computing. This new way of thinking is called a Service Oriented Architecture, which is the backbone for Web services. Instead of shipping pieces of programs around, develop a set of widely accepted rules for programs to advertise what services they can offer, how they can find other services, and then how to take advantage of those remote services.
What's new and different about Web services isn't how they work on a technical level. After all, XML is really quite simple, as are the other building blocks of Web services. What's different is that Web services represent a different way of thinking about distributed computing. Instead of focusing on executing code located on remote computers, focus instead on how to describe and organize services in a way that supports the ability to discover and interact with other services dynamically, on an as-needed basis.
The great promise of Web services is that distributed components will be able to work togther seamlessly. Instead of devoting massive resources to system integration, Web services have an automatic way of telling other services how they want to communicate. As a result, entire architectures will be snapped together like a bunch of Lego blocks.
So, how realistic is that promise? As usual, the devil is in the details. Two systems can be 99% compatible, and that remaining 1% will soak up most of your resources. Chances are, the Web services technologies that become established this year and next will get us closer to the Lego block nirvana, but we won't quite get all the way there yet. There's no question, however, that we're making progress toward the ultimate goal of plug-and-play compatibility.
Copyright 2002 ZapThink LLC provides quality, high-value, focused research, analysis, and insight on emerging technologies that will have a high impact on the way business will be run in the future. To register for a free email subscription to ZapFlash, click here.
For More Information:
- For insightful opinion and commentary, read our Guest Commentary columns.
- Tired of technospeak? The Web Services Advisor column provides a clear understanding of Web services.
- Looking for shortcuts and helpful developer tips? Visit our Tip Exchange for time-saving XML and .NET tips.
- Visit our huge Best Web Links for Web Services for hand-picked resources by our editors.
- Discuss this article, voice your opinion or talk with your peers in our Discussion Forums.
- Visit Ask the Experts for Web services, SOAP, WSDL, XML, .NET, Java and EAI answers.