Loose-coupled Component Oriented Architecture

I like flexible and elegant software system, that’s why I like the loose-coupled architecture where components (function units) can be added to or removed from the system easily without hindering the running of other parts. Nobody knows whether a component is available or not until it gets used. If it doesn’t exist when requested, that’s fine, system will be notified and then skip it.

COM+ is the technology I started with for the distributed development. I experienced the magic remote procedure call based on RPC protocol. It’s revolutionary for the development of enterprise level applications. Unfortunately, COM+ is much too complicated, limited to Microsoft platforms and tight coupled. It doesn’t fit the heterogeneous environment and the popular Agility concept.

WebService was shown up as a wonderful loose-coupled and cross-platform application framework. That’s why WebService joined my research interests N years ago. The beautiful SOAP message also plays a key role when taking care of the communications between server and client. Although creating and consuming web services (including WSE – Web Services Enhancement) are now part of WCF (Windows Communication Foundation) and became much more intuitive and powerful, I would never forget the moment I played with it for the first time in .net 1.0 beta age (early 2001). Calling a function through http – amazing!

Now there’s another component-based framework – Managed Extensibility Framework. Using this library makes it easy to build extensible applications that can be dynamically composed instead of statically compiled. MEF is as easy as 1, 2, 3…Export It, Import It, and Compose It.

I believe someday software development will really evolve into the game of building blocks like what my 2.5 years old daughter is doing. That’ll be fun 🙂