- Distributed System
- Standalone System
Distributed System
Any network-based system can be named as a distributed system. Which utilize this network to use remote components, opposed to the centralized or standalone systems. This includes any web application, email, gaming, etc. They consist of different components such as: client-side components, web servers, database servers, web services, etc.[1]
"A distributed system is a collection of independent Computers that appears to its users as a single coherent system or as a single system."
- Andrew S. Tanenbaum (American computer scientist) -
Distributed computing is a field of computer science that studies distributed systems. As well as, distributed computing is where multiple computing units are connected to achieve a common task.Through the Larger computing power enables to perform a lot more tasks than in a unit, and searches can be coordinated for efficiency.[2]
Standalone System

Standalone system is an application that runs on the desktop. Such applications can interact with server-side software. They are known as thick clients. The main benefits of standalone system or commonly referred as desktop applications are high efficiency and user interface flexibility.
Standalone
System
|
Distributed
System
|
Designed from the
beginning to be a quick and easy solution to building graphical user
interfaces (GUIs), especially when using Windows Forms in Visual Studio for
Windows.
|
Never was designed for
rapid development. Using MVC (model, view, control) style is typically seen
as the “correct” way to create web applications.
|
All the components are executed
within a single device.
|
The components are distributed
and executed in multiple devices.
|
Since the
user keeps his/her data on own computer systems, this makes it harder for hackers
to gain access to people’s data.
|
Since all the user’s
data is stored online, theoretically it would take just one hack to
compromise all the user data. However, this is just a possibility and
not a guaranteed situation.
|
Do not need
a network.
|
Need a
network.
|
Usually one
or tightly coupled set of technologies are used to develop (JAVA, .NET).
|
Multiple and
loosely coupled set of technologies are used to develop (HTML/CSS/JS/PHP).
|
Typically,
you will find that well-written desktop software running on a decent computer
runs faster than web applications.
|
Web
applications typically have slower performance than desktop applications, due
to having to transmit data across the Internet.
|
The elements of distributed systems

- Resource Sharing - Resource sharing is the ability to use any hardware, software or data anywhere in the system. The resource manager controls access, provides naming scheme and controls concurrency among the system tools. The resource sharing model depicts the correct resources provided and how they are used for interaction among each other.
- Openness - Openness is concerned with extension and improvement of distributed system and how new components are integrated to existing ones.
- Concurrency - Concurrency arises naturally in distributed systems from the separate activities of users, the independence of resources and the location of server processes in separate computers.
- Scalability - It is the adaption of distributed system to accommodate more users and respond faster. This is usually done by adding faster processors. In a distributed system, components are not required to be changed when scale of the system increased.
- Fault tolerance - Fault tolerance cares the reliability of the system so that in case of failure of hardware, software or network, the system continues to operate properly, without significantly degrading the performance of the system.
- Transparency - Distributed system should be perceived by users and application programmers as a whole rather than a collection of cooperative components. This is transparency of a distributed system.
Different types of services which can be gained from distributed systems
Ø Mail service
·
SMTP - Simple Mail Transfer Protocol
·
POP3 - Post Office Protocol
·
IMAP - Internet Message Access Protocol
Ø File transferring and
sharing
Ø Remote logging
·
telnet
Ø Games and multimedia
·
RTP - Real-time Transport Protocol
·
SIP - Session Initiation Protocol
·
H.26x
Ø Web
·
HTTP - Hypertext Transfer Protocol



Web Application
A web application is an app like any other, with the advantage that it’s stored on the Internet and can be executed on any browser. There are mainly two types in web based application.
- Client-server Application (non-browser based)
- Web Applications (browser based)
A Browser based Apps would be a recognized web browser application like Internet Explorer, Firefox, Chrome, Opera, and the like. All other applications would be considered Non-Browser based Apps or applications whose main purpose is something other than to contact sites on the internet at your request. It is not unusual for some of the "non-browser" apps to periodically connect to a website to check for recent updates, to check email, or other small updates... but it might be unusual if you had a malware application that connects to a website and downloads all your personal information.
examples:
- Google Docs
- Gmail
- Dropbox
- Evernote and Trello
- Netflix
Types of Web-based Systems
- Websites
- Web applications
- Web services and client apps

