Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Checklist: Web Services Performance


Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

patterns & practices Developer Center

Improving .NET Application Performance and Scalability

J.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman
Microsoft Corporation

May 2004

Related Links

Home Page for Improving .NET Application Performance and Scalability

Send feedback to Scale@microsoft.com

patterns & practices Library

How to Use This Checklist

This checklist is a companion to Chapter 10, "Improving Web Services Performance"

Design Considerations

Ff647682.checkbox(en-us,PandP.10).gifDesign chunky interfaces to reduce round trips.
Ff647682.checkbox(en-us,PandP.10).gifPrefer message-based programming over remote procedure call (RPC) style.
Ff647682.checkbox(en-us,PandP.10).gifUse literal message encoding for parameter formatting.
Ff647682.checkbox(en-us,PandP.10).gifPrefer primitive types for Web service parameters.
Ff647682.checkbox(en-us,PandP.10).gifAvoid maintaining server state between calls.
Ff647682.checkbox(en-us,PandP.10).gifConsider input validation for costly Web methods.
Ff647682.checkbox(en-us,PandP.10).gifConsider your approach to caching.
Ff647682.checkbox(en-us,PandP.10).gifConsider approaches for bulk data transfer and attachments.
Ff647682.checkbox(en-us,PandP.10).gifAvoid calling local Web Services.


Ff647682.checkbox(en-us,PandP.10).gifConfigure the maxconnection attribute.
Ff647682.checkbox(en-us,PandP.10).gifPrioritize and allocate connections across discrete Web services.
Ff647682.checkbox(en-us,PandP.10).gifUse a single identity for outbound calls.
Ff647682.checkbox(en-us,PandP.10).gifConsider UnsafeAuthenticatedConnectionSharing with Windows Integrated Authentication.
Ff647682.checkbox(en-us,PandP.10).gifUse PreAuthenticate with Basic authentication.


Ff647682.checkbox(en-us,PandP.10).gifTune the thread pool using the formula for reducing contention.
Ff647682.checkbox(en-us,PandP.10).gifConsider minIoThreads and minWorkerThreads for intermittent burst load.

One Way (Fire and Forget) Communication

Ff647682.checkbox(en-us,PandP.10).gifConsider using the OneWay attribute if you do not require a response.

Asynchronous Web Methods

Ff647682.checkbox(en-us,PandP.10).gifUse asynchronous Web methods for I/O operations.
Ff647682.checkbox(en-us,PandP.10).gifDo not use asynchronous Web methods when you depend on worker threads.

Asynchronous Invocation

Ff647682.checkbox(en-us,PandP.10).gifConsider calling Web services asynchronously when you have additional parallel work.
Ff647682.checkbox(en-us,PandP.10).gifUse asynchronous invocation to call multiple unrelated Web services.
Ff647682.checkbox(en-us,PandP.10).gifCall Web services asynchronously for UI responsiveness.


Ff647682.checkbox(en-us,PandP.10).gifSet your proxy timeout appropriately.
Ff647682.checkbox(en-us,PandP.10).gifSet your ASP.NET timeout greater than your Web service timeout.
Ff647682.checkbox(en-us,PandP.10).gifAbort connections for ASP.NET pages that timeout before a Web services call completes.
Ff647682.checkbox(en-us,PandP.10).gifConsider the responseDeadlockInterval attribute.


Ff647682.checkbox(en-us,PandP.10).gifPrefer primitive parameter types.
Ff647682.checkbox(en-us,PandP.10).gifConsider buffering.
Ff647682.checkbox(en-us,PandP.10).gifConsider caching responses.
Ff647682.checkbox(en-us,PandP.10).gifEnable session state only for Web methods that need it.


Ff647682.checkbox(en-us,PandP.10).gifReduce serialization with XmlIgnore.
Ff647682.checkbox(en-us,PandP.10).gifReduce round trips.
Ff647682.checkbox(en-us,PandP.10).gifConsider XML compression.


Ff647682.checkbox(en-us,PandP.10).gifConsider output caching for less volatile data.
Ff647682.checkbox(en-us,PandP.10).gifConsider providing cache-related information to clients.
Ff647682.checkbox(en-us,PandP.10).gifConsider perimeter caching.

State Management

Ff647682.checkbox(en-us,PandP.10).gifUse session state only where it is needed.
Ff647682.checkbox(en-us,PandP.10).gifAvoid server affinity.


Ff647682.checkbox(en-us,PandP.10).gifPrefer 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

Ff647682.checkbox(en-us,PandP.10).gifAvoid single-threaded apartment (STA) COM objects.

patterns & practices Developer Center

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

© 2015 Microsoft