0% found this document useful (0 votes)
19 views7 pages

Choosing a Web Framework for Development

The document discusses how web frameworks can simplify web application development by handling HTTP requests and responses, routing requests to handlers, obtaining data from requests, abstracting database interfaces, rendering data, and more. It also provides criteria for choosing a web framework, such as learning cost, efficiency, framework purpose and opinionation.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views7 pages

Choosing a Web Framework for Development

The document discusses how web frameworks can simplify web application development by handling HTTP requests and responses, routing requests to handlers, obtaining data from requests, abstracting database interfaces, rendering data, and more. It also provides criteria for choosing a web framework, such as learning cost, efficiency, framework purpose and opinionation.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Web Development Services

The previous articles showed you what communication between a web client and a server looks like, the
nature of HTTP requests and responses, and what a server-side application needs to do in order to
respond to requests from a web browser. Armed with this knowledge, it's time to explore how a web
framework can simplify these tasks and show you how to choose a framework for your first server-side
application.

The following section illustrates some key points using some code snippets from web frameworks. Don’t
worry too much if you can’t fully understand the code. Our "Framework Details" module will help you
fully understand.

Overview:

Server-side frameworks (also known as "web application frameworks") make it easier to write, maintain,
and extend web applications. They provide tools and libraries to implement simple, common
development tasks, including routing processing, database interaction, session support and user
authentication, formatted output (e.g. HTML, JSON, XML,DMT), and improved security against network
attacks.

The next section details how web frameworks simplify web application development. Then, I'll lay out
some criteria for choosing a web framework and lay out some options for you.

What can web frameworks do for you?

You don't have to use a server-side web framework, but we strongly recommend that you do - it will
make your life better.

In this section, we talk about the functions usually provided by web frameworks (this does not mean
that every framework will definitely provide all the functions below!)
Handle HTTP requests and responses directly

As we know from the previous article, web servers and browsers communicate via the HTTP protocol -
the server waits for an HTTP request from the browser and then returns the relevant information in the
HTTP response. Web frameworks allow you to write code with a simple syntax that generates code that
handles these requests and responses. This means your work becomes easier, your interactions become
easier, and you use more abstract code instead of low-level code.

Each "view" function (handler of the request) accepts an HttpRequest object containing the request
information, and is required to return an HttpResponse containing formatted output (a string in the
example below).

Route the request to the relevant handler

Most sites offer a range of different resources, accessed through specific URLs. If you put them all in one
function, the website will become difficult to maintain. So web frameworks provide a simple mechanism
to match URLs with specific handler functions. This approach is also good for website maintenance
because you only need to change the URL used to deliver specific functionality without changing any
underlying code.

Different frameworks use different mechanisms for matching. For example, the Flask (Python)
framework uses decorators to increase view routing.

Make it simple to get data from requests


There are many ways data can be encoded in HTTP requests. An HTTP GET request to obtain a file or
data from a server may be encoded as required in the URL parameters or in the URL structure. An HTTP
POST request that updates data on the server will include update information like "POST data" in the
request body. HTTP requests may also include live session and user information in client cookies.

Web frameworks provide a programming language-appropriate mechanism for obtaining this


information. For example, the HttpRequest object that Django passes to the view function contains the
method and attributes for obtaining the target URL, the type of request (such as an HTTP GET), GET or
POST parameters, cookie or session data, etc. Django can also pass encoded information in the URL
structure by defining "crawl patterns" in the URL match table (like the last line in the encoding snippet
above).

Abstract and simplify database interfaces

The website uses databases to store information shared with users and users' personal information.
Web frameworks usually provide a database layer to abstract the read, write, and query and delete
operations of the database. This abstraction layer is called an object-relational mapper (ORM).

There are two benefits to using an object-relational mapper:

You can replace the underlying database without changing the code that uses the database. This allows
developers to optimize the characteristics of different databases depending on their use.

Simple data validation can be built into the framework. This would make it easy to check whether the
data is stored in the database field in the correct way or in a specific format (such as an email address),
and is not malicious (a hacker can exploit specific encoding patterns to do things like delete database
records). Illegal operation).

For example, the Django framework provides an object-relational mapping and calls the structure used
to define database records a model. The model specifies the type of fields to be stored, and may also
provide validation of the information to be stored (for example, an email field only allows valid email
addresses). Fields may also indicate maximum information size, default values, option lists, help
documentation, form labels, etc. This model does not declare any underlying database information,
because this is a configuration information that can only be changed by our code.

The first code snippet below shows a simple Django model designed for a Team object. This model uses
character fields to store a team's name and level, and also specifies the maximum number of characters
used to store each record. Team level is an enumeration field, so we also provide a match between the
data being stored and the options being displayed, as well as specifying a default value.

Django models provide a simple query API for searching the database. This can be done by
simultaneously matching a range of fields using different criteria (e.g. exact, case-insensitive, greater
than, etc.), and supports some complex statements (e.g. you can specify that you are searching for U11
level teams with names starting with Teams starting with "Fr" or ending with "al").

The second code snippet shows a view function (resource handler) that is used to display all teams at
the U09 level - by specifying that all teams whose team level fields exactly match 'U09' are filtered out
(note how the filtering rules are passed to filter ( ), which is treated as a variable: team_level__exact,
consisting of the field name, the match type, and the double underscore that separates them).

