It is well admitted that if we want to have SOA more policy-driven we must stop to manually compose services together. And this can mostly be achieved through extended metadata (I mean more than WSDL). WSDL was a nice beginning but:
- Is is limited to Web services, and not all services are Web services. For instance some existing mainframes applications, transactions, green screens, APIs of packaged applications and Stateless Session EJBs are also services.
- Relationships between entities are missing.
- There is nothing about behavior of services.
The whole Semantic Web is an ambitious set of projects. However, when it comes to data access in SOA, we have to deal with the same kind of issues. Accessing a data services layer is more complicated than accessing a databaase, because it publishes a business interface instead of a technical interface. Therefore, if we want to dynamically compose data services together, as opposed to hard-code the combinations, we need some kind of semantic metadata about the data manipulation behavior.
That dynamic aspect is fundamental for modern Data Services Platforms and is quite often missing in first generation technologies.
The first step of SOA was all about designing, deploying and consuming services. The second step is now all about dynamically designing, dynamically deploying and dynamically consuming services. We cannot spend all our time in manually connecting thousands of services together.