Danny,
After reading this I would like to add two points.
First I would like to add another form to the three forms of dynamic binding you mention. Binding also occurs at the protocol level. On the web often we use the implicit HTTP protocol to communicate in a REST (1) like fashion. When we build applications we bind more explicit to protocols like MQ, JMS or SOAP.
Second, I would like to add something on the Message Broker. In the last years we more and more are adding routing in message broker like architectures. We say that applications shouldn't need to know the details of the systems they are connecting to. I agree that this provides flexibility but it worries me that al routing information is centralised at one point:
- a. After the centralisation of routing it is easy (as you describe in form 1) to add content _base_d routing. But the difference between content _base_d routing and business logic is small and easy to oversee or mistaken.
My worry is that these centralised message brokers become the monolithic main_frame_ solutions we've just abandoned.
- b. If all logic is bound to one message broker is that dynamic binding or single binding?
My worry is that all logic is bound to one message broker and that replacing that message broker will be very hard because business logic is not written to consider the message broker as a variable, because there is only one message broker.
Formulated as a design pattern I would advocate for a more synaptic /brain like working vision on the message broker. Instead of one all-knowing message broker I rather use a set of
Domain Oriented Message Brokers. Each message broker contains (content) routing for a specific business domain. I think of typically 4-6 message brokers in an enterprise. Message brokers communicate with each other on cross domain issues. This at least prevents a monolithic solution and shows application builders that a message broker is a variable and not a constant.
Cheers,
Ronald Streekstra
@1:
Representational State Transfer