Compare 'Frameworks' Web Hosting at WhoIsHostingThis.com

Framework Options and Hosting

Katie Horne

Katie Horne is a C# developer-turned-technical writer. Most of her time is spent perfecting developer-oriented documentation for a Seattle-based startup that specializes in identity-as-a-service, but she also writes about all things technology as a freelance writer.

What is a Framework

What is a Framework?

A web application framework is a generic web-based software application which is extended and modified by developers to create a specific application.

The framework provides:

  • Generic functionality
  • Built-in solutions to a number of common programming problems
  • Structure for organizing code
  • A development philosophy or an architectural paradigm

Common Features of a Framework

Common Features

Most software applications, including web-based applications, have a number of very similar features or functionalities. This is especially true of web applications, which utilize the following:

  • URL routing
  • Templating / views
  • Database interaction
  • Form controls
  • DOM manipulation
  • Asynchronous requests
  • Input validation
  • User management
  • Session management

Dealing with Web Applications Within a Domain

This is, even more, the case when dealing with web applications within a certain domain. For example:

  • All eCommerce applications have to deal with payment processing, security, product management, and pricing
  • Every content management system (CMS) has to deal with authors, content editing, comments, categories, media uploading, and menus

In most business cases, there's very little sense in spending the time and money to code and develop all these functions over and over again.

What Makes a Good Framework?

A good application development framework solves most of these problems so that they don't have to be dealt with by the application coders/developers. This not only saves time but it also usually ensures that the code for these low-level foundational features are well-built and tested in production.

It is a better use of programming resources to focus on new features and business-specific functions.

Architecture and Frameworks

Frameworks and Architecture

An application development framework is more than a series of boilerplate libraries or sets of code. It isn't just an assemblage of tools.

So Is a Framework an Application?

Rather, a framework is a generic form of an application, which is made specific by a development team. (This is somewhat analogous to an abstract class being subclassed.)

The result of this is that application frameworks necessarily impose an architectural paradigm and sometimes a development philosophy. Some developers consider this imposition a reason not to use a framework, but actually, it is precisely their most important benefit.

What Does a Framework Provide?

Providing an architectural structure eliminates the need to decide how the various parts of the application are going to work together.

It promotes a well-designed organization of code and a sensible separation of concerns. It saves coders from arbitrary decisions about where to place certain types of logic.

Model-View Controller

Model-View-Controller

Most web application frameworks follow some version of the Model-View-Controller (MVC) architecture pattern.

The MVC pattern is one of the simplest and most fundamental architectural patterns around. It is particularly well-suited to the web, which is essentially a network of user-interface clients. Model-View-Controller is a way of organizing an application into three distinct areas of concern:

  • Model: The data structure
  • View: The formatted output to the user
  • Controller: The connection between the model and the view, as well as the application logic

Model

The model defines the data schema for your application. It usually takes the form of a series of classes which specify the main items of interest to the application, such as:

  • People
  • Blog posts
  • Orders
  • Products
  • Stores

In most web application frameworks, the model classes are used to generate the database structure. An underlying framework class (often called the active record pattern, of which object-relational mapping is a subset implementation) communicates with the database.

The model class and its underlying framework class provides a layer of abstraction, which allows many framework options to be database-agnostic.

View

The View is usually a set of template files that determine how specific models are displayed to the user.

There is usually at least one view per model, and in certain cases, there may be several views per model — for example, there might be a set of data that needs to be presented in three different ways.

Controller

In the conventional MVC paradigm, the Controller is simply the glue that holds the Model and View together. But in many real-world situations, especially those with strong command-and-control requirements (robotics, dispatch, traffic management), the controller can become a very large part of the application.

The Controller can often be broken down into two distinct parts (though this depends on the framework).

Application Controller

The Application Controller takes requests from the web server and calls the models and views needed to fill the request. In MVC parlance, this is the original meaning of controller.

Type-Specific Controllers

There can often be individual controllers that deal with specific types of functionality, such as a forms controller, or an email controller.

Choosing the right Development Framework

Choosing a Development Framework

One of the problems in selecting a web application framework is that they tend to be fairly similar, especially at the level of textual descriptions. Most of them are MVC, most of them handle basic needs like session management, most of them promise to speed up development, most of them claim to improve developer happiness.

Are Many Frameworks the Same?

