The magazine of the Melbourne PC User Group

Developing client-server applications
Chris Raddle, George Baglava, Xiaoya Lin & Noel Craske
ncraske@monash.edu.au

For many years, applications were developed using a centralised multiuser architecture. Put simply, applications resided and were executed upon one centralised computing platform that was used by multiple simultaneous users. Implementing such an architecture meant investing in costly technologies that were inflexible and difficult to maintain. The introduction of intelligent desktop computers in the 1970s changed all that. Using an intelligent desktop, the concept of processing at the desktop became a reality. After years of research, the early 1980s saw the introduction of client-server (CS) architecture.

CS architecture can be defined as a design approach that divides the functional processing of an application and distributes it across two or more processing platforms. The division of functional processing is largely based upon which functions provide commonly used services and which perform specific tasks [7].

The success of CS architecture is a direct result of its associated benefits such as improved flexibility, the potential for technological advancements and lower cost. These benefits can only be achieved if CS applications are designed properly.

CS processing is seen as the way of the 90s. Its growth in popularity has been mainly due to the fact that it is a technology that eliminates application backlogs, reduces software maintenance costs, increases application portability, improves system and network performance and even eliminates the need for minicomputers and mainframes.

The CS model is an extension of the shared device model. The shared device model gives personal computers (PCs) the ability to share resources like files and printers. These shared devices are called servers in LAN terminology, (a file server for a file and a printer server for a printer). "Server" is a good word for these shared devices as they receive requests for service from other PCs. However, this technology has a major problem, all processing is done on each PC, meaning great delays especially when concurrent access to a file is required.

Figure 1 is an example of shared device-processing environment.


Figure 1.


Figure 2.

In the client server model (see Figure 2) application processing can be divided between the client and the server. The server is used to manage resources, such as files, databases, etc. The client can then initiate a process (application) which is used to access the resources. Thus, processing is initiated by the client but both the client and the server work together to complete the application successfully. There are a number of different types of resources that need to be managed by servers, for example, you may have files, mail programs, printer resources, etc. all of which the server must manage. By this it can be seen that both the client and server work together in order to complete the application together. Excellent examples of client-server processing are database servers like Centura SQLBase, Sybase and MS SQL Server.

There are certain requirements, which need to be met in order for the client-server model to run successfully. These are:

  • The client and server co-operate in their interactions, which the client must initiate
  • The server settles conflicting requests
  • A reliable communication link between all clients and servers
  • The server controls what services or data can be requested.
B efore we can discuss the development of CS applications, we must identify the foundations of the environment. CS relies on several different technologies and it is important to have an understanding of each of them as they can have a dramatic affect on an application. The CS environment essentially is made up of three dominant technologies:
  • Client technologies
  • Server technologies
  • Network technologies
Client technologies

Client technologies are concerned with the functions that run on the client's workstation. These functions make up a considerable portion of a CS application and this is why (along with the fact that the network and server only exist to serve the client) many people [7] consider the client the most important of the three technologies.

Developers must be aware of the existing software on client workstations so that they can relieve the server of unnecessary functions using communication mechanisms such as dynamic data exchange (DDE), object linking and embedding (OLE) and remote procedure calls (RPC).

Server technologies

The server acts as the shared resource component of the CS environment, and so it must be able to service multiple requests simultaneously. The technology used for the server platform can range from the equivalent of a client up to a large mainframe [7].

Because the server is servicing so many clients, if the server fails, all the clients relying on the services provided by that server fail as well. That is why the criteria for selecting a server are stability, performance and flexibility. Another consideration when selecting and configuring server technology is the functions which the server is to provide.

Network technologies

In order to implement a CS architecture, the client and server must be able to communicate. Local area networks are commonly used for establishing communication between clients and servers. A local area network can be defined as a combination of software and hardware used to transfer data between stations over a limited geographical distance.

There are a number of local area networks that are currently in use today. Two of the more popular networks are Ethernet and Token Ring. Ethernet is a well established network that has been adopted by many worldwide. Its key characteristics include a bus topology, a data transfer speed of up to 10 megabits per second (Mbps) and a line discipline called Carrier Sense Multiple Access (CSMA/CD) to control access to the transmission medium [4].