- Rich Internet Applications (RIAs)/ Rich Web - based Applications (RiWAs)
architectures for distributed systems
3-tier architecture is used, when there is a need for data persistence and also to separate the application logic from the data. This can be seen as an extension of 2-tier architecture.
Micro-service architecture and Monolithic architecture
Micro-service architecture is a software development technique which is a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services.
Monolithic architecture is designed to be self-contained. Components of the program are interconnected and interdependent rather than loosely coupled as is the case with modular software programs.
Micro-service vs Monolithic architecture
MVC Architecture
Strengths of MVC Architecture
- Faster development process - MVC supports rapid and parallel development. With MVC, one programmer can work on the view while other can work on the controller to create business logic of the web application. The application developed using MVC can be three times faster than application developed using other development patterns
- Ability to provide multiple views - In the MVC Model, you can create multiple views for a model. Code duplication is very limited in MVC because it separates data and business logic from the display.
- Support for asynchronous technique - MVC also supports asynchronous technique, which helps developers to develop an application that loads very fast.
- Modification does not affect the entire model - Modification does not affect the entire model because model part does not depend on the views part. Therefore, any changes in the Model will not affect the entire architecture.
- MVC model returns the data without formatting - MVC pattern returns data without applying any formatting so the same components can be used and called for use with any interface.
Weaknesses of MVC Architecture
- Increased complexity
- Inefficiency of data access in view
- Difficulty of using MVC with modern user interface.
- Need multiple programmers
- Knowledge on multiple technologies is required.
- Developer have knowledge of client side code and html code.
In a distributed system there is no shared memory and so the whole nature of the communication between processes should be reconsidered. The processes, to communicate, must adhere to rules known as protocols. For distributed systems in a wide area, these protocols often take the form of several layers and each layer has its own goals and rules. Messages are exchanged in various ways, and there are many design options in this regard, an important option is the remote procedure call. It is also important to consider the possibilities of communication between groups of processes, not only between two processes. There are 3 types of communication technologies,
Functional oriented communication
RPC
- Remote Procedure Call (RPC) is a programming language feature devised for the distributed computing and based on semantics of local procedure calls. It is the most common forms of remote service and was designed as a way to abstract the procedure call mechanism to use between systems connected through a network.

RMI
- Remote Method Invocation (RMI) is similar to RPC but is language specific and a feature of java. A thread is permitted to call the method on a remote object.

Differences Between RPC and RMI
- RPC supports procedural programming paradigms and is C based, while RMI supports object-oriented programming paradigms and is java based.
- The parameters passed to remote procedures in RPC are the ordinary data structures. On the contrary, RMI transits objects as a parameter to the remote method.
- RPC can be considered as the older version of RMI, and it is used in the programming languages that support procedural programming, and it can only use pass by value method. As against, RMI facility is devised based on modern programming approach, which could use pass by value or reference. Another advantage of RMI is that the parameters passed by reference can be changed.
- RPC protocol generates more overheads than RMI.
- The parameters passed in RPC must be “in-out” which means that the value passed to the procedure and the output value must have the same datatypes. In contrast, there is no compulsion of passing “in-out” parameters in RMI.
- In RPC, references could not be probable because the two processes have the distinct address space, but it is possible in case of RMI.

Message Oriented communication
SOAP
SOAP (Simple Object Access Protocol) is an XML-based protocol for accessing web services. Its interface is described in a machine-processable format called WSDL (Web Service Definition Language) document. A web service is described by using a standard, formal XML notion that provides all necessary details like message format, transport protocols, and location to interact with the web service.
Resource oriented communication
REST
REST (Representational State Transfer) is a style of software architecture. The data format is described by using JSON schema notation, and it requires the use of the HTTP transport protocol.
REFERENCESREST (Representational State Transfer) is a style of software architecture. The data format is described by using JSON schema notation, and it requires the use of the HTTP transport protocol.
[1] Tanenbaum, Andrew S.; Steen, Maarten van (2002). Distributed systems: principles and paradigms.
[2] Distributed Computing - Wikipedia. Avilable: https://en.wikipedia.org/wiki/Distributed_computing
[3] N. R. Dissanayake and G. Dias, "Rich Web-based Applications: An Umbrella Term with a Definition and Taxonomies for Development Techniques and Technologies", International Journal of Future Computer and Communication, Vol. 7, No. 1, March 2018.
[3] N. R. Dissanayake and G. Dias, "Rich Web-based Applications: An Umbrella Term with a Definition and Taxonomies for Development Techniques and Technologies", International Journal of Future Computer and Communication, Vol. 7, No. 1, March 2018.




No comments:
Post a Comment