Compare 'Frameworks' Web Hosting at WhoIsHostingThis.com
Framework Options and Hosting
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
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.
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.
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
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:
- Blog posts
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.
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.
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).
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.
There can often be individual controllers that deal with specific types of functionality, such as a forms controller, or an email controller.
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.
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 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 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.
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.
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 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 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 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.
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 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 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).
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.
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 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 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 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.
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 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:
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.
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.
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).
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 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.
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.
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.
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:
- 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:
- MCCM Light
- Caliburn Micro
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:
- Receives user input via the View
- 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:
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.
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?
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.
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.
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.