Biztalk Orchestration vs .Net Class library Reusable code

Which is better for a non workflow based code that needs to be called from orchestrations.

I believe that the .Net component is a better choice :


1. .Net Component

  Write a .Net component class library which exposes a static method which does the work, and can be referenced by the btprojects.

Pros : common reusable component without need for any transaction / Orchestration overheads.


2. Public Orchestration  

        Write a shared orchestration which does the work.

Pros :

  GUI based evelopment/ other BTS pros.


- The Orchestration needs to have atomic transaction enabled. If the code uses Non serializable components or Enterprise Lib components, which are not serializable, we have to make it atomic.

- All calling Orchestrations needs to be transactional, since it is calling a transactional orchestration.

- Overheads of Orchestration / Persistence to database.