Skip to main content

Web services insider, Part 1: Reflections on SOAP

How far have we come?

James Snell (jasnell@us.ibm.com), Software Engineer, Emerging Technologies, IBM, Software Group
James Snell is both an author and a developer and is one of the newest members of the IBM Web Services development team. He comes to IBM with an extensive background in custom enterprise application development and business-to-business integration, and a passion for the cutting edge of Web technology. You can reach him at jasnell@us.ibm.com.

Summary:  What is the current state of the "Web services revolution?" In this, the first installment of my new column titled "Web services insider," I'll answer this question by reviewing the tools and technologies that have emerged over the past year, highlighting their differences and similarities.

Date:  01 Apr 2001
Level:  Introductory
Activity:  2211 views

Hello and welcome to the column dedicated to exploring the evolving world of Web services from the inside out. Over the course of the next few months I will examine, in great depth, the fundamental principles of the Web Services Architecture as well as pay special attention to the core promise that drives this new, quickly evolving, emerging technological paradigm: interoperability.

I will begin, however, not by looking forward to what Web services will bring us in the future, but by taking a quick look back at just how far Web services have come, what the current playing field looks like in terms of tool availability, and offering some insight into just how far we have to go in order to make this exciting new set of technologies viable and competitive.

From whence we came

If it seems to you that this whole concept of Web services exploded onto the Internet development scene very quickly, you're all too correct. As difficult as it is to believe, the building blocks of this new paradigm (SOAP, WSDL, and UDDI) are no more than just a few months old and yet are already having a massive impact on the way we think about designing, developing, and deploying Web-based applications.

The Simple Object Access Protocol (SOAP [see Resources]) was born out of an idea for an XML-based RPC mechanism originally fostered by Dave Winer of Userland Software back in 1998. The idea evolved through a joint effort of Winer, Don Box at DevelopMentor, and Microsoft to publicly emerge as SOAP version 0.9 in the latter part of 1999. At that time, the reaction of the developer community was mixed. My own reaction, if I recall correctly, was that SOAP looked like a cool toy, but it was a long way from being useful. Things change quickly. Soon after the release of SOAP 0.9 came the release of SOAP 1.0, which brought with it many improvements and broadening support among developers.

IBM officially joined the SOAP development effort in May of 2000 by coauthoring the SOAP version 1.1 specification (see Resources) and cosubmitting it as a W3C Note, officially signaling the start of the "Web services revolution." With IBM on board, developers on non-Microsoft development platforms stood up and took notice of SOAP for pretty much the first time. The promise of seamless cross-platform interoperability between loosely coupled and dynamically integrated applications was a powerful lure that fit in perfectly with Java's development philosophy.

From that point on, Microsoft and IBM took the lead in putting SOAP-enabled development tools into the hands of developers. Starting simple, IBM was the first to produce a Java-based toolkit for SOAP (see Resources) that was promptly donated to the open-source Apache Software Foundation for further development. Microsoft released the first rendition of their SOAP Toolkit soon thereafter and announced their massive .NET Web services initiative the following July.

With industry support for SOAP growing rapidly, IBM and Microsoft next turned their attention to filling the various holes in the Web Services Architecture that was emerging. Namely, with the potential that SOAP-enabled applications would grow rapidly, there needed to be a mechanism for describing the capabilities of such services as well as a mechanism for locating services once they had been deployed. In September of last year, Microsoft, IBM, and Ariba jointly announced the Universal Description, Discovery and Integration initiative (UDDI [see Resources]) that would provide an open specification and a set of tools for discovering Web services deployed on the Internet. Then, just a matter of weeks later, the same three companies announced the Web Services Description Language (WSDL [see Resources]), an XML-grammar for describing the capabilities and technical details of SOAP-based Web services that compliments SOAP by allowing for dynamic cross-platform integration.

In future installments of this column, I intend to discuss how each of these three complimentary yet distinct technologies work together to provide the foundation of the Web Services Architecture and how IBM is leading the charge to drive the most value out this new paradigm in Web development.


You are here

Looking at where we've been often gives us great insights into where we are and where we need to go. Looking back at the time line, I'm happy to say that Web services is reaching the first stage of technology maturity - and that is acceptance. The Web development world is beginning to see Web services as a viable tool to accomplish what so many older, larger, and bulkier technologies could not: seamless interoperability between platforms and operating systems. This is made obvious by the fact that nearly every major player in the Web Development industry is looking at how they can best take advantage of SOAP and the other Web Service enabling technologies.

