Hopefully, this lecture is largely self-explanatory.  We start at the high level and dive slowly down, peeling away one layer of Web Services at a time.  First the architecture, then some of the associated mechanisms, then the notion of a remote method invocation or remote procedure call, and finally transport-level issues.

It is important for the students to appreciate that WS is an architecture, not an implementation -- there are already many implementations (IBM WebSphere, BEA WebLogic, Apache, Microsoft Indigo).  The implementations differ and each has its strengths, but all support the same architecture as seen from a mile up. At the time of this writing IBM had the largest market share, with the other three following it.  But Microsoft's platform seems to be gaining as the size of servers shrinks and the market becomes more and more of a commodity market.

Some parts of the architecture are optional and many have multiple competing standards -- for example, WS_RELIABLE_MESSAGING and WS_NOTIFICATION versus WS_EVENTING.  On my slide, the IBM business process "language" is shown as a layer; in fact Microsoft has a different angle on that, and only IBM supports this particular standard.  Personally I find the work on the IBM "business processing language for Web Services" rather interesting and hence cited it on this slide.  To talk about this you need to know a little about Sagas, which are called Business Transactions in the WS architecture -- think of these as Perl or Tcl or CShell scripts in which the actions are transactions and there are paths to follow if a transaction fails: "To travel to India I must fly to Frankfurt, then on to Bangalore.  In Bangalore I will need a hotel and transport to it, and should also try to schedule a meeting with my colleagues at Infosys...."  Each action could be implemented as a transaction and perhaps I have other options if something fails ("If hotels in Bangalore are full, try in the nearby city of ....") and so forth.