IBM, IONA, Oracle, SAP, and Sun worked together over the past couple weeks to submit a detailed proposal for EPR metadata to the WS-Addressing Working Group (WG). Our proposal is to change the EPR slightly, to look like this:
<wsa:EndpointReference>
<wsa:Address<xs:anyURI</wsa:Address>
<wsa:ReferenceParameters>...</wsa:ReferenceParameters> ?
<wsa:Metadata>...</wsa:Metadata> ?
<xs:any/>*
</wsa:EndpointReference>
The difference with this approach is that WSDL, policy, and other metadata is specified within the <wsa:Metadata> property.
IMO this modified EPR is better than the existing approach for a few reasons:
- It removes WSDL artifacts from the main EPR body. The two WSDL artifacts in the current EPR, the interface name and service name, are kinda out of place when you think about it. The basic EPR holds an address and reference parameters. Not all services are WSDL-based, so why should WSDL information, even optional information, be viewed as being just as fundamental as address and ref params? Even the current editors' drafts of WS-Addressing prove this out, given that those two WSDL properties are described in both the core spec and the WSDL binding spec. Shouldn't they be in just one or the other, rather than in both? This proposal moves the optional WSDL fields into the optional metadata property, where they belong.
- It allows full use of WSDL, rather than the bare minimum that's currently allowed. The two existing WSDL properties in the current EPR are barely enough to use a WSDL-based service. With our metadata proposal, full WSDL service elements (both 1.1 and 2.0) can optionally appear directly in the metadata property, allowing services that use multiple ports and bindings to include that information within their EPRs.
- It provides a perfect place for future extensions, such as policies. The original WS-Addressing submission included a policies property for WS-Policy information, but since WS-Policy isn't (yet) a standard, the WS-Addressing standard can't refer to it. If and when WS-Policy is standardized, the extensibility of the metadata property provides a perfect place to put EPR policy metadata, and any other metadata.
- The proposal allows for choice. This proposal allows EPR creators to include or cache as much or as little WSDL addressing and other metadata in their EPRs as they deem necessary. Given that there is no single right WS addressing answer, but rather a range of correct answers depending on the problem at hand, choice is precisely what a fundamental standard like WS-Addressing should allow.
Check out the full proposal for all the details.
Hopefully this proposal will be discussed in the WG's upcoming teleconferences, and they'll adopt it. I honestly can't think of any technical reasons against it. I just hope it doesn't fall prey to standards politics.
