What is the difference between framework and architecture?

Viewed 35952

I would like to know the difference between framework and architecture.
for example: dotnetnuke is the framework and mvc is the architecture.

so if we take both of this as a example, can anyone tell me difference between them?
Want to know which one is using when and where?
Which is good in terms of user requirement satisfaction?

12 Answers

Let me illustrate the difference.

Framework:

Framework

Architecture:

Architecture

It's common to make this distinction:

  • A Library is a reusable set of types/functions you can use from a wide variety of applications. The application code initiates communication with the library and invokes it.
  • A Framework consists of one or more libraries, but the difference is that Inversion of Control applies. The application registers with the framework (often by implementing one or more interfaces), and the framework calls into the application, which may call back into the framework. A framework often exists to address a particular general-purpose Domain (such as web applications, or workflows, etc.).
  • Architecture consists of the guiding principles behind a given application. It is not strongly tied to a particular framework or library.

Simply put -- architecture is theory, framework is implementation.

Frameworks is a collection of classes and tools that help you developing great softwares ... like .net framework or Qt.
Architecture is entirely different : it refers to design pattern or how an application or a framework is organized. What are the modules that compose it and how they communicate together !

Also to note the difference between design and architecture:

Design: When you talk about what to do when a user logs in ?
Ex. Usability, portability, accessibility etc.

Architecture: When you talk about what to do when 5000 users logs in simultaneously ?
Ex. Scalability, reliability, availability, performance etc.

Frameworks are generally a part of your architecture. They are normally part of the infrastructure of your code. MVC is a framework, as is ASP.NET, WinForms and many many libraries (NHibernate, PostSharp and more).

Architecture refers to how your software it put together - how it is organized, how the different classes and modules in it interact.

Framework is a part of architecture implementation. Say, our app will be organized according to MVC architecture and will use SpringMVC framework for that. Different frameworks are organized according to different architectural patterns. Someone can say, that term "framework" is itself describes architectural pattern. Its "opposite" is "library", because libraries are directly controlled by your application while frameworks use inversion of control and they control execution of your code. Though, there are controversies in using term "framework".

I think framework is something that is created by someone and available to you to accomplish a objective. Like MFC is a framework to write GUI application. Frameworks takes full control from you but gives you the advantage of not trying to do everything from ground up. In most cases it is better to use a well designed and tested framework, rather than write your own.
In this context architecture is how the framework has been designed and possibly the way to use the framework from you application maintaining the vision of the framework designers.

But broadly architecture is the design principle and can encompass not only software but complete systems as well. Think security, integration, reporting, infrastructure aspects etc.

Related