The Importance of Flexibility in a Changing World
Client-server software architecture is versatile and flexible in today’s fast-changing IT landscape. It is modular in structure and relies on messaging services for communication between components. They were designed to improve flexibility, usability, scalability, and interoperability. Software flexibility implies the ability for a program to change easily according to different users and different system requirements.
Usability refers to human-computer interaction and the ability of a software application to accomplish a user’s goal. Some defining features are ease-of-use and a clear, logical process of evolution towards a goal. Scalability refers to a product’s (be it hardware or software) ability to change in size or volume gracefully to meet user requests. Interoperability is the ability of software or hardware to function with other systems without requiring human intervention and manpower. Client-server software architecture aims to increase productivity through improvements in all of these categories.
Client-server architecture developed as a response to the limitations of file-sharing architectures, which require tons of bandwidth and can often stall or jam a network causing it to crash. They require low shared usage and low volume of data to be transferred. In client-server architecture, the database server replaced the file server. Relational data base management systems (DBMSs) answered user queries directly. Since only specific queries were being answered, only that data was transferred instead of entire files that slow down networks. It also improved consistency in data between users, since all users had access to the same updated information.
The primary languages for structuring queries are SQL and RCP. SQL stand for ‘standard query language’. SQL uses a GUI (graphic user interface) to make requests form databases. The newest ANSI (American National Standards Institute) standard is SAG SQL. However, there are several recent versions of SQLs for sale from a variety of major vendors from Microsoft to Oracle. RPC is ‘remote procedure call’.
RPC is protocol or set of rules structuring an intelligible request that is used by one program to request data or services from another program on another computer in another network. Full knowledge of network details is unnecessary. It allows an application to be distributed on and accessible from different platforms. Client and server stubs are created respectively so each party has the section it needs for the remote function it requests. Stubs are called to work when a remote function is required by the application and communication between client and server is synchronous. RPCs make it easier to design a client-server software architecture that employs multiple programs distributed over a network.
Two Tier Architecture
Two tier client-server software architectures improve usability and scalability. Usability is increased though user-friendly, form-based interfaces. Scalability is improved because two tiered systems can hold up to 100 users, whereas file server architectures can only accommodate 12. Two tiered architecture is best suited to homogeneous environments processing non-complex, non-time sensitive information.
Two tier architectures consist of three components: user system interfaces, processing management, and database management. User system interface (USI) is a component of an organization’s decision support system, which includes human decision-makers. It provides a user friendly layer of communication to make requests of the server and offers multiple forms of input and output. USIs include features like display management services, sessions, text input, and dialog. Processing management includes process development, process implementation, process monitoring, and process resources services. Database management includes database and file services.
Two tier client-server design derives its name from how it distributes work between client and server. Clients access databases through the user system interface. Database management, on the server side, distributes processing between both client and server. Both tiers, the client and the server, are responsible for some of the processing management. Simply put, the client uses the user interface to make requests through database management on the server side.
Most of the application processing takes place on the client side, while the database management system (DBMS), on the server side, focuses on processing data through stored procedures. Connectivity between the tiers can be dynamically altered depending on users’ requests and the services they are demanding. Two tier client server architectures work well for groups or businesses of up to 100 users on an LAN (Local Area Network), any more and service would deteriorate. Also, this software architecture offers limited flexibility by requiring the writing of manual code to move program functionality to a different server.
Three Tier Architecture
Three tier client server architecture is also known as multi-tier architecture and signals the introduction of a middle tier to mediate between clients and servers. The middle tier exists between the user interface on the client side and database management system (DBMS) on the server side. This third layer executes process management, which includes implementation of business logic and rules. The three tier models can accommodate hundreds of users. It hides the complexity of process distribution from the user, while being able to complete complex tasks through message queuing, application implementation, and data staging or the storage of data before being uploaded to the data warehouse.
As in two tiered architectures, the top level is the user system interface (client) and the bottom level is performs database management. The database management level ensures data consistency by using features like data locking and replication. Data locking is also referred to as file or record locking. This is a first-come, first-serve DBMS feature used to manage data and updates in a multi-user environment. The first user to access a file or record denies any other user access or “locks it”. It opens up again and becomes accessible to other users once the update is complete.
The middle tier is also called the application server. It contains a centralized processing logic, which facilitates management and administration. Localizing system functionality in the middle tier makes it possible for processing changes and updates to be made once and be distributed throughout the network available to both clients and servers. Sometimes the middle tier is divided into two or more units with different functions. This makes it a multi-layer model.
For example, in web applications, the client side is usually written in HTML meanwhile the application servers are usually written in C++ or Java. By using a scripting language embedded in HTML, web servers act as translation layers that allow for communication between the client and server layers.
Types of Three Tier Architecture
On of the most basic ways of configuring the middle layer in three tier architecture is through TP (transaction process) monitoring. Here, the middle layer takes care of processing through a system of prioritizing messages, queuing messages, scheduling transactions. This allows the user to connect to the TP monitor and then work on other things while the TP monitor manages the transaction until it is complete. TP monitoring allows multiple DBMSs to be updated in a single transaction. It also provides connectivity to a variety of data sources and can attach priorities to transactions.
Messaging servers also provide a middle layer in three tier client-server architectures. They also prioritize messages. The messages contain priority information, addresses and identification numbers to locate requested data on relational DBMSs and other data sources. However, in this context, the intelligent information is found in the content of the message and headings. In TP monitors, intelligence is located in the monitor itself.
In three tier application server architecture, most application functions run on a shared host. This makes them more secure and scalable since it lessens the burden of software placed on the client-side. Application servers are also less expensive to install since it is installed on a single server and not on every desktop in the network.
ORB (Object Request Broker) architecture in a three tiered model increases interoperability. Technologies like CORBA (Common Object Request Broker Architecture) and COM/DCOM (Common Object Model/Distributed Common Object Model) support distributed objects and allow requests to be processed across platforms and across programming languages.
Finally, distributed/collaborative enterprise architecture is based on ORB, but advances CORBA. Developed in 1993, it shares and reuses not just objects, but also business models on an enterprise-wide scale. Enterprise, here, refers to as an organization’s multiple business systems that must all work together. Distributed/collaborative enterprise architecture increases flexibility and efficiency operationally. The limitations of this model include a lack of commercial object-oriented analysis and design tools to work with applications.
As previously stated, when determining which client-server model will work best in your organization, important factors include number of users, whether the organization will grow (scalability), interoperability, flexibility, usability and efficiency. Other considerations include the cost of implementation and maintenance and how these models might impact human resources. For example, an initial investment may be required to train employees before the cost benefits can be realized.