How do component-based and service-oriented architectures differ?, part 2
According to How
do component-based and service-oriented architectures differ?
, you mention that a component may
have multiple service interfaces to meet different clients' needs. But isn't SOA about standard
interfaces? If I have multiple interfaces for a single component (all of which are published), will
it not be confusing? For example, on the top, at the interface level, the two will seem to be
different (due to different interfaces), but the bottom or the component or the implementation will
be the same. Am I missing something?
Yes, SOA relies upon standard interfaces, but that's quite different from having a single
interface. If service interfaces corresponded one-to-one with component APIs, then there wouldn't
be that much of an advantage to the service interface. You might as well just use the API! However,
because it's possible to dynamically discover service interfaces, a proper SOA has the luxury of
being able to allow multiple service interfaces for a particular component (service provider).
The question of whether this will be confusing is really an architectural question. Sure, if you
allow service interfaces to proliferate in an uncontrolled manner, you'll have a management
headache on your hands. But if you provide multiple interfaces in a controlled, managed fashion to
meet the specific needs of service consumers in order to promote the loose coupling between the
service consumers and providers, then you will be on your way to realizing the benefits SOA has
over traditional APIs.
This was first published in November 2004