Return to
HomePage
Checklist: Web Services Performance
Source:
http://msdn.microsoft.com/library/en-us/dnpag/html/ScaleNetCheck09.aspJ.D. Meier, Srinath Vasireddy, Ashish Babbar, Rico Mariani, and Alex Mackman
Design Considerations
* Design chunky interfaces to reduce round trips.
* Prefer message-based programming over remote procedure call (RPC) style.
* Use literal message encoding for parameter formatting.
* Prefer primitive types for Web service parameters.
* Avoid maintaining server state between calls.
* Consider input validation for costly Web methods.
* Consider your approach to caching.
* Consider approaches for bulk data transfer and attachments.
* Avoid calling local Web Services.
Connections
* Configure the maxconnection attribute.
* Prioritize and allocate connections across discrete Web services.
* Use a single identity for outbound calls.
* Consider
UnsafeAuthenticatedConnectionSharing with Windows Integrated Authentication.
* Use
PreAuthenticate with Basic authentication.
Threading
* Tune the thread pool using the formula for reducing contention.
* Consider
minIoThreads and
minWorkerThreads for intermittent burst load.
One Way (Fire and Forget) Communication
* Consider using the
OneWay attribute if you do not require a response.
Asynchronous Web Methods
* Use asynchronous Web methods for I/O operations.
* Do not use asynchronous Web methods when you depend on worker threads.
Asynchronous Invocation
* Consider calling Web services asynchronously when you have additional parallel work.
* Use asynchronous invocation to call multiple unrelated Web services.
* Call Web services asynchronously for UI responsiveness.
Timeouts
* Set your proxy timeout appropriately.
* Set your ASP.NET timeout greater than your Web service timeout.
* Abort connections for ASP.NET pages that timeout before a Web services call completes.
* Consider the
responseDeadlockInterval attribute.
WebMethods
* Prefer primitive parameter types.
* Consider buffering.
* Consider caching responses.
* Enable session state only for Web methods that need it.
Serialization
* Reduce serialization with
XmlIgnore. * Reduce round trips.
* Consider XML compression.
Caching
* Consider output caching for less volatile data.
* Consider providing cache-related information to clients.
* Consider perimeter caching.
State Management
* Use session state only where it is needed.
* Avoid server affinity.
Attachments
* Prefer Base64 encoding. Direct Internet Message Encapsulation (DIME) is a supported part of Web Services Enhancements (WSE), but Microsoft® is not investing in this approach long-term. DIME is limited because the attachments are outside the SOAP envelope.
COM Interop
* Avoid single-threaded apartment (STA) COM objects.
Return to
HomePage