What Is the ‘The Web’ Really?
It is important for a developer to understand the distinction between “the internet” and “the world wide web.” The internet is a collection of millions of computers communicating with one another via a common protocol. Even though ‘the web’ is one of the most familiar ways to use the internet, it is not the only way. Other common uses include email and FTP (File Transfer Protocol).
Technically, “The Web” is communication between a client program and a server program exchanging messages on the internet via “Hyper Text Transfer Protocol”, (also known as http.)
A client program, often a web browser, sends an http request to a web server; the web server then sends an http response. This response usually consists of some combination of HTML, JavaScript, CSS, XML, and potentially other types of data.
A client program uses a URI (Uniform Resource Identifier) to target specific requests. (The term “Uniform Resource Locator” (URL) refers to the subset of URIs that, in addition to identifying a resource, provide a means of locating the resource. [Reference])
Web development is the design and creation of programs, scripts and other resources for clients and servers to exchange via the http protocol. Web developers often specialize in client side programming (front-end) or server side programming (back end).
Server Side Development (Back End)
A common point of confusion is that the term “web server” can refer to either the computer or the program(s) it runs to respond to http requests. Web server software is also sometimes called an http server.
What the Server Does
It it’s simplest form a web server responds to an http request with an http response. How it responds is generally broken down three ways:
- Static Content
- Dynamic Content as a “Web Application”
- Dynamic Content as a “Web Service”
Static content and web applications are primarily intended for consumption by end-users (humans). Static content is primarily for just information retrieval. A user sends a request for a web page and cannot alter that content.
Dynamic content changes based on user input. If there is substantial logic or processing associated with dynamic content, it is considered a “web application”. The distinction between “normal” dynamic content and a web application is user perception. For example, a user will normally need to “Log In” to a web application.
Usually, the server responds to both static content and web application requests with HTML, JavaScript and CSS intended for use within a web browser.
Dynamic content intended for consumption by another program it is known as a “Web Service”. Web Services typically respond to requests with JSON, XML, HTML or plain text.
Solution Stacks
The software running on the web server is sometimes called a “Solution Stack”.
A solution stack usually consists of
- The operating system
- The web server program
- A database server
- One or more scripting engines.
Two of the most common solution stacks are LAMP and WISA.
LAMP (Linux Apache MySQL PHP)
A “LAMP stack” consists of
- Linux (Operating System)
- Apache (Web Server Software)
- MySQL (Database Management System)
- PHP (Scripting Language)
Linux is a common open source operating system (with dozens of distinct variants) that runs on a wide range of computers. [Reference]
Apache is a very common open-source web server program. Though frequently associated with Linux, it can run on a wide variety of operating systems, including Windows. [Reference]
Like the term “Web Server”, the term “Database Server” can be confusing. In common usage, it can refer to either the computer running the database software or the software itself. It can also refer to the computer upon which the data is actually stored. MySQL is an open source database management system which is developed, supported and distributed by Oracle Corporation. [Reference]
A scripting language is a programming language used by a developer to create scripts to perform specific tasks. A script typically refers to an interpreted program rather than a compiled program. Traditionally, “scripting languages” have been considered more limited than full programming languages, however, in more recent times, this is often not accurate.
In the “LAMP Stack”, the scripting language is normally PHP. “PHP is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.” [Reference]
Other scripting languages on a LAMP stack might include Python or PERL.
A relative newcomer to Linux web development is the language/framework is Ruby on Rails (RoR); Ruby is the scripting language and Rails is the Framework. It’s proponents report that it’s primary advantage is rapid development.
You will have observed that a key phrase that occurs in each of the LAMP stack elements is “open source”. This means that the source code for each of the elements is readily available and can be examined and/or modified by the developers.
WISA (Windows IIS SQLServer ASP.NET)
Whereas the LAMP stack is built upon open source elements, a WISA stack is built upon elements proprietary to Microsoft Corporation.
A “WISA” Stack Consists of:
- Windows Sever (Operating System)
- IIS (the Web Server)
- SQL Server (Database Management System)
- ASP.NET (Scripting Language)
Each of these distinct elements is developed, deployed and distributed by Microsoft Corporation. Most WISA development is done with Microsoft’s Visual Studio, its Integrated Development Environment. (IDE).
Windows Server is Microsoft’s operating system optimized for sever (as opposed to client) software. [Reference]
IIS – Internet Information Services – is Microsoft’s web server program. It is specifically designed to run on the Windows Server operating system. [Reference]
SQL Server is Microsoft’s relational database management system. Several components within the Visual Studio IDE are specifically designed to allow scripts to connect conveniently to a SQL Server database.
Web development in Visual Studio typically consists of the creation of ASP.NET pages with additional programming done in either Visual Basic.Net or C#.
Other Solutions/Elements
Although LAMP and WISA are two very common solution stacks, other combinations of elements are frequently used for various business and technical reasons.
As already noted, Apache can be run on Windows. PHP can run on IIS. SQL Server can be accessed from a PHP Script running on a Linux based server. A vast number of combinations are possible.
The Java programming language, currently supported by Oracle Corporation, is also often used for server side development.
There is a new trend toward JavaScript, on the server using node.js. While, JavaScript is traditionally a client side language, node.js allows JavaScript programming on the server.
Clients
When most web developers hear the term “Client”, they assume “Web Browser”, however, in web development, a software client is any program that sends an http request and processes the http response.
Web Browsers
The “Front End” of a web site or web application is generally “how it looks”. Different browsers (FireFox, Internet Explorer, Safari, Chrome etc.) look and behave in slightly different was for the same web code.
A web “Front End” will consists of boxes, buttons, tables, trees, forms and etc. that have specific colors, fonts, icons and other visual elements. These elements are built and arranged with two major languages that work together: HTML and CSS.
A skilled web designer, who must be part artist and part programmer, can use HTML, CSS and images in such a away that the application is organized and attractive.
To make the web site or application functional, a programmer must add JavaScript which might include jQuery and AJAX. jQuery is a JavaScript library that standardizes and simplifies access to different parts of an HTML page. AJAX is a specific technique for updating a small part of a web page.
A web designer must have specific knowledge of any incompatibilities between specific browsers as well as an artistic eye.
Bots and Spiders
“Web Robots” also known as bots or spiders read and analyze web pages intended for humans for a variety of reasons including:
- Indexing (i.e. Google bot)
- Validation
- Business Intelligence
These bots can be written in any programming language but are typically written PHP, Python, Java, C/C++ or C#.
Web Service Consumers
A “Web Service Consumer” is another type of web client. As mentioned previously, a web service is a resource on a web server that provides specific data in response to a specific request. Web service responses are not usually formatted for display to humans.
A web service consumer is a client program that users a URI to request specific data and then processes the data in that response.
Web service consumers that run in the browser are typically AJAX calls written in JavaScript.
It is not uncommon for web applications running on a web server to also consume web services as part of its operation. Any program that consumes a web service is considered a client of that web service. When several web services are called within a single program, the distinction between server and client is often not clear to the end user. These applications are sometimes called “Mash ups”.
“Server Side” web service consumers can be written in any programming language but are typically written PHP, Python, Java, C/C++ or C#.