Detailed Explanation of WSGI- We server Gateway Interface of Python

WSGI- Web Server Gateway Interface: WSGI, authored by Philip J Eby and published on December 7, 2003, is a Web Server Gateway Interface, a specification that explains how a web server communicates with web applications, and how the applications can be chained together to generate requests.
There was one major flaw in Python application, and that was negative interoperability. It was designed for only one FastCGI, mod_Python, CGI, or other API of a specific web server, and they didn’t allow for interoperability. Unfortunately mod_Python, an Apache module, was not an official specification, and there was little security. Developers needed a new solution to combat the execution of Python web application.
This was the area where WSGI figured in. It had a standard interface for routing web apps and frameworks to web servers. The framework traces its origins to CGI or Common Gateway Interface, and was in use in the early days of the internet. The success of CGI was because it could work with many languages, but the downside was that it was slow and limited.
As per the detailing in PEP 333, the interface allows for greater interoperability between Python frameworks. WSGI provides the common ground for Python web application development because it provides a universal, standardised low-level interface between web servers and web frameworks. This provides great relief to programmers who were not very familiar with the working of Python programming and had to take trouble choosing a framework because of the limitations they had with usable web servers.
There are two major sides to the WSGI framework:
a. WSGI Application/Framework made from Python script
b. WSGI Server/Gateway like Apache or Nginx
Being a callable object, WSGI paces two arguments through a __call__ method, according to PEP 333. They are:
1. WSGI environment as first argument
2. Function that starts the response
Advantages of using WSGIs
1. Flexibility:
2. Scalability:
3. Speed:
4. Simple:
5. Reusable Middleware:

WSGI Frameworks in Python

A web framework comes with a set of libraries and a main handler for building custom codes that would build the web application, especially a dynamic and interactive one. The web frameworks in general consist of patterns & utilities that will help with URL Routing, Template Engine, Development Web Server and Request & Response Objects. Have a look at some of the main frameworks of WSGI.
There are mainly two types of WSGI Frameworks in Python:
1. Full Stack Frameworks
2. Non- Full Stack Frameworks
1. Full Stack Frameworks: In full-stack programming, you do everything in one area, but you must be able to handle everything to build a fully functional, complete web application. So you need to be aware of the whole stack, like front-end/UI language and framework, back-end language and framework, API layer, data access layer, databases, etc.
Django
Written in Python, the Django framework is just perfect for developers chasing tight deadlines. Django is also known as a battery included framework, where everything comes bundled within the framework, instead of as separate libraries. For example, URL routing, template engine, authentication, database schema migrations, ORM or Object Relational Mapper all come with the Django package. This is the reason why Django is considered a full-stack Python. Django is also open-source, MVC style and a server side web framework, with the motto, “Don’t repeat yourself”. Features like scalability and maturity with a huge developer community and an incredible set of built-in components makes Django the most recommended one. And it comes with complex, database-backed web application with out-of-the-box utilities and patterns. There are pre-built modules that can be integrated as it is or customized as per requirement.
 Non-Full Stack Frameworks: While a full-stack framework is one that helps with the full development stack, starting from user-interface to data store, a non-full stack framework is just the opposite. It would be somewhat like a use-at-will framework, and more like a class library, and if the library is less than 5K in size, then it can be tagged as a Micro framework. These are usually good at doing one thing, and the one thing will be done perfectly. Discussed below are two of the many Python frameworks that are popular this year.
To create a full-featured website from your framework, you may need to use a lot of code and add some extra bits yourself. This could take up a little time.
Bottle
Bottle is a simple WSGI micro web-framework in the Python programming language. It is fast and lightweight, and distributed as a single file module with no dependencies except for the Python Standard Library. It comes with the following attributes; Routing, fast & Pythonic built-in template engine, utilities for convenient access to HTTP related metadata like form data, cookies, file uploads and headers, built-in HTTP development server and support.Bottle is a great resource for prototyping ideas, and for building and running simple personal web applications. Prototyping becomes easier with Bottle because it is less opinionated than Django and the latter contains a significant amount of boilerplate code.
Bottle has a single large source file named bottle.py aiding in great reading when learning how WSGI web frameworks work. All you need to know about how the web application’s code connects with the Bottle framework is within that single source code. Personal projects are easily deployed with Bottle because you can easily package your app’s source code with bottle.py. This would help you skip some of the steps and in the meantime, get your application up and running easily.The simple profile of Bottle makes it easier to embed bottle within a larger application, and not be bothered about system-wide dependencies. Bottle is thus a reliable solution for building small applications.
Flask
Flask is a micro web framework written in Python, based on Werkzeug toolkit and Jinja2 template engine and is BSD licensed. The latest stable version of Flask is 0.12.2 and was released in May 2017. Pinterest, LinkedIn and the community web page for Flask, all use the Flask framework.Flask is the most favored choice for getting simple apps up and running because of the little boilerplate code. An advantage that Flask has over Django is that the framework was written several years after it, so it is the result of the observations garnered from the Python community’s reactions. Flask is a micro framework because it doesn’t require any libraries for tools. Nor does it have a database abstraction layer, form validation, or components where the third-party libraries provide common functions.
An important thing to note is that Flask supports extensions that would help improve & enhance application functionality. These extensions, namely for object-relational mappers, form validation, upload handling, various open authentication technologies and several common framework related tools look and feel as if they were implemented in Flask itself

Comments

Popular posts from this blog

Email Sending through O365 using OAuth Protocol

IISRESET vs App Pool Recycling ?

Deploy .Net6.0 Web api with docker