Checklist: Remoting 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 11, "Improving Remoting Performance"

Design Considerations

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use .NET remoting for communicating between application domains in the same process.
Ff647679.checkbox(en-us,PandP.10).gif Choose the right host.
Ff647679.checkbox(en-us,PandP.10).gif Choose the right activation model.
Ff647679.checkbox(en-us,PandP.10).gif Choose the right channel.
Ff647679.checkbox(en-us,PandP.10).gif Choose the right formatter.
Ff647679.checkbox(en-us,PandP.10).gif Choose between synchronous or asynchronous communication.
Ff647679.checkbox(en-us,PandP.10).gif Minimize round trips and avoid chatty interfaces.
Ff647679.checkbox(en-us,PandP.10).gif Avoid holding state in memory.

Activation

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use client-activated objects (CAO) only where you need to control the lifetime.
Ff647679.checkbox(en-us,PandP.10).gif Use SingleCall server activated objects (SAO) for improved scalability.
Ff647679.checkbox(en-us,PandP.10).gif Use singleton where you need to access a synchronized resource.
Ff647679.checkbox(en-us,PandP.10).gif Use singleton where you need to control lifetime of server objects.
Ff647679.checkbox(en-us,PandP.10).gif Use appropriate state management to scale the solution.

Lifetime Considerations

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Tune default timeouts based on need.

Hosts

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use Internet Information Services (IIS) to authenticate calls.
Ff647679.checkbox(en-us,PandP.10).gif Turn off HTTP keep alives when using IIS.
Ff647679.checkbox(en-us,PandP.10).gif Host in IIS if you need to load balance using network load balancing (NLB).

Channels

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use TcpChannel for optimum performance.
Ff647679.checkbox(en-us,PandP.10).gif Use the TcpChannel in trusted server scenarios.

Formatters

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use the BinaryFormatter for optimized performance.
Ff647679.checkbox(en-us,PandP.10).gif Consider Web services before using the SoapFormatter.

Marshal by Reference and Marshal by Value

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Use MBR (marshal by reference) when the object state should stay in the host application domain.
Ff647679.checkbox(en-us,PandP.10).gif Use MBR when you need to update data frequently on the server.
Ff647679.checkbox(en-us,PandP.10).gif Use MBR when the size of the object is prohibitively large.
Ff647679.checkbox(en-us,PandP.10).gif Use MBV (marshal by value) when you need to pass object state to the target application domain.
Ff647679.checkbox(en-us,PandP.10).gif Use MBV when you do not need to update data on the server.
Ff647679.checkbox(en-us,PandP.10).gif Use small MBV objects when you need to update data frequently on the server.

Serialization and Marshaling

Check Description
Ff647679.checkbox(en-us,PandP.10).gif Consider using a data facade.
Ff647679.checkbox(en-us,PandP.10).gif Marshal data efficiently and prefer primitive types.
Ff647679.checkbox(en-us,PandP.10).gif Reduce serialized data by using NonSerialized.
Ff647679.checkbox(en-us,PandP.10).gif Prefer the BinaryFormatter.

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.

© Microsoft Corporation. All rights reserved.