Today, the types of applications that you can create with the Web Services Architecture are, for the most part, fairly simplistic toys intended mostly to help developers grasp the fundamental concepts as opposed to demonstrating true enterprise-scale applicability of the platform. Now, granted, while there are some exceptions to this status, the fact remains that if you take a good look at the maturity of Web services development tools as compared to say the Java Enterprise SDK or the Microsoft COM+ Platform, it is clear that there still remains quite a bit of work to be done to unleash the true potential of Web services upon the enterprise development community.

So, what does this statement mean? It means that in the enterprise environment, SOAP, WSDL, and UDDI have yet to be tried, tested, and proven to work and work well. Does it mean that, as a developer, or as a technology decision maker, you should not look to Web services to solve enterprise-level problems? Or, even more drastically, that you should not even dare a look at SOAP until time and effort has allowed the tools implementing these standards to evolve to a state of maturity suitable for mission-critical environments? Absolutely not! While I would not quite yet deploy SOAP, WSDL, and UDDI based Web services into enterprise environments, as I mentioned before, this area is evolving and growing very quickly. Enterprise-ready tools such as Microsoft's .NET Platform and the Apache Axis Engine (both of which are still currently in development) promise to deliver a high level of value, performance, and stability upon which to build enterprise Web services. By learning and experimenting with SOAP today, your development team will gain critical experience that will help them succeed with this new development paradigm. Perhaps just as important, their experiences will assist those of us building these tools to refine and tweak them to meet the ever-challenging requirements of our customers.


The playing field

At last count, I know of at least 39 different implementations of the SOAP Specification with growing support for multiple operating systems and development languages. While each of these all have their own level of capability, standards support, and quality control, they all share at least one thing in common: they all understand how to create and consume SOAP Envelopes. The significance of this fact should not be underestimated. This simply means that regardless of how the tool was implemented, or where it is deployed, there exists the potential of seamless interoperability that would allow applications written in one language on one platform to consume the services of applications written in a completely different language on a completely different platform.

Below is a side-by-side feature comparison of four of the most popular SOAP implementations available for the Java, Win32, and Perl environments. As you can tell from the results, there are far more similarities between implementations than differences in specific SOAP or SOAP-related features that are supported. This is a good thing because it means that we're getting closer and closer to realizing SOAP's true potential. The differences that do exist, however, are, in some cases, significant enough to cause quite a few headaches if you don't know the secrets to getting around them (anybody who has tried to use the Microsoft Toolkit with Apache SOAP can attest to this fact). I plan to discuss many of these differences in-depth in an upcoming article, so stay tuned.

FEATURECHOICESApache SOAP v2.1SOAP::Lite For PerlMS SOAP Toolkit Beta 2
SOAP 1.1 compliance      
  Data types     
   Custom Encoding Styles (yes/no/limited)Yes No Limited
    Arrays       
       Single Dimensional (yes/no/limited) Yes Yes Yes
        Multi-dimensional (yes/no/limited) No No Yes
        Partial (yes/no/limited) No No No
        Sparse (yes/no/limited) No No No
    Multireferences (yes/no/limited) Limited Yes Limited
    Header/Body cross references (yes/no/limited) Limited Yes Limited
    Circular References (yes/no/limited) No Yes No
    Entity Encoding (yes/no/limited) Yes Yes Yes
    Fault       
       Actor (yes/no/limited) Limited Limited Limited
        Complex Detail (yes/no/limited) Yes Yes Yes
    XML Schema Data types support (yes/no/limited) Yes Yes Yes
  Attributes       
    mustUnderstand (yes/no/limited) Limited No Limited
    actor (yes/no/limited) Limited Limited Limited
    root (yes/no/limited) Yes Limited No
    id/href (yes/no/limited) Limited Yes Limited
  HTTP       
 M-POST (yes/no/limited) No Yes No
 Object serialization (yes/no/limited) Yes Yes Yes
 UTF8 support (yes/no/limited) Yes Limited Yes
Transports       
  SMTP (no/full/client/server) Yes Client No
 POP3 (no/full/client/server) No Server No
  FTP (no/full/client/server) No Client No
 TCP (no/full/client/server) No Full No
  HTTP (no/full/client/server) Yes Server Yes
 IO (no/full/client/server) No Full No
  Access to transport specific details (like cookie) (yes/no) No Yes No
  Extensions (i.e. compression or encryption) (yes/no) – name extensions   Compression  
  SOAP Attachments Support (yes/no/limited) Yes Limited (Parsing Only) No
