Client-to-server network model
-
Clients are computers that request information
-
Servers are computers that provide information
-
A client depends on the server for information
-
For example, the client-side of a web application is a web browser. The web server provides the information.
Types of servers
-
Web servers
-
Application servers
-
Network Attached Storage (NAS)
-
Print servers
-
Mail servers
-
etc
Peer-to-peer model
-
In a P2P network, each and every computer in a network is responsible for providing data equally.
-
Each computer can provide data requested by other computers in the network.
-
At the same time, any computer can request data from any computer.
-
This type of network is not suitable for systems where there is a single source of truth (ie, databases, online ticketing systems etc)
-
Due to a lack of servers, this type of network may lead to difficulty in storing backups.
-
Known best for file sharing
Cloud Computing
- The use of hardware and software to deliver a service over a network such as the internet is called cloud computing.
- A webpage displays these services to a client
Traditional computing vs cloud computing
Traditional computing
- Files are stored in the hard drive of a computer and processed using the same computer.
Cloud computing
- Files are stored online and processed using services that are available online.
Pros and Cons
Pros
- More cost effective
- More reliable
- Can be accessed from any computer with an Internet connection.
- Web applications are updated more frequently than traditional software.
Cons
- Requires an internet connection
- Working in online application may lead to cyber attacks
- Documents shared in web applications may be accessed by unauthorised users.
Webpages
- A webpage is a document that can be viewed in web browsers.
Back-end/server-side
- A server-side script is processed on the server when a user requests information
- The processed script returns the result to the user’s request
- Widely used in websites and apps that store a large amount of information
- SQL, PHP, Python, Ruby, Java and many more are used as backend languages
- The validation of data is also carried out on the server-side by comparing the data entered by the user with the existing data in the server.
- Hackers may try to enter malicious JavaScript in the front-end.
Functions of server-side processing are:
- Processing client’s queries
- Provides data security
- Encryption of data
- Updating server database
Application Programming Interface (API)
-
API is a set of protocols that governs how two applications interact with each other
-
Websites often embed functions such as maps, spreadsheets etc
-
Websites typically do not create these functions independently
-
Instead, an API is used to include these functionalities within a website
-
For example, Google has an API, which various websites use to include their address in the “contact us” menu
-
A web application that uses API from various sources is called a mashup.
-
API also defines the protocols that will be used in the web service.
-
An example of such a protocol is a WebSocket which creates a connection between two computers
- It provides a bidirectional communication channel between client and webserver over a single line.
WebSocket protocol
-
Firstly, the client sends a handshake request
-
Then, the server responds with a bidirectional channel on a single socket
-
Both client and server can send messages to each other simultaneously. In HTTP, the webpage need not be refreshed. The connection closes when one of them ends it.
-
The packets are also accepted without the usual security checks. As a result, this protocol helps us achieve fast and real-time communication.
-
This is widely used in online gaming and instant communication.
-
When this protocol is used, fewer webservers are required, saving transmission time, bandwidth, cost of hardware and cost of mobile communication.
Thick vs thin client computing
- The term thickness refers to the independent processing and storage of a client in a client-server model.
Thick client
- A thick client processes most of its data and requires little help from the server
Pros
- Operates without server connection
- Robust and reliable
- Used for powerful software applications
Cons
- Expensive to install as it requires highly specialised computers at the client side.
- Software has to be installed at each client computer and maintained regularly.
- Data is distributed, so data integrity issues may arise.
Thin client
- A thin client is highly dependent on the server for data processing and storage
- Without a server, the functionality of a thin client will be affected
- The thinnest client that requires a server for most of its operations will only require minimum processing power and no storage.
- This type of client system is often referred to as a dumb terminal.
Pros
- Easy and inexpensive to set up
- Easy to update and maintain the client systems
- Data is secured at a centralised location
Cons
- Client computers are affected when a server malfunctions
- Setting up a highly efficient server is expensive
- Highly reliable network connections are required
- When the number of client computers increased, the performance of this model may be affected
CRUD
- CRUD stands for Create, Retrieve, Update, Delete
- CRUD explains the main functions of a database. Without the four functions denoted by CRUD, it is not possible to have a complete database.
- It also specifies how data is obtained and presented to the user.
REST
- Representational State Transfer
- REST is a system design concept in which the HTTP request methods are used to interact with a database server through a webserver.
- The client does not know how the data is received and processed by the database.
- In this type of system, client and server systems can be developed independently.
JSON and XML
- JSON and XML are methods used to format data objects transferred across servers and web applications.
- When a user places a GET request, the values in the table are returned
JSON
- Based on objects and values, easy to read
- Less number of lines of code generated
- The syntax is simpler
- Arrays are supported
- Data is clearly defined and easier to parse
- Due to limited number of data types, JSON is not suitable for all applications
XML
- Use markup tags to make it comparatively easier to read
- Comparatively more lines of code
- Complicated syntax, harder to make
- Data is extracted from tags, harder to parse
- Wide range of available data types
‎‎