The declarative model has the following problems
- Forces you to inherit from Serviced component limiting any class modeling that you may want to implement.
- Always makes use of MSDTC even if the transaction is local and restricted to only one resource. MSDTC is mainly used for transactions that span multiple resources and is a huge overhead on transactions involving only one resource.
- Forces you to use the COM+ model such as stateless objects et al.