TOTD #16: Optimizing Metro Stubs by locally packaging the WSDL
By arungupta on Nov 08, 2007
When Metro stubs are used to invoke a Web service endpoint, two invocations are made over the network - one for retrieving the WSDL and the other for sending the request message.
The second invocation is easy to explain because that's when the actual message is sent to the endpoint.
The first invocation to retrieve the WSDL is necessary because the generated stubs contain only the portable method signatures and annotations. All the binding specific information, such as quality-of-service policy assertions, are retrieved at the runtime. This approach was taken because of two reasons:
- All the binding information cannot be captured in the generated stubs
- Quality-of-service may change between the stub generation and actual invocation.
However if the WSDL is not expected to change then you can consider locally packaging the WSDL with the client. In this case the locally packaged WSDL, instead of accessing over the network, is used to retrieve the binding information.
Several screencasts are available to get you started with Metro.
Please leave suggestions on other TOTD that you'd like to see. A complete archive is available here.