Thursday 26 January 2012

Software Architecture

Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
The client/server software architecture is a message based, versatile and modular communications that is intended to improve flexibility, usability, interoperability and scalability as compared to centralized, mainframe, time-sharing computing.
Client/server architecture illustrates the relationship between two computer programs in which one program is a client, which makes a service request to another program called Server.
Server provides service to the request.
A single machine can be act as both, a client as well as server depending on the software configuration.
Although the client/server architecture can be used within a single computer by programs, but it is a more important idea in a network. 
In a network, the client/server architecture allows efficient way to interconnect programs that are distributed efficiently across different locations.
The common use of client/server model is in Computer transactions. For example, if you have to check a bank account from your computer, you have to send a request to a server program at the bank. That program process the request and forward the request to its own client program that sends a request to a database server at another bank computer to retrieve client balance information. The balance is sent back to the bank data client, which in turn serves it back to your personal computer, which displays the information of balance on your computer.
File sharing architecture
Previously PC networks were based on file sharing architectures, where the server is used to download files from the shared location to the desktop environment. The client job is then run in the desktop environment. This architectures work only if shared usage is low, update contention is low and the volume of data to be transferred is low. In the 1990s, PC LAN (local area network) computing changed because the capacity of the file sharing was overwrought as the number of online user grew.
As a result of these limitations of file sharing architectures, the client/server architecture emerged.
Client/server architecture
This approach introduced replacement of file server by database server. User queries could be answered directly by using a relational database management system. The client/server architecture significantly decreased network traffic by providing a query response rather than total file transfer. It allows multi-user updating through a GUI front end to a shared database. Remote Procedure Calls (RPCs) or standard query language (SQL) statements are typically used to communicate between the client and server.
The following are the examples of client/server architectures.
1) Two tier architectures
In two tier client/server architectures, the user interface is placed at user's desktop environment and the database management system services are usually in a server that is a more powerful machine that provides services to the many clients. Information processing is split between the user system interface environment and the database management server environment. The database management server supports for stored procedures and triggers. Software vendors provide tools to simplify development of applications for the two tier client/server architecture.
2) Three tier architectures
The three-tier architecture is introduced to overcome the drawbacks of the two tier architecture. In the three-tier architecture, a middleware is used between the user system interface client environment and the database management server environment. These middleware are implemented in a variety of ways such as transaction processing monitors, message servers or application servers. The middleware perform the function of queuing, application execution and database staging. In addition the middleware adds scheduling and prioritization for work in progress. The three-tier client/server architecture is used to improve performance for large number of users and also improves flexibility when compared to the two tier approach. The drawback of three-tier architectures is that the development environment is more difficult to use than the development of two tier applications.
i) Three tier with message server.
In this architecture, messages are processed and prioritized asynchronously. Messages have headers that include priority information, address and identification number. The message server links to the relational DBMS and other data sources. Messaging systems are alternative for wireless infrastructures.
ii) Three tier with an application server
This architecture allows the main body of an application to run on a shared host rather than in the user system interface client environment. The application server shares business logic, computations and a data retrieval engine. In this architecture applications are more scalable and installation costs are less on a single server than maintaining each on a desktop client.

No comments:

Post a Comment