Enterprise Services (.NET 1.1) Performance Checklist
From Guidance Share
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.
Transactions
- Choose the right transaction mechanism.
- Choose the right isolation level.
- Use compensating transactions to reduce lock times.
Security
- Use a trusted server model if possible.
- Avoid impersonating in the middle tier.
- Use packet privacy authentication only if you need encryption.
Threading
- Avoid STA components.
Synchronization
- Use locks or mutexes for granular synchronization.