SOA and Web services are becoming the most popular key words in nowadays software industry. As a results of that there are so many other technologies and components build around SOA. Among them ESB and Registry can be considered as top of the list. Different people have different definitions for them and there are a number of different implementations out there as well. It is a very hard questions to answer whether the ESB is more important or the Registry when it comes to SOA.
When we considering about SOA registry , which is of course not a new concepts. UDDI is one of the good example for a traditional way of dealing with SOA registry. I can not tell the exact reason but UDDI does not become that popular , that is why people try to find new alternatives for UDDI (based on SOAP , REST etc.. ). So if someone going to implement a new SOA registry then I think he has to address following items,
The implementations should be provide a way to publish services as well as service related metadata such as WSDL , XML Schema and etc..
The implementations should provide a way to discover the service. Say for a example I need to find GPS service , then from the registry I should be able to find out one or more end point addresses for that service. And invoke the service.
Different implementations should be able to communicate with each other and share , validate data and so on. This is also a key feature in SOA governors.
So no matter how and who is going to implement a SOA registry , they need to address above. IMO without having support for at least first two items of above we can not claim what we have is a SOA Registry.
In addition to those SOA governors is also key factor we need to consider when we implement SOA registry. Governors is more about management side of the services. Service lifecycle , different kind of policy , ensuring various standard like WS-I , and then validating artifact like WSDL , Schema and Policy is also part of SOA governors.
In any given registry we can find two stages deployment time as well as runtime. At the deployment we will be using the registry to store various artifacts , however at the run time we will use the registry to authenticate , authorize , ensuring policy etc...