Client/Server-Architecture Content Client/Server Beginnings 2-Tier, 3-Tier, and N-Tier Architectures Communication between Tiers The Power of Distributed Objects Managing Distributed Systems The State of Distributed Systems Client/Server Beginnings Persistent storage mechanism for maintaining state between program invocations processing that supports the storage and retrieval of persistent data (including concurrent access) all other processing Separating processing between computers
Client/Server Beginnings Maintaining a database on a server separate from a client allows for: greater security reliability performance Reducing high cost of monolithic systems Client/Server Beginnings Relational Database vendors promoted the first major movement to Client/Server Compute intensive clients that maintained their persistent data within relational databases located on separate machines Clients typically used SQL and database network driver to communicate with the DB-Server
Client/Server Beginnings SQL s biggest strength is, that it is a nonprocedural mechanism for accessing data ( what vs. how ) but: no processing semantics within a query large amount of data transferred between Client and Server lead to the use of: Stored Procedures Client/Server Beginnings Stored Procedures is code executed on the Server side within the DBMS traffic between Clients and Servers is reduced stored procedures can be shared between multiple Clients but stored procedures are vendor specific and therefore non-portable
2-Tier Up till now all was 2-Tier management of database (second Tier) all other processing (first Tier) But: Business can not depend on one vendor Specific features like stored procedures. Need a different strategy for distributing the work 3-Tier Further separation was found in the Client side processing: Application presentation (Client tier) Business logic processing (Middle tier) Persistent data management (Data tier) which resulted in the 3-Tier Architecture
3-Tier Interesting Topics Performance Scalability Client-Tier applications independent of Data-Tier Database Dynamics for Business-Tier applications But what about the Internet? N-Tier? N-Tier Structure of an Internet N-Tier Architecture Tier 1: Client-Tier implemented by a Web browser Tier 2: Middle-Tier distribution mechanism implemented by a Web server Tier 3 - (N-1): Middle-Tier service(s) Tier N: Data-Tier storage mechanism implemented e.g. by a relational database
N-Tier: An Example Client Web Server Servlet JSP Application Components DB Communication Between Tiers Traditional Methods: TCP/IP Open Database Connectivity (ODBC, JDBC) Remote Procedure Call (RPC) e.g. DCE Object-Oriented Programming: COM+ CORBA and CORBA Components JAVA - RMI and EJB
The Power of Distributed Objects Objects are excellent units of distribution Maintain state Communicate via messages Open Questions Transparent use? Language independence? Location? From Objects to Components Objects for encapsulation and implementation reuse Components for pluggability, that's encapsulation to an extreme level and reuse public interface as a contract implementation language is unknown physical location of the component is unknown
Managing Distributed Systems Naming Licensing Security Transactions Messaging Distributed garbage collection Resource management The State of Distributed Systems Language choice is no longer a primary consideration Process and machine boundaries are more easily crossed Internet and push technologies offer new delivery mechanisms
Conclusion Distributed N-Tier applications will dominate in the enterprise systems arena Distributed object technology provides the most powerful mechanism currently available