Security       
  SSL (yes/no/limited) Yes Yes Yes
  Basic/digest authentication (yes/no/limited) No Yes Yes
  Digital signatures (yes/no/limited) No No No
Administration and configuration       
  Logging (yes/no/limited) Limited Yes Yes
  File-based configuration (yes/no/limited) Yes No Yes
  Un/deployment (utility, web-based access) (yes/no/limited) Yes N/A Yes
Messaging patterns       
  One-way messages (yes/no/limited) Yes Yes No
  Asynchronous Messages (yes/no/limited) No No No
Dispatching       
  Namespace to class/object (yes/no/limited) Yes Yes Yes
  SOAPAction (yes/no/limited) Yes No Yes
  Other (name)      
Serialization support       
  Payload Generation (from Description/Manually) (manual/from description) Both Both Both
  Custom Serialization (yes/no/limited) Yes Yes Yes
  Custom Deserialization (yes/no/limited) Yes Yes Yes
Service description       
  WSDL       
    Can Read (yes/no/limited) No Yes Yes
    Can Generate (yes/no/limited) No No Yes
    Is Optional/Required (optional/required) N/A Optional Optional
    Stub Required (Static/Dynamic) (static/dynamic) Static Both, Optional Dynamic
    Complex Types (yes/no/limited) N/A No Yes
    Other (name)     Message encoding extension
Error handling(yes/no/limited) Yes Yes Yes

Building common ground

The most amazing thing about the current effort to define and evolve this area of Web services is not the speed at which things are moving, but the fact that so many companies have signed on to the developement project and are working together to build a common ground of basic interoperability upon which they all can play. Microsoft and IBM, longtime rivals in the Web Development industry, have worked hand-in-hand, leading the charge to ensure that their tools can seamlessly communicate with one another by fully supporting the SOAP, WSDL, and UDDI specifications. Obviously, there is more work to be done; in fact, as I am writing this article a delegation from the IBM Web services team and the Apache SOAP development team are busily working with a group from Microsoft to work out whatever interoperability problems may exist between their various implementations.

One of the most common questions I see posted on the SOAP-related mailing lists deals with how to get a Microsoft SOAP client or server to communicate with an Apache or IBM WSTK client or server. The problems that most developers have with this scenario is getting around certain differences and limitations in the way that both Apache and Microsoft implemented the SOAP specification. In a future article I will provide an in-depth example of just how to go about doing this. Until then, be sure to download the latest version of Apache SOAP (at least version 2.1 [If you've already downloaded the IBM Web Services Toolkit version 2.1 or higher, then you already have Apache SOAP 2.1]) and the latest beta version of Microsoft's SOAP Toolkit (see Resources). Each of these updates provides improved interoperability as well as a host of other features that should prove to make your life easier.

Java developers using the Apache SOAP tools may also optionally download the IBM Web Services Toolkit (WSTK) or Web Services Development Environment (WSDE) -- two sets of tools that augment and extend the functionality of Apache SOAP. Available through alphaWorks, these preview technologies provide WSDL and UDDI support as well as a host of other features and development tools that fulfill the promise of a comprehensive Web services development platform.


So . . . now what?

Your next question should be: now what? I've taken a brief look at the history of Web services and a brief look at where it is now. I've told you that given the current state of the tools available to build Web services, it is not yet a good idea to go out and build your entire enterprise around Web services, but, at the same time, that the time is coming soon when you may be able to do just that. And I've provided you with a side-by-side comparison of the most popular SOAP tools currently available to help you get a head start on where to go if you need to develop Web services on a particular platform.

The next step that you should take would be to start learning about the Web services tools that are currently available:

  • If you haven't done so already, read the SOAP, WSDL and UDDI Specifications.
  • Download the latest version of the IBM Web Services Toolkit.
  • Study the sample Web services I've provided with the Toolkit.
  • Begin implementing your own Web services.

Resources

About the author

James Snell is both an author and a developer and is one of the newest members of the IBM Web Services development team. He comes to IBM with an extensive background in custom enterprise application development and business-to-business integration, and a passion for the cutting edge of Web technology. You can reach him at jasnell@us.ibm.com.

Comments (Undergoing maintenance)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=SOA and Web services
ArticleID=11510
ArticleTitle=Web services insider, Part 1: Reflections on SOAP
publish-date=04012001
author1-email=jasnell@us.ibm.com
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers