Architectural style -> Adoptable system -> Microkernel.

Background –

As we are talking about adaptable system, we have to think about heterogeneous system, we have huge number of different platforms and software stack. If you are thinking to build a system which is portable, you must agree that, you have to design it differently for different platforms. If you do so, you will notice that main (or say core) functionality are same, but you are rebuilding them again and again for different platforms, which is not at all a right way.

What I am trying to say is, core functionality will be same, doesn’t matter for which platform and how you build it. So is there any way I can take that core logic as a separate unit? Yes of cures there is, that is what you are reading about, its called “Microkernel”. Please look at below mentioned image for a high level understanding.



Microkernal –

Core logic/logics of your system, which will be common for all platforms.

Internal server -

There are some functionalities which are not core but are very important, those functionalities we can capture here. This will be an extended functionality, provided by microkernel. Only microkernel will have access to invoke it, so if any request which needs to be done apart from core functionality, microkernel will call internal server.

External server –

This will be an abstract layer, it will give you an interface to use system effectively. Different platforms use different polices to implement things, so your interface will vary as per different view or platform.

Adapter –

We need an adapter here, as we have to connect to heterogeneous systems.

Oh! Too much technical, let’s talk something non-technical. The kind of lifestyle we live today, we eat out very often. After ordering many different curries (“paneer do pyaza”, “Kadhai paneer”,”paneer lababdar”, etc) I have realized, all of them taste somewhat similar. Actually those fellow create same base curry for all different types. The moment you order any curry, they will use same base curry for different order and mix little different toppings and spices here and there as per curry type and that’s it. knowingly or unknowingly they have used Microkernel in their cooking business :)

UML Structure -





Sequence diagram -









Thanks for reading it. To read more on design patterns and basic design principles please see my web page. You can also join me on FB or on G++. Please drop comments for any question related to this blog.

Comments

Popular posts from this blog

Non-virtual interface idiom (NVI)

Architectural patterns => Mud to structure => layers.

Software design vocabulary