A big part of the reason for this is that success creates imitators. As the various framework developers have seen what the others are doing, they have each worked the best ideas into their own code.

There is a convergence of excellence which makes most popular frameworks both very good and very similar.

Should My Existing Programming Knowledge Determine My Choice?

The biggest determining factor when it comes to which framework you choose is language. If you already know how to write PHP, you should probably use a PHP framework. This makes sense, rather than try to learn a new language just for the sake of using a new framework.

(The big exception to that is, of course, Ruby on Rails, which has caused many people to start learning Ruby.)

Beyond that, your best bet is to actually look at some applications built using the frameworks you are considering.

Use Real Life Examples as Guidance

Has someone built something remarkably similar to what you want to build? Use the same framework. Does one framework just seem to make more sense to you than the others? Use that one.

Most frameworks provide remarkably similar features. So instead of trying to find the framework that is right, try looking for the one that is right for you.

Framework by Language

Web Development Frameworks by Language

In the following sections, we will cover a variety of frameworks for some of the most popular web development languages.

In addition to helping you get started with choosing the option that is right for you, you will be able to see how different options are similar (or not) and how developers have chosen to implement features and functionality.

PHP

PHP is a server-side language commonly used for scripts, but it has gained popularity as a general, all-purpose language over the years. Some of the PHP frameworks available include CakePHP, CodeIgniter, Laravel, Symfony, Yii, and Zend.

CakePHP

CakePHP is a more modern framework that includes the scaffolding features for which Ruby on Rails is famous. Builds are quick, and you get many different tests and security features built into the framework.

CodeIgniter

If you are looking for a lightweight framework that is great in rapid app development situations, look no further than CodeIgniter. CodeIgniter is easy to use, comes with numerous libraries, and is affiliated with an active community, so you are sure to find plenty of resources for working with CodeIgniter.

Horde

If you are looking for a free and open source framework that will help you create collaborative software, then Horde might be the option for you.

In addition to providing you with components like email and calendars, Hoard functions the way you would expect a general, all-purpose web app framework to function. You will get the classes you need to handle:

  • User preferences
  • Compression for files
  • Browser detection
  • Connection tracking
  • Mime handling

Laravel

Laravel is one of the most popular PHP frameworks. Laravel is free, open source, and intended to facilitate rapid app development.

Laravel was originally designed to be a more advanced alternative to CodeIgniter. There is also a content management system that has been built on top of the Laravel framework (it is called October).

MVC Support by Laravel

Laravel supports the MVC architecture pattern, comes with built-in unit testing functionality, and includes many features right out of the box.

It has a modular packaging system/package manager for feature additions, multiple methods for communicating with relational databases, and utilities for aiding application deployment and maintenance.

Symfony

Symfony is a performant, stable, and mature PHP framework. Though using Symphony comes with a steep learning curve, there is excellent documentation and support available.

Reusable Libraries and Components

Symfony emphasizes reusable PHP components and libraries since the overall goal is to speed up the creation, deployment, and maintenance of PHP web apps and websites. There is somewhat of an enterprise focus, and developers are tasked with full configuration control and decision making.

Symfony is heavily inspired by the Spring Framework, which is a framework available to users of the proprietary Java programming language.

Yii

Yii is an open source, high-performance framework designed for applications that need complex (yet quick-loading) web pages. Yii is meant to be easy to use, and it is one of the oldest PHP frameworks that is still actively maintained.

Zend

If you are looking for an enterprise framework, Zend might be the option for you.

It is not ideal for rapid app development, but you do get top-notch security features, high performance, and the ability to extend your platform as necessary. Its enterprise focus means there are lots of components like authentication, forms, and so on.

Zikula

Zikula is so much more than just a web app framework. You can almost think of it as a combination content management system (CMS) and web application framework.

Zikula is an extension of Symfony (which we covered briefly above). The biggest draws of Zikula over Symfony are the increased features devoted to the development of dynamic features, a theming system, support for rapid prototyping, and its CMS-related features.

In a lot of cases, Zikula might be a bit much. However, if you are looking for a full-featured framework that you are unlikely to outgrow, Zikula would be a great option for you.

Ruby

Ruby is a modern, easy-to-use, object-oriented programming language designed to make programmers happy. However, Ruby was used relatively infrequently prior to the success of the Ruby on Rails framework.

Ruby on Rails