Render data

Web frameworks often provide templating systems. These allow you to structure the output document,
using placeholders for that data that will be added when the page is generated. Templates are often
used to generate HTML, but they can also be used to generate some other documents.

The framework provides a mechanism that makes it easy to generate data in other formats from stored
data, including JSON and XML.

For example, Django templates allow you to specify variables by using "double curly braces" (such as
{{variable name}}). When the page is rendered, these variables will be replaced by the values passed
from the view function. The template system also provides expression support (implemented through
the syntax {% expression %}), which allows templates to perform simple operations such as iterating
over a list of values passed to the template.

The code snippet below shows how they work. The following content follows the "youngest team"
example from the previous section, where the HTML template is passed a list of values called youngest
teams via the view function. In the HTML skeleton we have a representation that initially checks
whether the youngest teams variable exists, and then iterates inside a for loop. On each iteration the
template displays the team's team name value as a list element.

How to choose a web framework

There are tons of web frameworks for almost every language you want to use (we've listed some of the
more popular ones in the section below). With so many options out there, it can be difficult to decide
which framework to choose to provide the best start for your new web application.

Some factors that influence your decision include:

Learning cost: Learning a web framework depends on your familiarity with the underlying language, the
consistency of its API, the quality of the documentation, and the size and activity of the community. If
you have no programming foundation at all, then consider Django (it is the easiest to learn based on the
above criteria). If you have become part of a development team that has significant development
experience in a certain language or a certain framework, then stick to the relevant framework.

Efficiency: Efficiency refers to the measurement of how much you can create a new feature once you
are familiar with a framework, including the cost of writing and maintaining code (because you cannot
write new features after the previous features break). Most of the factors that affect efficiency are
similar to learning costs - for example, documentation, community, programming experience, etc. ——
other factors include:

Framework Purpose/Origin: Some frameworks were originally designed to solve a specific type of
problem, and it is best to take these constraints into account when building the app. For example,
Django is designed to support news websites, so it is ideal for blogs or other websites that contain
published content. In contrast, Flask is a relatively lightweight framework and therefore suitable for
generating apps that run on embedded devices.
Opinionated vs opinionated: An opinionated framework means that when solving a specific problem,
there is always a recommended best solution. Opinionated frameworks tend to be more product-
oriented when you are trying to solve some common problems, because they will lead you in the right
direction, although sometimes they are not so flexible.

Some web frameworks include by default tools/libraries for any problem developers may encounter,
while some lightweight frameworks expect developers to choose appropriate solutions from separate
libraries (Django is the former) An instance, while Flask is a lightweight instance). An all-inclusive
framework is usually easy to get started because you already have everything you need, and chances are
it's already integrated and well documented. Whereas a smaller framework contains everything you
need (or will need in the future), it will only be able to run in a more restricted environment and require
learning a smaller, simpler subset.

Whether to choose a framework that encourages good development practices: For example, a
framework that encourages the Model-View-Controller structure to separate code into logical functions
will be more maintainable code than one that does not expect this from developers. In terms of
framework. Likewise, framework design profoundly affects how easy it is to test and reuse code.

Framework/programming language performance: Generally speaking, "speed" is not the most important
factor in the choice, and even, relatively speaking, Python, which runs very slowly, is enough for a
medium-sized website running on a medium hard drive. . The obvious speed advantage of other
languages (C++/JavaScript) is likely to be offset by the cost of learning and maintenance.

Cache support: As your website becomes more and more successful, you may find that it can no longer
properly handle the large number of requests it receives. At this point, you might start thinking about
adding caching support. Caching is an optimization that means you save all or most of your website
requests so that they don't need to be recalculated in subsequent requests. Returning a cache request is
much faster than recalculating it again. Caching can be built into your code, or on the server (see reverse
proxy). Web frameworks have varying levels of support for defining cacheable content.

Scalability: Once your website becomes very successful, you will find that the benefits of caching are
exhausted, and even the vertical capacity reaches the limit (running the program on more powerful
hardware). At this point, you may need to scale horizontally (spreading your website across several
servers and databases to load) or scale "geographically" because some of your customers are far away
from your server. The framework you choose will affect how easy it is to scale your website.
Cybersecurity: Some web frameworks provide better support for resolving common cyberattacks. For
example, Django eliminates all user input from HTML. Therefore JavaScript entered from the user side
will not be run. Other frameworks also provide similar functionality, but usually not enabled directly by
default.

There may be other reasons, including licensing, whether the framework is in a dynamic development
process, etc.

If you are a complete beginner, then you may choose your framework based on "ease of learning".
Besides the "ease of learning" of the language itself, high-quality documentation/tutorials to help
newbies and an active community are your most valuable resources. In subsequent lessons, we chose
Django (Python) and Express (Node/JavaScript) to write our examples, mainly because they are easy to
get started and have strong support.

What are some good frameworks?

Let's move on and discuss a few specific server-side frameworks.

The server-side frameworks below represent some of the most popular ones today. They have
everything you need to be productive - they are open source, constantly evolving, have a passionate
community of people creating documentation and helping users on discussion boards, and are used in
on many high-quality websites. There are of course many other great frameworks out there that you can
explore using search engines.

You might also like