Some time back, I wrote an article on, "The Convergence of Peer and Web Services". At the time I was trying to build some software on top of JXTA and realized that what it really needed was web service interfaces. The JXTA team (Sun) was willing to have web service capabilities as add-on's but refused to have it in the core. It was clear to me that this was a failing proposition - my team attempted some things like creating a bridging framework (see Jockey). Jockey was a hack - don't get me wrong - considering the fact that the web service designers were thinking "centrally distributed" (UDDI) while the P2P guys were thinking "resiliency first" it was a happy medium.
I recently had to write some code to parse up WS-Inspection documents and it hit me that WS-Inspection was a first step towards P2P based web services. I was happy that the location of the inspection document was easy to find, easy to parse and physically close to the service it described. Ultimately I think that WS-Inspection was designed correctly - however, it needs complementary specifications to address some additional aspects - like:
- Show me the services that have consumed me lately (a most recently used-by list)
- Show me other endpoints that agree to this contract (a list of same service, but other providers)
Now, some of this is covered in UDDI - and perhaps that is where this stuff will land. However, the UDDI spec seems to be growing and growing and growing. It's growth seems to be more around how to make one big ass, formal UBR. This is good and bad - the requirements for a golden repository with slaves are similar to a peer-to-peer contract repository. Thus, UDDI (although overkill) might just do it.
One of the things that the P2P guys got right (IMHO) is that they realized that finding services (peer or web) isn't always a formal process. In a P2P world, as you bump into servers, you are informed of additional services. In essence, each peer brags about the services it knows about. In the Web Services world this doesn't happen - the only way find a service is by intentionally hitting a UDDI, WS-Inspection or knowing a URL. This sucks. Perhaps it is time to formalize, "My Favorite Web Services".
All in all, I don't think I was wrong - perhaps early. One thing that is clear to me is that it will be web services in the forefront and p2p used as an add-on (e.g., SOAP binding for JXTA, SOAP binding for Jabber, etc.) Then, each of these transport providers will have to provide translation services (translate idl contracts, translate transaction contracts, etc.)
Eventually the concepts between these domains will merge. Now the question is, will it be Graham Glass setting the standard or Microsoft?