TOTD #16: Optimizing Metro Stubs by locally packaging the WSDL
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
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
screencasts are available to get you started with Metro.