When implementing a service-oriented architecture (SOA), there is always the choice between components (included modules of reusable functionality) versus services (deployed once, reused by calls over the network).
How do you know which one to choose? There is a lot of things to consider, but these will give you a head-start:
- if there is a need for different configuration parameters per consumer, favor a component
- if performance of remote network calls is problematic, favor a component
- if deploy-once is crucial, favor a service
- if you have no control over the deployment parameters, favor a service (e.g., if the provider is a third party)
- to dynamically switch between both, choose service component architecture (SCA)
Also, keep in mind that components require setting up the required infrastructure (database schema, queues, etc) for each deployment.
Probably most readers of this blog post will know about components, because you probably use TransactionsEssentials as a component