Executive Summary
More and more companies are embracing the Delphi Client/Server
Suite for the development of complex, mission critical, applications.
Delphi Client/Server Suite steps up to meet and exceed the rapidly
growing challenges for data accessibility and Return On Investment
(ROI). Delphi Client/Server Suite provides developers with the
scalability necessary to develop traditional two-tier and three-tier
Client/Server applications.

Delphi Client/Server Suite includes the essential technologies
for successful n-tier Client/Server development: object-oriented
architecture, open tools architecture, and an extensible, component
based development environment.

The Bank of First Chicago has turned to Delphi Client/Server and
AT&T/NCR's TopEnd middleware product for the development and
enhancement of their Funds Transfer Processing System. Spectra
Securities of Canada has implemented a three-tier financial management
system using Delphi and EZRpc from NobelNet. Spectra developed
new solutions which leveraged existing legacy applications.

Why multi-tier?
Multi-tier Client/Server architecture offers the developer a methodology
for building Client/Server applications based on an extensible,
reusable, component based, model. This architecture provides for
clean standardized interfaces between logical-component levels
called 'Tiers'.

The Garner Group has stated that it believes that multi-tier architectures
will become increasingly important in 1997 and beyond. While the
number of companies who actually require this technology is somewhat
small, the applications work with thousands of clients,
with very high transaction volumes, distributed over wide-area
networks.

Although your business my not need to employ a multi-tier infrastructure
today, it is important that your applications and development
tools have the ability to scale into these high transaction-volume
environments tomorrow. Where other development tools "hit
the wall" when attempting to scale, Delphi's RAD (Rapid Application
Development), object-oriented, and extensible development environment
allow developers to go right over the wall without looking back.

Part I of this document introduces the concepts of two-tier and
multi-tier development, explains their significance, and shows
how Delphi Client/Server provides great tools for C/S development.
Part II will present case studies from the companies mentioned
above and others.

Delphi strengths for 2-tier and n-tier development

Object-oriented architecture for business objects

Delphi Client/Server Suite's object-oriented architecture allows
the developer to create 'business objects.' Business objects implement
business rules critical to maintaining valid data. Developers
gain all the advantages of using and developing standard interfaces
and can leverage key features of object-orientation, such as inheritance
and polymorphism.

Delphi Client/Server Suite 2.0 adds DataModules. DataModules are
containers for data access methods and business rules. DataModules
make it even easier to separate out the tiers of a n-tier application.

DataModules can be stored in the repository and descendants created
for use in other applications. The same business rules can be
shared among a team of developers and applied to many different
applications, ensuring consistent logic.

Extensible, component-based, development environment
Delphi Client/Server Suite has an entirely component-based architecture,
its capabilities are easily extended by the developer through
the creation of custom components. These components can then be
shared amongst development teams to provide greater code re-use
and lead to higher productivity.

Delphi's extensible architecture allows DEC, Nucleus, NobleNet,
Open Environment Corporation, Open Horizon , and IONA Technologies
to build component based solutions for multi-tier systems. These
vendors provide a variety of solutions, from middleware-connectivity,
to a complete array of middleware services.

Open Tools Architecture
Delphi Client/Server Suite's open-tools architecture makes it
easy for developers and third-party solution providers to integrate
the latest technologies into the Delphi C/S Suite. Already established
enterprise wide services developed for Tuxedo, Encina, CICS, TopEnd,
Entera, have been successfully integrated into Delphi applications.
Additionally, the developer can take advantage of custom application
services via standard RPC mechanisms. Delphi Client/Server Suite
can take advantage of the CORBA infrastructure through COM, Network
OLE, and Remote OLE.

The Delphi Client/Server Suite empowers the developer to develop
applications which fit the business needs of today and scale to
meet tomorrow's challenges. As new technologies evolve for n-tier
application development, Delphi Client/Server Suite's extensible
architecture can be expanded by the developer to meet new or custom
requirements. Applications achieve blazing performance, thanks
to Delphi Client/Server Suites' 32-bit highly optimized native
code compiler.

