Microsoft announced at PDC '08 that .NET 4.0 would include an implementation of WS-Discovery. Conformance to this protocol would allow service consumers to locate providers dynamically at run-time. I'm sure I don't have to tell you that this capability in often needed when implementing large-scale connected systems. These new discovery capabilities provide two ways to locate services:
- Using a known, centralized repository (what Microsoft and others are calling the "managed model")
- Using ad-hoc discovery wherein services broadcast their arrival and departure from the network
The latter is restricted to a single subnet IINM and is analogous to DHCP.
This new functionality is not brand new. It is based on the WS-Discovery sample code that was released on NetFX years ago (which is still available today on the Microsoft code gallery). It has been enhanced to support the new draft standard that has recently been submitted to OASIS for ratification, many bugs have been fixed of course, and other enhancements have been made.
Even with these improvements, I would advise against using WCF Discovery for the following reasons:
- Discoverable services cannot be hosted in WAS.
- There is no Windows Server role that can be added to provide a centralized repository for discovery.
- It depends on .NET 4.0 which currently has no ship date (to my knowledge).
Because there is no server role, we will all end up building the equivalent of such a role. Then, Microsoft will come along with Windows Server vNext and, ta-da, it will have a repository role for run-time service discovery just like what happed with WF and Dublin: A bunch of us wrote complex workflow hosts and suffered through all the pain points just to have Microsoft come along afterwards with their own enterprise-caliber workflow host. Lastly, the dependence on .NET 4.0 means that your shipping date has to be really soft. Given all this, I can't see why anyone would seriously consider using WCF Discovery at this time unless they are in the service repository business, already have a .NET-based product that is shipping in 2011 (or so), and need to be augment it to conform to WS-Discovery.
What do you do today if you need discovery capabilities like those that will eventually be provided by WCF Discovery? (For goodness sake, don't even think about UDDI; that is for design-time discoverability not run-time! ) I would look to one of the established vendors in this space. I've heard from colleagues that Software AG's run-time repository is unusable, so axe them from your list. Based on my research and product evaluation, I would suggest checking out SOA Software or AmberPoint. From a cursory investigation that I did in H1 of 2008, I would lean toward AmberPoint. Their run-time repo seemed to be a real differentiator.
If I haven't persuaded you, I know that Microsoft is looking for customers to participate in their TAP program for WCF Discovery.