Thursday, September 17, 2009

Differenciating between Platform, Framework and Middleware

Introduction.

We all have used the terms Platform, Framework and Middleware at some point. These three are very necessary as they support the applications we develop and deploy, work as expected. Many a times we normally use these terms interchangeably, but that’s incorrect. Here we attempt to draw boundaries, between these three terminologies.

Definition

Think, you are developing a application, a PLATFORM is one, which provides a base to deploy and run your application, a FRAMEWORK is one which help design, develop and bind together different components to your application, a MIDDLEWARE is one which provides wide variety of services to the application from outside.

Description

Platform: A platform could be hardware architecture and some software, on top of which other applications operate. Hardware architecture is base to any software. More precisely, hardware platform refers to the processor and other hardware devices existing in any computing machine. Upon this hardware we have operating system and other application program. The software platform, for example an operating system forms the base for all other software’s to operate.

Platforms support the application programs by providing some of the following features. They include multi-tasking, memory management, access to disk and file systems, networking, security and several other functions.

Common Examples: Operating software, programming languages, compilers, runtime libraries, Java virtual machine etc.

Framework: A software framework could be a collection of support programs, a scripting language, code libraries and any other software, which help develop and bind together, different components of the software project.

Each library provides a specific functionality. More libraries the framework includes more functionality it provides. The functions provided by the framework are exposed through API’s.

The framework design is highly flexible and reusable. It facilitates software design & development, allowing designers and programmers, denote more time on actual requirement development.

Choosing the best framework for a project often requires a programmer to balance between

(i) How much functionality they get from the framework

(ii) The flexibility they are left with.

The original framework will become a part of the application being developed. I mean, if we ship the application, we ship it along with the framework. There is always a tight bonding between the application and framework it is using.

Examples: Wiki, Blogspot, Java spring framework, Struts framework

Middleware: A middleware provides services to an application. As the name tells, it acts as a mid-level agent, between the service provider and the service consumer. Also, we can say it acts as a glue or mediates between two or more already existing applications.

The middleware allows applications to communicate with one another, where either of the application runs on different platforms and could come from different vendors.

Common services provided by a middleware include, allow programs to establish access to multiple databases, provide messaging services that allow multiple applications to communicate.

Middleware supports your application from outside. That means, our application is not tightly coupled with any of the middleware, instead out application just uses some of its services.

Types of Middleware: Object Request Broker (ORB), Transaction Processing (TP) Monitors, Remote Procedure Call (RPC) systems, Enterprise Service Bus (ESB), Application Servers.

Example: Suppose we need to develop a Content Management System (CMS) that helps to keep all the data related to a particular project at one place. A freely available and widely used CMS is Wiki. Wiki is available in different versions. One has to download the available wiki framework and modify according to the requirements.

Also the wiki can work on many platforms; I mean many different operating systems supports wiki. But it is dependent on one such operating system. The basic framework that we download has to be deployed first, for which we need a operating system platform.

Now we need to make modifications to the wiki framework, add more code, update with new pages such that it suits our requirements. Once the application is ready, data is stored and accessed.

Now, we need to host the wiki, so it is accessible for all over the internet. To host the wiki application across a distributed network, we need certain other external applications like Web Servers and Application servers. So here we say, that these external applications which provides services to the wiki application, by hosting over the network, constitutes for the middleware.

More Information @:

http://www.hildeberto.com/2008/10/platform-versus-framework_12.html

http://www.hildeberto.com/2009/05/what-is-middleware-platform-framework.html

6 comments:

Unknown said...

Level ooo ley ... Talent machi, Hemanthesh ....

Karthik said...

Good one Hemanth.

My suggestion would be to make it a bit more non technical by giving non IT related examples so that even a non IT related person understands what you are conveying.

Any keep it up & keep them coming.

Prasanna said...

Really a good post

knguyen said...

Good post and thanks for sharing

santoshkumarlal201 said...

Nice Post. Very informative

Anonymous said...

Awesome post! Thanks for taking the time to clarify.