Client/Server Business Issues – Q & A
Business-Focused Client/Server Architecture
When analyzing a business there are three views of the organization:
A functional model, which reflects organizational responsibilities and the way in which the people who use the system view their work.
A process model, which details the business functions of the organization (e.g. accept orders, make goods, deliver goods, bill customers, and receive money). The functional structure and process model rarely, if ever, agree.
An information model, which details the information that the organization needs to function.
Client/Server Business Application Architectures
Traditional applications architectures have been based on function. Today, to meet the needs of the business application architecture should reflect the complete range of business requirements.
Therefore, client/server computing demands a three layer view of the organization.
- The user interface layer, which implements the functional model
- The business function layer, which implements the process model
- The data layer, which implements the information model
It should be noted that this application architecture does not demand multiple hardware platforms, although such technology can be utilized, if the environment is robust and reliable enough and the business is prepared to pay the additional costs associated with workstation and LAN technology.
Business Drivers
Client/server computing has arisen because of a change in business needs. Businesses today need integrated, flexible, responsive and comprehensive applications to support the complete range of business processes.
Problems with existing systems include:
- applications were developed to model vertical applications
- applications were built in isolation
- applications were implemented as monolithic systems
- applications were complex
- the supporting technology was based on a centralized control model
Information technology, which is an enabling factor in systems building, has almost reached the stage where these systems can be designed and created. Unfortunately, most businesses have existing systems based on older technology, which must be incorporated into the new, integrated environment.
The development and implementation of client/server computing is more complex, more difficult and more expensive than traditional, single process applications. The only answer to the question “why build client/server applications?” is “because the business demands the increased benefits.
Business Benefits
There is a perceived need for vendor independence. This includes application development methodologies, programming paradigms, products and architectures.
- Organization have changed from steep hierarchies to flattened hierarchies
- Network management is replacing vertical management
- There is a change to team based management
- The customer should have a single point of contact for all business with the organization
- The customer should deal with the same person over multiple contacts.
- The user will perform as much processing as possible during customer contact time
- The time required to complete the work will be minimized
- There is a need for empowerment of staff and audit trail of actions
- Multi-skilled and multi-function teams need access to multiple applications
What does business expect from IT?
New applications should be aligned with both the user’s view and the business process view. Existing functionally aligned systems are not appropriate
- Applications need to provide a consistent user interface
- Application complexity needs to be hidden
- The user interaction must be flexible
- Consistent information across all applications
- A variety of user interface styles to reflect the needs of the work
- Users should be able to modify business rules without reference to IT staff
- IT systems will support all activity performed by the user, not just a part
- An ability to evolve IT systems to reflect changing business requirements
- It is essential that there be integrity of transactional processes
What is Business Process Reengineering?
Reengineering is the organizational process required to align people, processes and technology with strategies to achieve business integration. It can also be thought of as taking a business in its current state and forming an organizational and operational blueprint to redirect skills, policies, information (data), cultural values, organizational structures, processing and incentives towards targeted improvements.
What sites carry client-server related material?
Object Management Group:
http://www.omg.org/
DCE Questions and Answers:
http://www.osf.org/dce/qna
OSF/DCE FAQ
http://www.osf.org/dce/faq-mauney.html
ftp://ftp.dstc.edu.au/pub/DCE/
Object-Oriented Links at Cetus (Germany)
http://www.rhein-neckar.de/~cetus/software.html
Client/Server Computing Page
http://www.wenet.net/~jtmalone/
Client/Server Technical Issues – Q & A
What are the characteristics of client/server architecture?
The basic characteristics of client/server architectures are:
- Combination of a client or front-end portion that interacts with the user, and a server or back-end portion that interacts with the shared resource. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The server process acts as a software engine that manages shared resources such as databases, printers, modems, or high powered processors.
- The front-end task and back-end task have fundamentally different requirements for computing resources such as processor speeds, memory, disk speeds and capacities, and input/output devices.
- The environment is typically heterogeneous and multi-vendor. The hardware platform and operating system of client and server are not usually the same. Client and server processes communicate through a well-defined set of standard application program interfaces (API’s) and RPC’s.
- An important characteristic of client-server systems is scalability. They can be scaled horizontally or vertically. Horizontal scaling means adding or removing client workstations with only a slight performance impact. Vertical scaling means migrating to a larger and faster server machine or multiservers.
What are the different types of servers?
The simplest form of servers is disk servers and file servers. With a file server, the client passes requests for files or file records over a network to the file server. This form of data service requires large bandwidth and can slow a network with many users down considerably. Traditional LAN computing allows users to share resources, such as data files and peripheral devices, by moving them from standalone PCUs onto a Networked File Server (NFS).
The more advanced form of servers are database servers, transaction server and application servers (Orfali and Harkey 1992). In database servers, clients passes SQL (Structured Query Language) requests as messages to the server and the results of the query are returned over the network. The code that processes the SQL request and the data resides on the server allowing it to use its own processing power to find the requested data, rather than pass all the records back to a client and let it find its own data as was the case for the file server. In transaction servers, clients invoke remote procedures that reside on servers which also contains an SQL database engine. There are procedural statements on the server to execute a group of SQL statements (transactions) which either all succeed or fail as a unit. The applications based on transaction servers are called On-line Transaction Processing (OLTP) and tend to be mission-critical applications which require 1-3 second response time, 100% of the time and require tight controls over the security and integrity of the database.
The communication overhead in this approach is kept to a minimum as the exchange typically consists of a single request/reply (as opposed to multiple SQL statements in database servers). Application servers are not necessarily database centered but are used to server user needs, such as. Download capabilities from Dow Jones or regulating an electronic mail process. Basing resources on a server allows users to share data, while security and management services, which are also based in the server, ensure data integrity and security.
What are the different client/server processing styles?
Gartner group came out with the five ways of describing the different c/s styles based on how they split the three components of any application: user interface, business or application logic, data management. The five styles are distributed presentation, remote presentation, distributed function, remote data management, and distributed data management.
(Note: This is an arbitrary classification and others may do it differently)
What is distributed or remote presentation?
For people whose roots are embedded in the mainframe IBM world, client-server is essentially distributed or remote presentation. This style maps a workstation Graphical User Interface (GUI) front end onto an existing application’s text-based screen. This is also called Remote, Mapping, Front-ending or HLLAPI (High-Level Language Application Programming Interface). The mode of operation is typically intelligent workstations intercepting and interrogating text-screen (e.g. 3270) data streams sent from a host for display in a windowed environment. This is “frontware” solution, where a GUI front end is added to an IBM/MVS 3270/5250 application and is placed on a workstation. However, most processing remains on the host or server, with the exception of user interface translation logic and possibly validation logic. For example, data from an application program is sent to a 3270 screen program on the mainframe to be displayed. The merged data is sent to the workstation as a 3270 data stream. The workstation interprets the data and converts it to graphical form in a window. (Typically every mainframe screen used by the application has a corresponding window on the workstation and vice versa). When the user enters the data in a GUI window, it is transformed by the frontware application into a corresponding 3270 data format and is sent to the host computer.
What is Remote Data Management?
In remote data management, the entire application resides on the client and the data management is located on a remote server/host. Remote Data Management is relatively easily to program for because there is just one application program. The client communicates with the server using SQL, the server then responds with data that satisfies the query. RDBMS products that offer remote data management provide a layer of software on the client to handle the communication with the DBMS server. This style represents a more traditional LAN database server or file server approach. Workstations support the presentation and function logic and interface with the data server through the data manipulation language. Distributed data management is an extension of remote data management and uses the distributed facilities of the DBMS to access distributed data in a manner transparent to users. This is most relevant for architectures having data spread across several servers and when access to a DBMS on another server is required.
What is distributed function processing?
Here the split occurs in the application functionality, one part going to the client, other to the server. Distributed function applications are the most complex of the three typologies since two separately compiled application programs must be developed. Developers must analyze where each function should reside and what type of dialog must occur between the two programs. The underlying communications facilities may implement either a message-based or remote procedure call (RPC) mechanism for transfer of dialog and data. However, there are many variants of this typology. One variant of the distributed function style is where data management and application function occur at both the client and server.
In this instance, data management at the client would include referential, read-only data. Data frequently updated or accessed by many users would reside on the server.
What is IBM’s System Application Architecture?
SAA is a collection of selected software interfaces, conventions, and protocols that are used as a framework for developing consistent, integrated applications across the major IBM computing environments.
Four major components of this architecture are:
- Common User Access (CUA) defines conventions for GUI look and feel.
- Common Programming Interface (CPI) provides languages, tools, and APIs that give applications greater portability and more consistent user interfaces across multiple platforms.
- Common Communication Support (CCS) supports existing communications standards, such as LU 6.2.
- Common Applications, written by IBM, will serve as demonstrations of SAA concepts and make it easy for users to migrate between systems.
What is Apple’s VITAL architecture?
VITAL provides a way of building information systems constructed from generalized modules that can be reused and shared. It specifies how to construct and provide interfaces for these modules. A cornerstone of Apple’s client/server architecture is Data Access Language (DAL). DAL consists of software components for the client and the server (Macintosh System 7 includes the client component, DOS and Windows clients are sold separately). DAL sits between the client and server components.
This approach allows varied clients to communicate with many different servers. With DAL, a change in the DBMS does not affect the front-end; it simply requires the appropriate DAL link.
What is Sun’s Open Network Computing Architecture?
Open Network Computing (ONC) is the Sun architecture, with third party alliances providing the missing pieces. Sun’s RPC is licensed by more than 300 companies, including DEC, IBM, and Apple Computer. It is a lean, efficient RPC that is particularly effective for installations not requiring WAN support. Transport Independent Remote Procedure Calls (TI-RPC) were co-developed by Sun and AT&T. TI-RPC runs independent of the underlying network transport, allowing applications to run unmodified over multiple transport protocols including NetWare, PCNFS, AIX/6000, Solaris, UNIX/SVR4, and AIX/ESA. NetWise developed the TI-RPC Application Toolkit source code generation technology.
What is Digital’s Network Application System (NAS) architecture?
NAS is a software suite that enables applications to be integrated across a distributed network of multivendor systems: NAS services are divided into four main groups:
- Application Access Services which support user interface (forms based, graphical or character terminal based)
- Communication and Central services which support communications using electronic mail and EDI
- Information and resource sharing, which supports database access and compound documents (collection of images, graphics and conventional text)
- System Access services which provides a standard operating system interface.
What is OSF-DCE?
DCE is the Distributed Computing Environment, from the Open Software Foundation. (It is called “the DCE” by sticklers for grammatical consistency.)
DCE consists of multiple components which have been integrated to work closely together. They are the Remote Procedure Call (RPC), the Cell and Global Directory Services (CDS and GDS), the Security Service, DCE Threads, Distributed Time Service (DTS), and Distributed File Service (DFS). The Threads, RPC, CDS, Security, and DTS components are commonly referred to as the “secure core” and are the required components of any DCE installation. DFS is an optional component.
DCE is called “middleware” or “enabling technology.” It is not intended to exist alone, but instead should be integrated or bundled into a vendor’s operating system offering. DCE’s security and distributed file system, for example, can completely replace their current, non-network, analogs.
What are Distributed Object Management Systems (DOMS)?
DOMS provide a way of pulling diverse components together and managing their communications. They are aimed at addressing the following:
- A single interface to manage the complexities of a heterogeneous environment
- A uniform framework, based on standards and extensibility, to build, integrate, and deploy open distributed-computing applications
- A method for creating location independence for client applications.
What is CORBA?
CORBA stands for the Common Object Request Broker Architecture. It is a set of standard mechanisms for naming, locating, and defining objects in a distributed computing environment.
(For technical details, peruse the Object Management Group web site at http://www.omg.org/)
What is DAE?
Distributed Application Environment is designed to allow businesses to use IBM’s RISC System/6000 and PS/2 computers in a client/server network (or standalone) for their business applications.
DAE consists
- MESSAGING services;
- DATABASE services ;
- PRESENTATION services;
- DEVICE services to capture data and to control a broad category of controllers, devices, equipment and sensors.
Client/Server – Technical Q & A
What is Client-server computing?
The short answer:
Client/server is a computational architecture that involves client processes requesting service from server processes.
The long answer:
Client/server computing is the logical extension of modular programming. Modular programming has as its fundamental assumption that separation of a large piece of software into its constituent parts (“modules”) creates the possibility for easier development and better maintainability.
Client/server computing takes this a step farther by recognizing that those modules need not all be executed within the same memory space. With this architecture, the calling module becomes the “client” (that which requests a service), and the called module becomes the “server” (that which provides the service).
The logical extension of this is to have clients and servers running on the appropriate hardware and software platforms for their functions. For example, database management system servers running on platforms specially designed and configured to perform queries, or file servers running on platforms with special elements for managing files.
It is this latter perspective that has created the widely-believed myth that client/server has something to do with PCs or UNIX machines.
What is a Client process?
The client is a process (program) that sends a message to a server process (program), requesting that the server perform a task (service).
Client programs usually manage the user-interface portion of the application, validate data entered by the user, dispatch requests to server programs, and sometimes execute business logic. The client-based process is the front- end of the application that the user sees and interacts with. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The client process also manages the local resources that the user interacts with such as the monitor, keyboard, workstation CPU and peripherals. One of the key elements of a client workstation is the graphical user interface (GUI). Normally a part of operating system i.e. the window manager detects user actions, manages the windows on the display and displays the data in the windows.
What is a Server process?
A server process (program) fulfills the client request by performing the task requested. Server programs generally receive requests from client programs, execute database retrieval and updates, manage data integrity and dispatch responses to client requests. Sometimes server programs execute common or complex business logic. The server-based process “may” run on another machine on the network. This server could be the host operating system or network file server; the server is then provided both file system services and application services. Or in some cases, another desktop machine provides the application services. The server process acts as a software engine that manages shared resources such as databases, printers, communication links, or high powered-processors. The server process performs the back-end tasks that are common to similar applications.
What is Two-Tier Architecture?
Two-tier architecture is where a client talks directly to a server, with no intervening server. It is typically used in small environments (less than 50 users).
A common error in client/server development is to prototype and application in a small, two-tier environment, and then scale up by simply adding more users to the server. This approach will usually result in an ineffective system, as the server becomes overwhelmed. To properly scale to hundreds or thousands of users, it is usually necessary to move to three-tier architecture.
What is Three-Tier Architecture?
Three-tier architecture introduces a server (or an “agent”) between the client and the server. The role of the agent is many fold. It can provide translation services (as in adapting a legacy application on a
Mainframe to a client/server environment), metering services (as in acting as a transaction monitor to limit the number of simultaneous requests to a given server), or intelligent agent services (as in mapping a request to a number of different servers, collating the results, and returning a single response to the client.
What is Middleware?
Connectivity allows applications to transparently communicate with other programs or processes, regardless of their location. The key element of connectivity is the network operating system (NOS). NOS provide services such as routing, distribution, messaging, file and print, and network management services. NOS rely on communication protocols to provide specific services. The protocols are divided into three groups: media, transport and client-server protocols. Media protocols determine the type of physical connections used on a network (some examples of media protocols are Ethernet, Token Ring, and Fiber Distributed Data Interface (FDDI), coaxial and twisted-pair). A transport protocol provides the mechanism to move packets of data from client to server (some examples of transport protocols are Novell’s IPX/SPX, Apple’s AppleTalk, Transmission Control Protocol/ Internet Protocol (TCP/IP), Open Systems Interconnection (OSI) and Government Open Systems Interconnection Profile (GOSIP)). Once the physical connection has been established and transport protocols chosen, a client-server protocol is required before the user can access the network services.
A client-server protocol dictates the manner in which clients request information and services from a server and also how the server replies to that request (some examples of client-server protocols are NetBIOS, RPC, Advanced Program-to-Program Communication (APPC), Named Pipes, Sockets, Transport Level Interface (TLI) and Sequenced Packet Exchange (SPX)).
What is Cooperative Processing?
Cooperative processing is computing which requires two or more distinct processors to complete a single transaction. Cooperative processing is related to both distributed and client/server processing. It is a form of distributed computing where two or more distinct processes are required to complete a single business transaction. Usually, these programs interact and execute concurrently on different processors. Cooperative processing can also be considered to be a style of client/server processing if communication between processors is performed through a message passing architecture.
What is Distributed Processing?
It is the distribution of applications and business logic across multiple processing platforms. Distributed processing implies that processing will occur on more than one processor in order for a transaction to be completed. In other words, processing is distributed across two or more machines and the processes are most likely not running at the same time, i.e. each process performs part of an application in a sequence. Often the data used in a distributed processing environment is also distributed across platforms.
What is an “Intranet”?
The explosion of the World Wide Web is due to the world-wide acceptance of a common transport (TCP/IP), server standard (HTTP), and markup language (HTML). Many corporations have discovered that these same technologies can be used for internal client/server applications with the same ease that they are used on the Internet. Thus was born the concept of the “Intranet”: the use of Internet technologies for implementing internal client/server applications.
One key advantage of Web-based intranets is that the problem of managing code on the client is greatly reduced. Assuming a standard browser on the desktop, all changes to user interface and functionality can be done by changing code on the HTTP server. Compare this with the cost of updating client code on 2,000 desktops.
A second advantage is that if the corporation is already using the Internet, no additional code needs to be licensed or installed on client desktops. To the user, the internal and external information servers appear integrated.
A rapidly-disappearing disadvantage is that there is limited ability to provide custom coding on the client. In the early days of the Web, there were limited ways of interacting with the client. The Web was essentially “read-only”. With the release of code tools such as Java and JavaScript, this limitation is no longer a major issue.
Peer – to – Peer Communications
- Most early client/server applications were implemented using low-level, conversational, peer-to-peer protocols – such as sockets, TLI, CPIC/APPC, NetBIOS and Named Pipes.
- These low-level protocols are hard to code and maintain.
- Instead now, the programmers are using RPCs, MOMs, and ORBs, which provide high level abstraction.
- The term, “peer-to-peer” indicates that the two sides of a communication link use the same protocol interface to conduct a networked conversation.
- The protocol is symmetrical, and it is sometimes called “program-to-program”.
- The peer-to-peer interface not fully mask the underlying network from the programmer.
- Programmer have to handle the transmission timeouts, race conditions, and other network errors.
- The peer-to-peer protocols started as stack-specific APIs.
a) Sockets
- Sockets were introduced in 1981 as the UNIX BSD 4.2 generic interface that would provide Unix-to-Unix communications over network.
- In 1985, SUN OS introduced NFS and RPC over sockets.
- Sockets are supported on virtually every OS.
- The windows socket API, known as WinSock, is a multivendor specification that standardizes the use of TCP/IP under windows.
- In BSD Unix System, sockets are part of the Kernel and provide both a standalone and networked IPC service.
Socket = Net_ID . Host_ID . Port_ID = IP Address + Port Address.
- The three most popular socket types are
- Stream
- Datagram
- Raw
- Stream and datagram sockets interface to the TCP and UDP protocols, and raw sockets interface to the IP protocol.
- A port is an entry point to an application that resides on the host.
- It is represented by a 16-bit integer.
- Ports are commonly used to define the entry points for services provided by the server applications.
b) TLI
- In 1986, AT&T introduced the Transport Layer Interface that provides functionality similar to sockets but in a more network-independent fashion.
- Sockets and TLI are very similar from a programmer’s perspective.
- TLI is just cleaner version of the sockets.
- It should run on IPX/SPX (or) TCP/IP with very few modifications.
- The TLI API consists of 25 API calls.
- Later standardized as XTI, X/Open Transport Interface.
c) NetBIOS:
- It is the premier protocol for LAN-based, program-to-program communications.
- Introduced by IBM and Sytek in 1984 for the IBM PC network.
- It is used as an interface to a variety of stacks – including NetBEUI, TCP/IP, XNS, Vines, OSI and IPX/SPX.
- The NetBIOS services are provided through a set of commands, specified in a structure called the Network Control Block (NCB)
- It does not support the routing of messages to other networks.
d) Named Pipes:
- Provide highly reliable, two-way communications between clients and a server.
- They provide a file-like programming API that abstracts a session-based two-way exchange of data.
- Using named pipes, processes can exchange data as if they were writing to, or reading from, a sequential file.
- These are suitable for implementing server programs that require many-to-one pipelines.
- Important benefit of named pipes are part of the base interprocess communications service.
- Named pipes interface is identical, whether the processes are running on an individual machine or distributed across the network.
- Named pipes run on NetBIOS, IPX/SPX, and TCP/IP stacks.
- Named pipes are built-in networking features in Windows NT, Windows for Workgroups, Windows 95 and Warp Server.
- Unix support for Named Pipes is provided by LAN Manager/X.
e) CPI-C/APPC:
- Common Programming Interface for Communications (CPI-C) build on top of APPC and marks its complexities and irregularities.
- Writing to the CPI-C API allows you to port your programs to all SNA platforms.
- The CPI-C API consists of about 40 calls; APPC consists of over 60 calls.
- Most of these calls deals with configuration and services.
- Advanced program-to-program communication is a protocol which computer programs can use to communicate over a network.
- APPC was developed as a component of IBM’s Systems Network Architecture (SNA).
- APPC is linked with the term LU6.2.
- LU6.2. (Logic Unit Version 6.2) is a device independent SNA Protocol.
- It was developed to allow computers in IBM environments to setup their own communications sessions, rather than rely on a hos computer to do so.
- Contrary to TCP/IP, in which both communication partners always possess a clear role, the communication partners in APPC are equal, i.e., everyone can be both servers and clients equally.
- With the wide success of TCP/IP, APPC has declined.
RPC, Messaging and Peer to Peer
- Client/Server applications are split across address spaces, physical machines, networks and operating systems.
- All NOSs offer peer-to-peer interfaces that let applications communicate using close to the wire send/receive semantics.
- Most NOSs provide some form of RPC middleware that hides the wire.
- An alternative type of model – message queueing or simple MOM – incredibly helpful in situations when the tight synchronization is not needed between the clients and servers.
Communication Stacks
|
Application |
Messaging |
RPC |
Peer-to-Peer |
||||||||||
|
Named Pipes |
DCE |
SUN |
|||||||||||
|
Presentation |
|
NDR |
XDR |
|
|||||||||
|
Session |
Peer-to-peer service API |
||||||||||||
|
NetBIOS Sockets TLI CPI-C/APPC |
|||||||||||||
|
Transport |
Common Transport Semantics |
||||||||||||
|
NetBEUI |
TCP/IP |
SPX/IPX |
LU6.2 /APPN |
||||||||||
|
Network |
|||||||||||||
|
LLC |
IEEE802.2 |
||||||||||||
|
MAC |
NDIS (OR) ODI |
||||||||||||
|
IEEE 802.5 (Token Ring) |
IEEE 802.3 (Ethernet) |
SDLC |
ISDN |
||||||||||
|
Physical |
Fiber Optic |
Coax |
Twisted Pair |
||||||||||
- Each layer has a well-defined set of APIs and Protocols.
- With these mix-and-match can be done.
- Practically, an entire stack of from a single vendor.
- The lowest layer of the communication software belongs to the device drivers that provide an interface to several types of communication hardware adapters.
- Real products don’t have any notion of architectural boundaries or reference models – they just get a job done.
- At the lower layers, they interface to the hardware using MAC protocols defined by IEEE.
- The LLC provides a common interface to the MACs and a reliable link service for transmitting communication packets between two nodes.
- The transport layer provides end-to-end delivery service.
Inside the Building Blocks
The Client Building Block
- Runs the client side of the application
- It runs on the OS that provides a GUI or an OOUI and that can access distributed services, wherever they may be.
- The client also runs a component of the Distributed System Management (DSM) element.
The Server Building Block
- Runs the server side of the application
- The server application typically runs on top of some shrink-wrapped server software package.
- The five contending server platforms for creating the next generation of client/server applications are SQL database severs, TP Monitors, groupware servers, Object servers and the Web server.
- The server side depends on the OS to interface with the middleware building block.
- The server also runs DSM component
- It may be a simple agent or a shared object database etc.
The Middleware Building Block
- Runs on both the client and server sides of an application
- This broken into three category
- Transport Stacks
- NOS
- Service-specific middleware
- Middleware is the nervous system of the client/server infrastructure
- This also has the DSM component
DSM
- Runs on every node in the client/server network.
- A managing workstation collects information from all its agents on the network and displays it graphically.
- The managing workstation can also instruct its agents to perform actions on its behalf.
Server-to-server Middleware
- Server-to-server interactions are usually client/server in nature – servers are clients to other servers.
- However, some server-to-server interactions require specialized server middleware. For example, Two-Phase commit protocol may be used to coordinate a transaction that executes on multiple servers.
- Servers on mail backbone will use special server-to-server middleware for doing store-and-forward type messaging.
- But most modern software follows the client/server paradigm.
Client/Server : A one size fits all model
The building blocks of client/server applications are:
- Client
- Middleware
- Server
These building blocks can be rearranged to use them in the following situations:
1. Client/Server for tiny shops and nomadic tribes – This is a building-block implementation that runs the client, the middleware software, and most of the business services on the same machine. It is the suggested implementation for the one-person shops, home offices, and mobile users with well-endowed laptops.
2. Client/Server for small shops and departments - This is the classic Ethernet client/single-server, building block implementation. It is used in small shops, departments, and branch offices. This is the predominant form of client/server today.
3. Client/Server for intergalactic enterprises – This is the multiserver building-block implementation of client/server. The servers present a single system image to the client. They can be spread out throughout the enterprise, but they can be made to look like they are part of the local desktop. This implementation meets the initial needs of intergalactic client/server computing.
4. Client/Server for a post-scarcity world – This model transforms every machine in the world into both a client and a server. Personal agents on every machine will handle all the negotiations with their peer agents anywhere in the universe. This dream is almost within reach.
1) Client/Server for Tiny Shops and Nomadic Tribes
- It is easy to run the client and server portion of an application on the same machine.
- Vendors can easily package single-user versions of a client/server application.
- The business critical client/server application runs on one machine and does some occasional communications with outside servers to exchange data, refresh a database and send or receive mail and faxes. Ex: Internet.
2) Client/Server for small shops and departments
- The client/server architecture is particularly well-suited for the LAN-based single server establishments.
- It consists of multiple clients talking to a local server.
- This is the model used in small businesses.
- The single-server nature of the model tends to keep the middleware simple.
- The client only needs to look into a configuration file to find its server’s name.
- Security is implemented at the machine level and kept quite simple.
- The network is usually relatively easy to administer; it’s a part-time job for a member of the group.
- There are no complex interactions between servers, so it is easy to identify failures- they’re either on the client or on the local server.
3) Client/Server for Intergalactic Enterprises:
- The client/server enterprise model addresses the needs of establishments with a mix of heterogeneous servers.
- These models are upwardly scalable.
- When more processing power is needed for various intergalactic functions, more servers can be added, or the existing server machine can be traded up for the latest generation of superserver machine.
- The servers can be partitioned based on the function they provide, the resource they control, or the database they own.
- The servers can be replicated to provide a fault-tolerant service or to boost an application’s performance.
- Multiserver capability, when properly used, can provide an awesome amount of compute power and flexibility, in many cases rivaling that of mainframes.
- To exploit the full power of multiservers, we need low-cost, high-speed bandwidth and an awesome amount of middleware features -including
- network directory services
- network security
- remote procedure calls and
- network time services.
- Middleware creates a common view of all the services on the network called a single system image.
- Good software architecture for intergalactic enterprise client/server implementations is all about creating system “ensembles” out of modular building blocks.
- Intergalactic client/server is the driving force behind middleware standards as distributed objects and the Internet.
4) Client/Server for a Post-Scarcity World
- Every machine is both a client and a full-function server.
- Because every machine is a full-function server, it will run, at a minimum, a file server, database server, workflow agent, TP Monitor, and Web server – all connected via an ORB.
- This is in addition to all the client software and middleware.
- In next few years, a hundred million machines or more may be running almost all the forms of client/server software
- In this model instead of mobile agents, personal agents will be used.
Intergalactic Client/Server
Intergalactic client/server is a new threshold of client/server applications and this is because of
- the exponential increase of low-cost bandwidth on Wide Area Networks – for example, the Internet and CompuServe
- a new generation of network-enabled, multi-threaded desktop operating systems – for example, OS/2 Warp Connect and Windows 95.
This new threshold marks the beginning of a transition from Ethernet client/server to intergalactic client/server that will result in the irrelevance of proximity.
The center of gravity is shifting from single-server, 2-tier, LAN-based departmental client/server to a post-scarcity form of client/server where every machine on the global “information highway” can be both a client and a server.
|
Application characteristics |
Intergalactic Era client/server |
Ethernet Era client/server |
|
Number of clients per application |
Millions |
Less than 100 |
|
Number of servers per application |
100,000+ |
<5 |
|
Geography |
Global |
Campus-based |
|
Server-to-server Interactions |
Yes |
No |
|
Middleware |
ORBs on top of Internet |
SQL and stored procedure |
|
Client/server architecture |
3-tier (or n-tier) |
2-tier |
|
Transactional updates |
Pervasive |
Very infrequent |
|
Multimedia content |
High |
Low |
|
Mobile Agents |
Yes |
No |
|
Client front-ends |
OOUIs, compound documents, and shippable places |
GUI |
|
Time-frame |
1997 onwards |
1985 till present |
The major key technologies in intergalactic client/server model are:
a) Rich transaction Processing – supports the nested transactions that span across multiple servers, long-lived transactions that executes over long periods of time as they travel from server to server, and queued transactions that can be used in secure business-to-business dealings. Most nodes on the network participates in the secured transaction; super-server nodes handle the massive transaction loads.
b) Roaming agents – the environment is populated with all types of agents. This agent technology includes cross-platform scripting engines, workflow, and Java-like mobile code environments that allow agents to live on any machine on the network.
c) Rich data management – This includes active multimedia compound documents that can move, store, view and edit in-place anywhere on the network. Most nodes on the network provides compound document technology for example, OLE or OpenDoc-for mobile document management.
d) Intelligent self-managing entities – With the introduction of new multi-threaded, high-volume, network-ready desktop operating systems, increased the workload on the server operating system. This type of distributed software knows how to manage and configure itself and protect itself against threats.
e) Intelligent Middleware -The distributed environment must provide the semblance of a single system-image across potentially millions of hybrid client/server machines. The middleware creates this illusion by making all servers on the global network appear to behave like a single computer system. Users and programs should be able to dynamically join and leave the network, and then discover each other.
Client/Server Concepts
From Wikipedia, the free encyclopedia
Client-server is a computing architecture which separates a client from a server, and is almost always implemented over a computer network. Each client or server connected to a network can also be referred to as a node. The most basic type of client-server architecture employs only two types of nodes: clients and servers. This type of architecture is sometimes referred to as two-tier. It allows devices to share files and resources.
Each instance of the client software can send data requests to one or more connected servers. In turn, the servers can accept these requests, process them, and return the requested information to the client. Although this concept can be applied for a variety of reasons to many different kinds of applications, the architecture remains fundamentally the same.
These days, clients are most often web browsers, although that has not always been the case. Servers typically include web servers, database servers and mail servers. Online gaming is usually client-server too. In the specific case of MMORPG, the servers are typically operated by the company selling the game; for other games one of the players will act as the host by setting his game in server mode.
The interaction between client and server is often described using sequence diagrams. Sequence diagrams are standardized in the Unified Modeling Language.
| Contents |
Characteristics
- Request sender is known as client
- Initiates requests
- Waits for and receives replies.
- Usually connects to a small number of servers at one time
- Typically interacts directly with end-users using a graphical user interface
- Receiver of request which is send by client is known as server
- Passive (slave)
- Waits for requests from clients
- Upon receipt of requests, processes them and then serves replies
- Usually accepts connections from a large number of clients
- Typically does not interact directly with end-users
Some designs are more sophisticated and consist of three different kinds of nodes: clients, application servers which process data for the clients, and database servers which store data for the application servers. This configuration is called a three-tier architecture, and is the most commonly used type of client-server architecture. Designs that contain more than two tiers are referred to as multi-tiered or n-tiered.
The advantages of n-tiered architectures is that they are far more scalable, since they balance and distribute the processing load among multiple, often redundant, specialized server nodes. This in turn improves overall system performance and reliability, since more of the processing load can be accommodated simultaneously.[1]
The disadvantages of n-tiered architectures include:
- More load on the network itself, due to a greater amount of network traffic.
- More difficult to program and test than in two-tier architectures because more devices have to communicate in order to complete a client’s request.
Comparison to Peer-to-Peer Architecture
Another type of network architecture is known as peer-to-peer, because each node or instance of the program can simultaneously act as both a client and a server, and because each has equivalent responsibilities and status. Peer-to-peer architectures are often abbreviated using the acronym P2P.
Both client-server and P2P architectures are in wide usage today.
Comparison to Client-Queue-Client Architecture
While classic Client-Server architecture requires one of communication endpoints to act as a server, which is much harder to implement, Client-Queue-Client allows all endpoints to be simple clients, while the server consists of some external software, which also acts as passive queue (one software instance passes its query to another instance to queue, e.g. database, and then this other instance pulls it from database, makes a response, passes it to database etc.). This architecture allows greatly simplified software implementation. Peer-to-Peer architecture was originally based on Client-Queue-Client concept.
- In most cases, client-server architecture enables the roles and responsibilities of a computing system to be distributed among several independent computers that are known to each other only through a network. This creates an additional advantage to this architecture: greater ease of maintenance. For example, it is possible to replace, repair, upgrade, or even relocate a server while its clients remain both unaware and unaffected by that change. This independence from change is also referred to as encapsulation.
- All the data is stored on the servers, which generally have far greater security controls than most clients. Servers can better control access and resources, to guarantee that only those clients with the appropriate permissions may access and change data.
- Since data storage is centralized, updates to those data are far easier to administer than would be possible under a P2P paradigm. Under a P2P architecture, data updates may need to be distributed and applied to each “peer” in the network, which is both time-consuming and error-prone, as there can be thousands or even millions of peers.
- Many mature client-server technologies are already available which were designed to ensure security, ‘friendliness’ of the user interface, and ease of use.
- It functions with multiple different clients of different capabilities.
- Traffic congestion on the network has been an issue since the inception of the client-server paradigm. As the number of simultaneous client requests to a given server increases, the server can become severely overloaded. Contrast that to a P2P network, where its bandwidth actually increases as more nodes are added, since the P2P network’s overall bandwidth can be roughly computed as the sum of the bandwidths of every node in that network.
- The client-server paradigm lacks the robustness of a good P2P network. Under client-server, should a critical server fail, clients’ requests cannot be fulfilled. In P2P networks, resources are usually distributed among many nodes. Even if one or more nodes depart and abandon a downloading file, for example, the remaining nodes should still have the data needed to complete the download.
Imagine you are visiting eCommerce web site. In this case, your computer and web browser would be considered the client, while the computers, databases, and applications that make up the online store would be considered the server. When your web browser requests specific information from the online store, the server finds all of the data in the database needed to satisfy the browser’s request, assembles that data into a web page, and transmits that page back to your web browser for you to view.
Specific types of clients include web browsers, email clients, and online chat clients.
Specific types of servers include web servers, ftp servers, application servers, database servers, mail servers, file servers, print servers, and terminal servers. Most web services are also types of servers.
- ^ This form of scalability is called horizontal scalability. There is substantial and growing criticism that horizontal scalability is limiting as applications become more complex and interdependent, particularly in the areas of network latency, reliability, and manageability. IBM, in particular, takes this view and promotes both vertical and horizontal scalability. Vertical scalability implements fewer servers able to support multiple application and database tiers, and multiple applications, concurrently. The IBM System z is the most notable example of a vertically scalable system.
Fat Servers OR Fat Clients
- Client/Server applications can also be differentiated by how the distributed application is split between the client and the server.
- The fat server model places more function on the server.
- The fat client does the reverse.
- Groupware, transaction and the web servers are examples of fat servers; database and file servers are examples of fat clients.
- Distributed objects can be either.
Fat Client
- Fat clients are the more traditional form of client/server.
- The bulk of the application runs on the client side of the equation.
- In both the file server and database server models, the clients know how the data is organized and stored on the server side.
- Fat clients are used for decision support and personal software.
- They provide flexibility and opportunities for creating front-end tools that let end-users create their own applications.
Fat Server:
- Fat Server applications are easier to manage and deploy on the network because most of the code runs on the servers.
- Fat servers try to minimize network interchanges by creating more abstract levels of service.
- Transaction and object servers, for example, encapsulate the database.
- The client in the fat server model provides the GUI and interacts with the server through remote procedure calls (or method invocations)
- These are used for mission-critical applications, represent the new growth area fro PC-based client/server computing.