Ruby on Rails (sometimes referred to as just "Rails") is the reason why Ruby exploded in popularity. In the early 2000s, David Heinemeier Hansson developed a custom web framework for use with Bootcamp's flagship product. Hansson then extracted the framework backing the product and released it as an open source project.

Ruby on Rails is a server-side framework using MVC and is what software developers call an "opinionated framework." Rails is built to encourage you to do things a certain way -- while this can stifle some creativity/freedom, Rails, in the end, is great for developing robust applications (even if they are not the most performant).

Sinatra

Named after musician Frank Sinatra, this framework is one of the major alternatives to Ruby on Rails if you are working with Ruby.

Sinatra differs from Rails in that it ships only with the basics -- while Rails is a monolith that handles pretty much everything, Sinatra has chosen the opposite route and given you only what you need to develop a web application.

Java

If you are working with Java, which is commonly used in enterprise situations, one of your options is the Spring Framework. While Spring itself can be used by Java apps in general, you can take advantage of the extensions available to build web apps on top of Java Enterprise Edition (or Java EE).

Spring doesn't require you to follow any particular paradigm or programming model, but you can use the Spring MVC component if following the MVC pattern is important to you.

Python

Python is a high-level, object-oriented, all-purpose programming language that has seen a surge in popularity recently (especially in the data science fields).

Python is not as commonly used for web development as other languages, but that doesn't mean you won't see Python web applications with some regularity.

Django

Django boldly proclaims itself as the "web framework for perfectionists with deadlines."

It is no surprise that Django is one of the most popular Python web frameworks. In addition to being free and open source to all users of Python, Django offers what some people refer to as an "all-inclusive" experience -- you get everything you need, plus more.

The goal of Django is to make it easy for Python developers to create complex websites that are data-driven. The components you create can easily be reused (Django adheres almost dogmatically to the "don't repeat yourself" school of thought), and you can easily get your web apps spun up quickly.

Administrative Features and Implementation

Furthermore, you will get excellent administrative features, such as dynamically-generated CRUD (create, read, update, and delete) interfaces.

Django will not ask you to decide how you want certain things to be implemented if that's not something you want to do. Generally speaking, if you are working with a more straightforward project, Django is the Python web framework to go.

Flask

Flask is a great Python framework (technically speaking, Flask bills itself as a "micro web framework") if you are seeking something that is simple to use, yet flexible. Flask is considered to be a micro framework because it does not:

  • Require specific tools or libraries
  • Include components whose functions are provided by third-party libraries

To add application features, you would need to use Flask extensions (luckily, there are a wide variety of extensions and most tend to be updated more frequently than the Flask core itself).

Flask allows you to make the decisions as to how you want certain aspects of your web application to behave.

JavaScript

JavaScript is one of the three technologies that form the core of web app development.

JavaScript code was once used only for client-side applications, but the language has since become a major player powering most websites today. Client-side JavaScript is no longer the only way you can use the language. There are many different implementations of JavaScript available.

Angular.js

Angular.js is a front-end web application framework put out by Google and maintained by Google and a community of open source contributors. Its goal is to simplify the development lifecycle of SPAs (specifically during the development and testing phases), and it utilizes MCV, as well as the model-view-ViewModel (MVVW).

Angular.js was originally launched to address issues raised by the development of single-page applications, which are web apps or websites that rewrites itself dynamically based on its interaction with the user, rather than that reloading the page in its entirety with files from the originating server.

Such web apps/web pages are seen to behave more like a desktop application.

Express.js

Express.js is not, strictly speaking, a web application framework like many others on this list are. Express.js is more like a server framework for web applications, and you will frequently find it used as part of the MEAN stack, which includes:

  • MongoDB
  • Express.js
  • Angular.js
  • Node.js

Express.js is inspired by the simplified Ruby framework, Sinatra. Express.js as a whole is a very simple project, but users can easily add what they need using plugins.

Node.js

Node.js is an environment that allows you to execute JavaScript code server-side (remember, JavaScript was once exclusively the domain of the client side).

However, Node.js allows developers to run JavaScript on the server, product dynamic content, and serve said content before the page gets sent the user.

Furthermore, apps utilizing Node.js are very fast compared to apps built with PHP or ASP.NET. PHP or ASP.NET apps handle requests sequentially, so waiting times greatly affect the performance of the app. Node.js, however, handles thing asynchronously and eliminates the waiting period present with traditional apps.