Token Ring is also a well established network that uses a ring topology, has a data transfer rate of 16 Mbps and introduces the concept of a token to control access to the transmission medium.

Like client and server technologies, the choice of local area networks should be based on the requirements of your CS applications in terms of the number of clients and servers, what data is to be transferred between client and server, how much data is being transferred, the required response time and of course the project's budget.

Building a client-server application

With all the publicity about CS applications and associated benefits it is tempting to just start developing an application. However, to fully use the power of the architecture, time must be spent planning and designing your application before you can develop and implement it successfully.

Planning

Before attempting to develop any CS application, you must understand the organisation's objectives and what it hopes to achieve with the CS application(s). This will help you to determine if a CS application is capable of meeting the organisation's objectives.

If a CS application does appear to be suitable, the next step is to identify the scope of the application. This will mean identifying the boundaries of your application so that everyone is aware of its functionality.

Identifying the scope of your application will also help you determine if your application needs to be integrated with any current systems. If this is the case, you must identify what data needs to be exchanged between any current system and the application you will develop.

The next step is to assess the technology in use. Is there a local area network in place? If so, is it capable of supporting your CS application (taking into account such things as the amount of communication between client and server and the volume of data being passed between the two) as well as any current traffic flowing through the network?

Introducing new technologies can be difficult especially when you still have to deal with ongoing business operations. The introduction of CS technologies requires the identification of technological, operational and organisational issues in order to experience the benefits associated with CS technologies. This planning can be organised into a three tier framework made up of strategic planning, tactical planning and operational planning [7].

The purpose of strategic planning is to set objectives and goals. It involves identifying the objectives of the organisation in terms of products and services, growth targets and how to achieve those objectives [7].

Tactical planning deals with identifying possible methods to achieve the goals identified in the strategic plan. In most cases, the methods are directly related to budgetary issues.

Operational planning deals with the organisation required to implement a tactical plan whilst still performing ongoing business operations. This should take into account such things as resource allocation, information monitoring and the management of projects currently in progress.

Organisational challenge

Although it may be hard to believe, the main problems associated with a CS architecture tend to be politically, rather than technically based, because the CS architecture represents a paradigm shift in relation to the processing of information. Therefore it is vital that three political problems be addressed before CS technology is introduced:

  • Organisation
  • Resources
  • Functionality.
Organisation

Highly compartmentalised proprietary hardware and software which was previously stored in a central repository known as the corporate data centre, will now be replaced with multivendor hardware and software that may be poorly integrated. This can lead to disputes regarding the control of, and responsibility for, various components of a CS architecture.

Resources

The allocation of human resources plays a significant role in determining whether a CS project succeeds or fails. It may seem logical to appoint the old communication/network specialist the role of installing and supporting the new environment, however these specialists will now be confronted with hardware and software that is simplistic, relatively unstable and lack vendor support. This can lead to a situation in which the specialist uncomfortable, or in which the specialist's skills cannot be fairly assessed.

Functionality

The introduction of CS technology forces the data centre to move into new functional areas within the organisation. So it is important to identify exactly what those functions will be. The fact that the mainframe environment didn't support the integration of mainstream mission-critical business applications with desktop based administrative, management and planning tools forced end-user departments to take over the desktop and often establish their own LAN in order to use these functions. CS technology is however capable of doing this, but in order to provide the necessary functions the end user departments must have some control over the CS implementation.

Methodology

In many cases businesses may be unfamiliar with the process of introducing CS technologies That's why many businesses will focus on an appropriate methodology for the introduction and adoption of the new technology. A methodology can be defined as

... a set of well documented steps that are to be performed in order to achieve some objective. [7]

The track record for methodologies, in the CS environment or any other environment however, has been poor. Some of the reasons for this are that methodologies:

  • Tend to show a flat, linear flow of activities when in actual fact most steps involve some form of repetition
  • Seldom take into account the size of the system being developed
  • Often tell us how to do something instead of specifying what needs to be done, thereby limiting the effectiveness of the methodology [3].