Two-tier architectures
About the terms 'Client/Server,' 'two-tier,' and 'three-tier'
The term 'Client/Server' has traditionally been associated with
a desktop PC connected over the network to some sort of SQL-database
server. In fact, the term Client/Server formally refers to a logical
model that provides for a division of tasks into 'client' and
'server' layers or 'tiers'. The two-tier physical representation
that we have become accustomed to is actually just one possibleimplementation of the Client/Server logical model. Mainframe
programmers have employed the Client/Server model for years and
most mainframe applications have a Client/Server architecture.

There are no limitations to the number of tiers an application
may have. The 'three' in three-tier represents the most common
number of logical separations for an application. These logical
separations are broken down into Presentation, Application,
and Data services, as described further below.

Two-tier architecture
Two tier Client/Server provides a basic separation of tasks. The
client, or first tier, is primarily responsible for the presentation
of data to the user and the 'server,' or second tier, is primarily
responsible for supplying data services to the client.
So far, so good.

Figure 1. Two-tier Client/Server architecture

Presentation services'Presentation services' refers to the portion of the application
which presents data to the user. In addition, it also provides
for the mechanisms in which the user will interact with the data.
More simply put, presentation logic defines and interacts with
the user interface. The presentation of the data should generally
not contain any validation rules. Delphi Client/Server Suite's
Rapid Application Development (RAD) approach to application development
and component architecture allows the developer to easily assemble
the presentation layer and move quickly from prototype to production.

Business services/objects 'Business services' are a category of application services. Business
services encapsulate or componentize an organizations business
processes and requirements. These rules are derived from the steps
necessary to carry out day-today business in an organization.
These rules can be validation rules, used to be sure that the
incoming information is of a valid type and format, or they can
be process rules, which ensure that the proper business process
is followed in order to complete an operation.

Through Delphi Client/Server Suite these services can be encapsulated
in Delphi components which can then be shares amongst development
teams providing for easier maintenance and component/code reuse.

Application services'Application services' provide other functions necessary for the
application.

Where do application logic and business rules
reside in two-tier Client/Server?
As Figure 1 depicts, both
business rules and application logic can reside on either the
client or the server. The Client/Server division doesn't apply
to them. The resulting lack of clarity raises several critical
issues: reuse, scaleability, and maintenance. Delphi Client/Server
offers a number of features which ameliorate these issues, and
an n-tier architecture provides further resolution.

Three-tier architecture
A 'Multi-tier', often referred to as 'three-tier' or 'n-tier,'
architecture provides greater application scaleabilty, lower maintenance,
and increased reuse of components. Three-tier architecture offers
a technology neutral method of building Client/Server applications
with vendors who employ standard interfaces which provide services
for each logical 'tier'.

Figure 2. Three-tier Client/Server architecture

Through standard tiered interfaces, services are made available
to the application. A single application can employ many different
services which may reside on dissimilar platforms or are developed
and maintained with different tools. This approach allows a developer
to leverage investments in existing systems while creating new
application which can utilize existing resources.

Multi-tier architectures
A multi-tier, three-tier, or N-tier implementation employs a three-tier
logical architecture superimposed on a distributed physical model.
Application Servers can access other application servers in order
to supply services to the client application as well as supply
services for other application servers.

For example, in the diagram below the client application looks
to Application Server #1 to supply data from a mainframe
based application. Application Server #1 has no direct
access to the mainframe application but, it does know, through
the development of application services, that Application Server
#2 provides a service to access the data from the mainframe
application which satisfies the client request. Application Server
#1 then invokes the appropriate service on Application Server
#2 and receives the requested data which is then passed on to
the client.

Application servers can take many forms. An application server
may be anything from custom application services, Transaction
Processing Monitors, Database Middleware, Message Queue to a CORBA/COM
based solution.

Conclusion
This paper has provided a quick overview of 2-tier and n-tier Client/Server terms, concepts and characteristics. It has shown how Delphi Client/Server has features which are important to Client/Server development and can help developers leverage existing legacy applications.