Node.js is extremely popular, and its community is large. There are thousands of open source libraries available, as well as two large mailing lists, IRC channels, and many developer-oriented conferences.

With Node.js, you can use JavaScript everywhere -- you do not need to use different languages for the front-end, middle-tier, or server-side.

React.js

React.js is not a framework in the true sense of the word -- it is actually a JavaScript library that makes it easy for developers to build dynamic user interfaces.

Its strength is to allow developers to create pages that can be continuously updated with data and changed, all without requiring a page refresh (something that is typically less optimal, since users do not like interruptions).

If you have used Facebook, you will have seen React in action. React is a Facebook product, and its use is most obvious in the Facebook Feed updates -- notice how new items show up at the top without your webpage ever reloading. In MVC framework parlance, React.js corresponds to the "V" (or view) layer. React.js can easily be used in conjunction with other JavaScript frameworks.

Microsoft

Microsoft is one of the biggest players in the technology industry, and the company has certainly contributed to the web app framework world.

ASP.NET/ASP.NET Core

ASP.NET is an open source, server-side framework that allows you to produce dynamic websites, web applications, and web services. It is a successor to Microsoft's ASP and a part of the .NET Framework.

ASP.NET itself has been succeeded by ASP.NET Core, though you will still see the former in use with some regularity. Note that ASP.NET Core is not Windows-specific -- it will run using the .NET Framework on Windows, as well as the cross-platform .NET Core.

ASP.NET Core features things like:

  • Continuous compilation
  • Modularity, using NuGet packages
  • Optimizations for cloud implementations

It is also host-agnostic, light-weight, and community-focused.

Silverlight

You are unlikely to see Microsoft's Silverlight being used for new apps, but there are certainly instances of it being used in legacy apps. Silverlight, at one point, was a great option for those serving up media-rich apps.

However, if you are working in the Windows ecosystem, you may come across the usage of Silverlight more often than you would otherwise.

Non-MVC Frameworks

Frameworks Utilizing Non-Model-View-Controller (MVC) Architecture Patterns

Most of the frameworks we have mentioned above follow the Model-View-Controller (MVC) architecture pattern, but there are certainly alternatives, including MVVM and MVP.

Together, MCV, MVVM, and MVP are the three most commonly used architecture patterns in the field of web development.

MVVM

We briefly mentioned Model–View–ViewModel (MVVM) in the Angular.js section above.

In MVVM, we have the ViewModel instead of the Controller. The ViewModel is responsible for things like:

  • Commands
  • Functions that help maintain the state of the View
  • Displaying methods
  • Manipulating the Model
  • Triggering View events

What is MVVM Good For?

Generally speaking, MVVM is especially good for single page applications. It is not a complete framework but typically used as part of a framework.

Some MVVM options include:

  • Prism
  • MCCM Light
  • Caliburn Micro

MVP

There is also the Model-View-Presenter (MVP) framework. MVP is very similar to MVC, but with the Controller replaced with a Presenter.

The Presenter is used to handle all user interface-related events on behalf of the View. The Presenter:

  1. Receives user input via the View
  2. Processes the user data through the Model (which passes the results back to the View)

The View and Presenter are Separate

Unlike the View and Controller layers in MVC, the View and the Presenter are completely separate and communicate with each other through an interface.

Some MVP framework options include:

  • Atom
  • Ionic
  • React-Native

Summary of Frameworks for Web Development

Summary

The choices you make with regards to the language and web applications framework you use will affect your web hosting needs. We firmly believe that there is a web host for every type of user, so figure out what your needs are first, then seek the web host that will help you accomplish your goals.

Read on to find the hosting plans that support the languages and frameworks you are using.