I f you adopt a methodology to assist you in the development of CS technologies, be sure to select a well established one. It should also be designed for projects of a similar size and scope to the one you will undertake. The methodology should also be easy to implement and understand.

Re-engineering tools and techniques

The process of re-engineering can be difficult but past experience has shown that there are several tools and techniques available to developers that can assist them in this task.

The technique of data-flow analysis attempts to provide a clearer understanding of the problem space by identifying the processes that take place within that space and the flow of information between those processes [7].

Cause-and-Effect diagrams are graphical aids that enable the identification and classification of problems and their causes.

Rapid prototyping is a technique used to quickly develop a number of user interface alternatives, in an iterative fashion, which can be refined with the help of the user.

Data analysis

Information is considered to be the most valuable asset of any business. It's therefore important to model the information in order to determine how the information is used and how it should be structured. Information modelling can be done at the conceptual, logical and physical level. It is important that these models be correct as they will affect the performance of your application and in extreme cases, prevent your application from performing properly.

Architectural design

Depending on the situation, your CS application may cover a variety of functions. In order to maintain your application, you should select an appropriate architecture for it. Techniques such as the structure chart diagram can help you organise your application into a hierarchical network of interrelated functions.

Client-Server issues

Besides taking into account all the aforementioned factors when developing a CS application, there are also some specific design issues that need to considered.

Whether you place a function at the client or server end can affect the overall performance of your application. You should consider each function individually before deciding where it will reside.

Data distribution is a must in order to obtain certain performance levels. Data distribution does have its own problems such as ensuring consistent data throughout the network, making data distribution transparent, dealing with failures and deciding who should own the data, but these are minimal when compared to the benefits. [6]

Security

As CS systems become more and more common within organisations the need to ensure they are secure from attack also increases.

From the perspective of Sybase for example, there are four levels of security that are incorporated in securing the Sybase SQL server. These are the operating system, the Sybase server, the Sybase database, and the Sybase object.

The first level of security, the operating system, requires a login name and password, which can be a potential restraint for a "would-be" hacker. For example, Windows NT prompts you for a login name and a password upon booting any client machine within the network.

To obtain entry into the Sybase SQL server, you must also enter a login name and password. The next level of security is within the database and guards the tables within it. Sybase SQL server is designed so as to relate different access levels with login names, and ensures limited access to users based on their level of authorisation.

Finally, permissions further restrict access rights in regard to the table contents (rows and columns), for example a given user may be restricted to viewing only of certain columns, but may have write permission in others.

These levels of security are all designed to stop unauthorised access to an organisation's vital data.

Conclusion

As the benefits of CS technologies are realised, the demand for high quality applications will increase. The real power of CS applications comes from the developer's ability to tailor each application to suit the needs of the business and provide that service in an optimal way at the point of need without overly impacting the needs of other users.

Bibliography

[1] Berson, A and Anderson, G 1995, Sybase and Client/Server Computing, McGraw-Hill Inc

[2] Coulouris, G 1994, Distributed systems, Concepts & Design, Addison Wesley Publishers Ltd

[3] Inmon, W H 1993, Developing Client Server Applications, Revised Ed, Vol 1

[4] Johnson, H J 1996, Fast Ethernet: Dawn of a New Network, 1st Ed, Vol 1, Prentice-Hall

[5] Panttaja, J, Panttaja, M, and Bowman J 1996, The Sybase SQL Server Survival Guide, John Wiley & Sons, Inc

[6] Renaud, P 1996, Introduction to Client/Server Systems: A Practical Guide for Systems Professionals, 2nd Ed, Vol 1

[7] Vaughn, L 1994, Client/Server System Design & Implementation, 2nd Ed, Vol 1

Web site references

http://www.sybase.com/products/databases/sql_server/information/index.html

http://www.benchmarkresources.com/database_vendors.html

http://www.webopedia.internet.com/TERM/SSQL.html

About the authors
Chris and George are completing their Bachelor's Degrees in Computing this year and Lin is a PhD Student, all at Monash Caulfield.

Reprinted from the February 1999 issue of PC Update, the magazine of Melbourne PC User Group, Australia

[About Melbourne PC User Group]