Enterprise Services (.NET 1.1) Performance Checklist

From Guidance Share
Revision as of 06:22, 30 October 2006 by Admin (talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to navigationJump to search

J.D. Meier, Srinath Vasireddy, Ashish Babbar, Rico Mariani, and Alex Mackman

Design Considerations

  • Use Enterprise Services only if you need to.
  • Use library applications if possible.
  • Consider DLL and class relationships.
  • Use distributed transactions only if you need to.
  • Use object pooling to reduce object creation overhead.
  • Design pooled objects based on calling patterns.
  • Use explicit interfaces.
  • Design less chatty interfaces.
  • Design stateless components.

Object Pooling

  • Return objects to the pool promptly.
  • Monitor and tune pool size.
  • Preload applications that have large minimum pool sizes.

State Management

  • Prefer stateless objects.
  • Avoid using the Shared Property Manager (SPM).

Resource Management

  • Optimize idle time management for server applications.
  • Always call Dispose.
  • If you call COM components, consider calling ReleaseComObject.

Queued Components

  • Use queued components to decouple client and server lifetimes.
  • Do not wait for a response from a queued component.

Loosely Coupled Events

  • Consider the fire in parallel option.
  • Avoid LCE for multicast scenarios.
  • Use Queued Components with LCE from ASP.NET.
  • Do not subscribe to LCE events from ASP.NET.


  • Choose the right transaction mechanism.
  • Choose the right isolation level.
  • Use compensating transactions to reduce lock times.


  • Use a trusted server model if possible.
  • Avoid impersonating in the middle tier.
  • Use packet privacy authentication only if you need encryption.


  • Avoid STA components.


  • Use locks or mutexes for granular synchronization.