Hosting Frequently Asked Questions

  • What is a Web Application Framework?

    The line which distinguishes a web-site from a web application is generally determined by looking to see if an individual user has data (like a profile) which is handled by a web “application.”

    The application allows for interactivity between the user’s computer and the web application’s server.

    A Web Application Framework is the technology upon which a Web Application is built – the framework is a library of software which lives on top of a programming language.

  • How does a Web Application Framework work?

    The Framework is essentially a library of tools which can be used to build a web application.

    The tools are powered and manipulated with a programming language, and certain tools can be accessed through the framework’s Application Program Interface (API).

    When a programmer is building a website, they will use components of the framework to handle control of features such as user login, page templates, data storage, and many other capabilities.

    The framework is an easy to use set of programming tools that allow developers to put a web application together quickly from parts instead of starting completely from scratch.

  • What does a Web Application Framework do?

    A framework creates the controls which enable a web application to run in the first place.

    What that application does is entirely up to the administrator or developer of the application.

    Generally, the framework allows application construction from a single programming language, or core group of interrelated technologies.

    The application itself can be derived from a general purpose framework.

    It can also be a framework which specializes in a particular application, such as a discussion forum, Wiki system, blogging system, organization portal, or any type of Content Management System (CMS).

  • What types of Web Application Frameworks exist?

    Web frameworks can be categorized in a variety of ways, but most commonly they are sorted by technology group or by methodology/architecture.

    The technology often fits into a broader term which is called the “stack” which includes the programming language, database type, operating system, and preferred web servers.

    Microsoft has the ASP.NET ecosystem, while other frameworks are built around Linux, with languages such as PHP, Python, JavaScript, and Java.

    The architecture discerns how the code objects are handled by the framework.

  • What is the difference between various Framework architectures?

    The two most common approaches are called the Model View Controller (MVC), and the Three-Tier Organization.

    The MVC pattern splits the data model separate from the business rules of the site and the user-facing interface. The User makes changes which are handled by the Controller, and receives updates from the View.

    Deviations of the MVC model exist as well, such as the Model-View-View-Model.

    The Three-Tier pattern is generally more focused on data abstraction and having a tiered application.

    A Presentation Tier is where the site interactions occur, an Application Tier handles logic for user input/output, and the Data Tier figures out storage/retrieval of information.

    Framework Technologies can follow either paradigm, or only a single portion of one architecture, and figuring out the “best” architecture is a hotly contested debate.

  • Does the operating system matter to a Web Application Framework?

    Sometimes.

    Most web frameworks can be made to run on either Windows or Linux/Unix, but rely on the installation of core dependencies which must be installed as prerequisites to the Framework itself.

    This requirement often comes in the form of a particular programming language, a Software Development Kit (SDK), or special compilers for deeper-level software to run.

    Other dependencies might include having the right database technology installed, or having a third party web server for handling HTTP communication.

    Frameworks built on Microsoft’s ASP.NET are made to run on Windows servers, but sometimes can be compiled too run on Linux with a tool called Mono.

    Most other frameworks use languages which can compile on any operating system, including JAVA, which runs somewhat independently on a Java Virtual Machine.

  • How does a Framework relate to a Web Server?

    Sometimes the Framework comes bundled with the web server. Other times, a separate web server needs to be setup to handle requests a certain way.

    In some cases, just running a static web server of any kind is enough, allowing the programming language of the framework itself to run independently.

    A Static Web Server will generally construct the URL paths based on the folder structure which the files are contained in.

    A dynamic server will manage web page routing, and can construct URLs based on user inputs without mapping to a storage folder of the same name.

    For application frameworks using the MVC approach, the web server is generally more tightly connected to the application.

  • How do I install a web application framework?

    Installation depends entirely on the technology and programming language being used.

    Some frameworks are closely bound to a Software Development Kit (SDK) and have a specialized Interactive Developer Environment (IDE) which is optimized for working in that framework.

    Microsoft's .NET framework for example is closely bound with it's Visual Studio desktop IDE, along with using the Windows IIS web server and usually Microsoft Transaction SQL.

    When using a Framework like Django, Python needs to be installed, but the choice of IDE is more open.

    Some frameworks based on JavaScript have relatively light software prerequisite, and often are simply edited through enhanced text editors, and server control via the command line.

    Every installation will be different, the only thing which most have in common is that a user will need the necessary root level privileges.

  • How do I pick the framework which is right for me?

    Every case is different, a web application framework is a tool, and like any tool, it might not apply to all jobs. Picking a framework should be done by considering the experience of all the developers who will be involved.

    Having developers learn both a new programming language and a new framework at the same time is not an ideal scenario.

    For small solo projects, it is best to pick a well documented framework with strong community support. Starting with either PHP or Javascript frameworks can be a good way to get familiar with web programming concepts without the need to compile code, or install massive SDKs.

    This process can make it easier to get up and running, but can require special care when debugging.

    Ultimately, experimentation is the best way to find a favorite technology, and asking for recommendations from helpful peers will often help speed up the process.

Updating...