Revision b6d309cc-ea5a-41cc-a114-04f39b50437e - Software Engineering Stack Exchange
## Background ##
Web development is all about communication. In this case, communication between 2 parties, over the HTTP protocol:
- The **Server** - This party is responsible for **serving** pages.
- The **Client** - This party *requests* pages from the **Server**, and displays them to the user. On most cases, the client is a **web browser**.
- The **User** - The user *uses* the **Client** in order to surf the web, fill in forms, watch videos online, etc.
Each side's programming, refers to code which runs at the specific machine, the server's or the client's.
## Basic Example ##
1. The **User** opens his web browser (the **Client**).
2. The **User** browses to http://google.com.
3. The **Client** (on the behalf of the **User**), sends a request to http://google.com (the **Server**), for their home page.
4. The **Server** then acknowledges the request, and replies the client with some meta-data (called *headers*), followed by the page's source.
5. The **Client** then receives the page's source, and *renders* it into a human viewable website.
6. The **User** types <kbd>Stack Overflow</kbd> into the search bar, and presses <kbd>Enter</kbd>
7. The **Client** submits that data to the **Server**.
8. The **Server** processes that data, and replies with a page matching the search results.
9. The **Client**, once again, renders that page for the **User** to view.
## Programming ##
### Server-side Programming ###
Server-side programming, is the general name for the kinds of programs which are run on the **Server**.
#### Uses
- Process user input.
- Display pages.
- Structure web applications.
- Interact with permanent storage (SQL, files).
#### Example Languages
- PHP
- ASP
- Nearly any language (C++, C#, Java). But these were not designed specifically for the task.
### Client-side programming
Much like the server-side, Client-side programming is the name for all of the programs which are run on the **Client**.
#### Uses
- Make interactive webpages.
- Make stuff happen dynamically on the web page.
- Interact with temporary storage, and local storage (Cookies, localStorage).
- Send requests to the server, and retrieve data from it.
#### Example languages
- JavaScript (primarily)
- HTML
- CSS