On the current project we integrate several subsystems together and considered the way to discover that subsystems.
There are two possible ways for this – WS-Discovery and UDDI. The keynote is that WS-D doesn’t replace the UDDI, rather, it’s a lightweight option.
But what to use and under which circumstances?
We are started from the WS-Discovery (we used this WCF implementation) and afterwards understood that it doesn’t meet our needs. What’s wrong you may ask? There is nothing wrong with WS-D. The only problem that it’s too "reactive" – more then we need.
So, we decided to not support WS-D and rely upon UDDI (damn, I can’t start it working with already installed WSS :( )
Googling a bit I’ve found a good presentation about UDDI vs WS-D. (PowerPoint presentation UDDI)
I’d like to cite the gist
- UDDI provides discovery for services that are always connected to the network.
- WS-D discovers system for sometimes connected services.
- UDDI has to handle with out-of-date service entry information
- WS-D discovers system with dynamically updated entries.
- UDDI provides discovery for only registered services
- WS-D discovers services which not exist in any central registry.
- UDDI provides a central registry
- WS-D is discovery system which performs on distributed registries on ad hoc and managed networks