Upcoming Events

Cloud Connect
Santa Clara
Feb 13-16, 2012

Cloud Connect brings together the entire cloud eco-system to better understand the transformation we're experiencing and promises to be the defining event of the cloud computing industry. Learn about the latest cloud technologies and platforms from thought leaders in Cloud Connect’s comprehensive conference.

Register Now!

More Events »

Subscribe to Newsletter

  • Keep up with all of the latest news and analysis on the fast-moving IT industry with Network Computing newsletters.
Sign Up

Client/Server Fundamentals
February 8, 1999

Summary, Case Study, Problems and Exercises

An object-oriented client/server Internet (OCSI) environment provides the infrastructure (i.e., middleware, networks, operating systems, hardware) that supports the modern distributed applications. We have reviewed the key concepts and building blocks of this enabling infrastructure. In summary:

l The client/server model is the most popular model for distributed applications at the time of this writing. Typically, this allows a user program at a workstation to act as a client issuing requests to programs and databases that may be located at many remote computing sites.

l The distributed object model extends the scope of the client/server model to include interactions between remotely located objects.

l The Web allows access to a multitude of information sources through Web browsers.

l Object-oriented client/server Internet (OCSI) environments combine the object-orientation, client/server and Internet concepts to deliver business functionality.

l OCSI applications represent the business logic as objects that may reside on different machines and can be invoked through Web services.

l Middleware supports and enables the OCSI applications. The middleware services have evolved and continue to evolve since the early 1990s.

l Network services transport the information between remote computers. Networks are largely moving towards TCP/IP.

Application engineering/reengineering in OCSI environments is not trivial and requires detailed architectural analysis of various applications as well as platform issues. Examples of the issues are performance trade-offs, security, flexibility, access/integration of legacy systems, and the interoperability and portability of client side software with server side software supplied by different vendors. We will discuss these issues in Parts II and III of this book.

2.10 Case Study: XYZCorp Review of IT
Infrastructure Architecture

XYZCorp wants to review the IT infrastructure architecture that should serve as the platform for all the services and applications to be provided by XYZCorp. In particular, it should show how the networking services, the middleware components, and other services will support the growing number of Web-based OO applications that will also utilize mobile computing and groupware. This architecture should allow different applications and users at different sites to communicate with each other ("any data from any application anywhere in the company"). The current platforms consist of a variety of devices. The regional offices house minicomputers (mainly UNIX) which are connected to the corporate mainframe (MVS). The regional computers maintain regional inventory, customer information, and prices of items sold in the region. Some regions (e.g., Atlanta and San Francisco) are very UNIX-oriented; other regions have Novell LANs. The corporate headquarters is IBM mainframe-oriented (MVS, DB2, IMS, SNA, Token Ring). PCs are used commonly throughout the organization.

Hints about the Case Study

A high level view of the XYZCorp architecture is shown in Figure 2.18. There are two broad levels of interconnectivity:

l Network-to-network interconnectivity (bridges, routers)

l Applications-to-application interconnectivity (middleware)

Figure 2.18 XYZCorp IT Infrastructure High-Level View

Figure 2.19 shows the middleware components of this architecture. We have shown a few components for the purpose of illustration. The sites where the servers (Web servers, group servers, database servers, etc.) will be housed and the protocols to be used by each of these servers are suggested. The protocol "stack" at each client is also shown.

2.11 Problems and Exercises

1. Present a different view of how client/server systems interrelate with distributed computing systems.

2. Give an example of a distributed application that does not use the client/server model.

3. Describe at least three different ways that you can invoke distributed object services from Web browsers, including applets.

4. Draw a conceptual diagram of IT infrastructure in an environment of your choice (e.g., business, finance, engineering, manufacturing).

5. List the factors you will use to evaluate off-the-shelf middleware to support OCSI applications.

2.12 APPENDIX 2A: Object-Oriented Concepts

2.12.1 Key Concepts

The purpose of this short tutorial is to give you the basic OO concepts that are of relevance to object-oriented client/server Internet environments. The basic object concepts are comprised of object, message, class, and inheritance.

Objects. Objects are data guarded by a protective layer of code. Figure 2.20 shows the conceptual view of a customer object. The data represent the attributes of the object and the code that surrounds the data represents the methods of the object. Methods are the only way any outsider can interact with the object (you cannot directly view or update customer balance without invoking the "Get-Balance-Due" or "Adjust-Balance" methods). Basically, an object is represented by at least two properties: attributes and methods. Attributes uniquely identify an object and a method shows the object behavior (what it can do or what can be done to it). A method hides the implementation details from the users of an object. A method typically receives a message, performs some operations, and sends the response back. An object essentially is a collection of attributes and the valid methods that manipulate the data elements.

Figure 2.19 XYZCorp IT Middleware Architecture

Figure 2.20 Conceptual View of a Customer Object

Messages. Objects interact with each other by sending messages. These messages invoke particular methods. A message is simply the name of an object followed by the name of an appropriate method. In addition, the message may contain a set of parameters that the invoked method needs. Figure 2.21 illustrates two messages sent to the customer object, one with parameters the other without. Each method of an object knows the list of messages to which it can respond and how it will respond to each. The object that receives the message is responsible for providing the code that is needed for the invoked object. The receiver should also advertise its methods and the parameters to be invoked for each method so that the outside world can take full advantage of objects.

Figure 2.21 Messages to Customer Object

Classes. A class is a template that represents the properties that are common among similar objects. The basic purpose of class is to define a particular type of object. For example, the class employee can be used to represent the common properties of all company employees. The common properties include attributes such as name, address, employee id, grade, pay scale, et cetera and methods such as view, update, terminate, and the like. So, if in a programming system you have identified object types such as employees, customers, and products, then you will define three classes to correspond to these object types. Each class will define the properties of each object type. The objects belonging to a particular class are known as instances of that class. For example, the objects Joe Smith, Harry Kline, and Pat Hemsath are instances of the class employee. Once you have created a class, you can create any number of instances of each class (object-oriented programming languages provide statements to create instances). The instances contain the information that makes them unique. For example, the object instance of Joe Smith will have information unique to Joe Smith.

Inheritance. Classes can be defined independently of each other. For example, the employee, customer, and product classes can be defined independently of each other. However, classes can inherit common properties from other classes. The properties to be inherited can be attributes as well as methods. A class hierarchy can be constructed where lower level classes (subclasses) inherit the properties from higher level classes (superclass). Figure 2.22 illustrates a class hierarchy. We can set up a class hierarchy for our employee class with subclasses such as managers, technical support, administrative support, consultants, visiting residents, and part-time staff.

2.12.2 Object-Based Versus Object-Orientation

The basic object concepts can be used to represent powerful programming systems. An object-based system is defined as follows [Chin 1991, Taylor 1994]:

object-based = objects + classes

For example, an object-based programming language supports objects and classes as a language feature but does not support the concept of inheritance. ADA and Modula-2 are examples. Object-based concepts are quite general and can be found in application programs that existed before objects became fashionable.

Our interest is in object-oriented systems that go beyond object-based systems. The following widely accepted definition of object orientation is given by [Wegner 1987]:

object oriented = objects + classes + inheritance

OOPLs support classes, objects, methods, messages, and inheritance (note that methods and messages are implicit in this definition). A more generalized definition, more suitable for distributed systems, is given by [Nicol 1993]:

object oriented = encapsulation + abstraction + polymorphism

Figure 2.22 Class Hierarchies (Source: [Umar 1993])

Let us review the three ingredients of this definition of OO. As we will see, this definition is quite similar to Wegner’s definition, albeit more general.

Abstraction. Abstraction focuses on the outside view of an object, that is, how it will appear to the outside world. The following definition of abstraction has been given by Booch [1994, page 39]:

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provides crisply defined conceptual boundaries, relative to the perspective of the viewer.

Thus abstraction allows us to group associated entities according to common properties, for example, the set of instances belonging to a class. Abstraction represents the object properties without attention to implementation details. Methods as well as messages support abstraction by focusing on the outside view of an object.

Encapsulation (Information Hiding). Encapsulation, also known as information hiding, prevents the clients from seeing the internals of an object. Encapsulation complements abstraction–encapsulation focuses on hiding the internals while abstraction focuses on presenting an external view. Encapsulation has been defined by Booch [1994, page 46] as following:

Encapsulation is the process of hiding all of the details of an object that do not contribute to its essential characteristics.

Encapsulation as well as abstraction are important to the design of an OO system, especially when the objects can be at different sites. In particular, each object must have two parts: an interface and an implementation. The interface of an object only captures its external view (i.e., the object name, the method to be invoked, the parameters to be passed). The implementation of an object contains the mechanisms that achieve the desired behavior (i.e., the code for each method). The interface is also known as the public part of an object and the implementation is known as the private part of an object.

Polymorphism. Polymorphism is a Greek term meaning "many forms." Polymorphism allows you to hide alternative procedures behind a common interface. Basically, you can use the same method name in more than one class. A popular form of polymorphism is inclusion polymorphism in which operations on a given type are also applicable to its subtype (for example, a printer will start all types of printers). Inclusion polymorphism is often implemented via an inheritance mechanism. Polymorphism is defined as the quality or state of being able to assume different forms [Taylor 1994]. Polymorphism can be displayed in messages and/or objects. An example is send the same message, "delete," to different objects that respond to it differently. For example, some objects may completely erase the information while the others may just flag it for erasure at a later stage. Polymorphism is considered to be one of the defining characteristics of object-oriented technology. It distinguishes object-oriented programming languages from more traditional programming. By allowing the same method name in different classes, you can use the same message (e.g., delete, print, draw) to get different results by simply pointing to a different class at run time. Thus polymorphism takes advantage of inheritance and "dynamic binding" (i.e., deciding at run time what object you want to communicate with).

2.13 Additional Information

Literature on IT infrastructure is growing steadily. This chapter has quickly scanned the topics that are discussed in great detail in Umar [1997]. Additional information can be found in the books by Berson [1993], Khanna [1993], Orfali [1994], Stevens [1990], Umar [1993], and Vaskevitz [1993]. State-of-the-market and state-of-the-practice articles on IT infrastructure appear regularly in trade journals such as Client/Server Today, Datamation, Database Programming and Design, and Data Communications. Analysis of IT infrastructure directions can be found in the reports published by the Gartner Group, Forrester Research, and the Yankee Group.

Adler, R., "Distributed Coordination Models for Client/Server Computing," IEEE Computer Magazine, April 1995, pp. 14—22.

Amaru, C., "Building Distributed Applications with MOM," Client/Server Today, November 1994, pp. 83—93.

Andrews, G. R., "Paradigms for Process Interaction in Distributed Programs," ACM Computing Surveys, March 1991, pp. 49—90.

Andrews, G., and Schneider, F., "Concepts and Notations for Concurrent Programming," ACM Computing Survey, Vol. 15, No. 1, March 1983, pp. 3—44.

Appley, G., and Gallagher, M., "A Framework for Manufacturing-Process Simulation Software," Object Magazine, May 1996, pp. 33-41.

Bell, T., Adam, J., and Lowe, S., "Communications," IEEE Spectrum 1996, January 1996, pp. 30—41.

Berners-Lee, T., "WWW: Present, Past, and Future," IEEE Computer Magazine, October 1996, pp. 69—77.

Berners-Lee, T., Cailliau, R., Pellow, N., Secret, A., "The World Wide Web Initiative" Proc. INET ‘93, Internet Society, San Francisco, 1993.

Berson, A., Client/Server Architectures, McGraw-Hill, 1993.

Birrel, A. D., and Nelson, B. J., "Implementing Remote Procedure Call," ACM Transactions on Computer Systems, Vol. 2, pp. 39—59.

Booch, G., Object-Oriented Design with Applications, Benjamin Cummings, 2nd ed., 1994.

Burr, T., "Framework Technology for Web Pages and Web Servers," Object Magazine, May 1996, pp. 46-49.

Chappell, D., Understanding OLE and ActiveX, Microsoft Press, 1996.

Chin, R., and Chanson, S., "Distributed Object-Based Programming Systems," ACM Computing Surveys, March 1991, pp. 91—124.

Comeau, Greg, "Networking with UNIX,'' BYTE, February 1989, pp. 265—267.

Comerford, R., "Computers," IEEE Software, January 1996, pp. 42—25.

Comport, J., "Packaged Applications: Buy an Application, Inherit an Architecture," Gartner Group Briefing, San Diego, February 1995.

Corbin, J. R., The Art of Distributed Applications: Programming Techniques for Remote Procedure Calls, Springer-Verlag, 1991.

Coulouris, G., and Dollimore, J., Distributed Systems: Concepts and Design, Addison Wesley, 1988.

Davis, R., "A Logical Choice," BYTE, January 1989, pp. 309—315.

Davis, J., "Object-Relational Databases," Distributed Computing Monitor, Patricia Seybold Group, February 1995.

Eckerson, W., "Searching for the Middleground," Business Communications Review, September 1995, pp. 46—50.

Edelstein, H., "Mining Data Warehouses," Information Week, January 8, 1996, pp. 48—51.

Fingar, P., "The Blueprint for Business Objects," SIGS Book and Multimedia, 1996.

Finkelstein, R., "A Client for Your Server," Database Programming and Design, March 1992, pp. 31—45.

Foley, J., "High Speed Processors," Information Week, January 1, 1996, pp. 39—41.

Frye, C., "N-Tier at Your Own Risk," Software Magazine, December 1996, pp. 80—89.

Gallagher, S., "Constructing Better Visual," Information Week, January 1, 1996, pp. 50—53.

Gantz, J., "Cooperative Processing and the Enterprise Network," Networking Management, January 1991, pp. 25—40.

Garlan, D., and Perry, D., "Introduction to the Special Issue on Software Architecture: Guest Editorial," IEEE Transactions on Software Engineering, April 1995, pp. 269—274.

Gibson, W., Neuromancer," Ace Books, New York, 1984.

Gillooly, B., "Multiprocessor Systems," Information Week, January 1, 1996, pp. 35—37.

Glass, B., "Relying on Netware NLMs," Infoworld, October 12, 1992, p. S80.

Gould, M., "Tomorrow’s Microkernal-Based UNIX Operating Systems," Patricia Seybold’s Group Report, Open Information Systems, August 1993.

Griswold, Charles, "LU6.2: A View from the Database," Database Programming and Design, May 1988, pp. 34—39.

Hackathoran, R., and Schlacvk, M., "How to Pick Client/Server Middleware," Datamation, July 15, 1994, pp. 52—56.

Hines, J., "Software Engineering," IEEE Spectrum, January 1996, pp. 60—64.

Hirsch, D., "Terminal Servers: Here to Stay," Data Communications, April 1990, pp. 105—114.

Hurwicz, M., "Connectivity Pathways: APPC or NETBIOS,'' PC Tech Journal, Vol. 5, No. 11, Nov. 1987, pp. 156—170.

IBM (International Business Machines), "Advanced Program-to-Program Communication for the IBM Personal Computer," Programming Guide, February 1986.

ISO/DP 9072/1 report, "Remote Operations Model–Notation and Service Definition," Geneva, Switzerland, October 1986.

Johnson and Reichard, Advanced XWindow Applications Programming, MIT Press, 1990.

Johnson, J., "Enterprise NOSs: Now is the Time," Data Communications, May 15, 1995.

Kernighan, B. W., and Pike, R., The UNIX Programming Environment, Prentice Hall, Englewood Cliffs, N.J., 1984.

Khanna, R., Distributed Computing: Implementation and Management Strategies, Prentice Hall, 1993.

Kim, W., Introduction to Object Databases, MIT Press, 1990.

Lewis, T., "Where is Client/Server Software Headed," IEEE Computer Magazine, April 1995, pp. 49—55.

Linthicum, D., "Reevaluating Distributed Objects," DBMS, January 1997, pp. 44—52.

Livingston, D., "Software Links Multivendor Networks," Micro-Mini Systems, March 1988.

Loomis, M., Object Databases: The Essentials, Addison Wesley, 1995.

Meade, D., "Object Lessons," Beyond Computing, July/August 1995, pp. 41—42.

Moad, J., "Double Impact," Datamation, August 1, 1992, pp. 28—33.

Mowbray, T., and Zahavi, R., The Essential CORBA, John Wiley, 1995.

Naylor, A., and Volz, R., "Design of Integrated Manufacturing System Control Software," IEEE Transactions on Systems, Man and Cybernetics, Vol. SMC-17, No. 6, November/December 1987.

Nehmer, J., and Mattern, F., "Framework for the Organization of Cooperative Services in Distributed Client/Server Systems," Computer Communications, Vol. 15, No. 4, May 1992, pp. 261—269.

Nesset, D., and Lee, G., "Terminal Services in Heterogeneous Distributed Systems," Journal of Computer Networks and ISDN Systems, 19 (1990), pp. 105—128.

Neuman, B., and Ts’o, T., "Kerberos; An Authentication Service for Computer Networks," IEEE Communications Magazine, pp. 33—37.

Nicol, J., et al., "Object Orientation in Heterogeneous Distributed Computing Systems," IEEE Computer, June 1993, pp. 57—67.

Nitzberg, B., and Lo, V., "Distributed Shared Memory: A Survey of Issues and Approaches," IEEE Computer, August 1991, pp. 52—60.

Nutt, G., Centralized and Distributed Operating Systems, Prentice Hall, 1992.

Orfali, R., Harkey, D., and Edwards, J., Client/Server Survival Guide, Van Nostrand Reinholt, 1994.

Orfali, R., Harkey, D., and Edwards, J., The Essential Distributed Objects Survival Guide, John Wiley, 1996.

Ozsu, M., and Valdurez, P., "Distributed Database Systems: Where Are We Now?" IEEE Computer, August 1991, pp. 68—78.

Pancake, C., "The Promise and the Cost of Object Technology: A Five-Year Forecast," Communications of the ACM, October 1995, pp. 32—49.

Pountain, D., "The X Window System," BYTE, January 1989, pp. 353—360.

Pree, W., "Frameworks–Past, Present, Future," Object Magazine, May 1996, pp. 24—27.

Ricciuti, M., "Universal Data Access," Datamation, November 1, 1991.

Ricciuti, M., "Here Come The HR Client/Server Systems," Datamation, July 1, 1992.

Rosenberry, W., et al., Understanding DCE, O’Reilly & Associates, 1993

Rumbaugh, J., et al., Object-Oriented Modeling and Design, Prentice Hall, 2d ed., 1994.

Rymer, J., "Business Objects," Distributed Computing Monitor, Patricia Seybold Group, January 1995.

Saunders, J., "A Survey of Object Oriented Programming Languages," Journal of Object Oriented Programming Languages, March/April 1989.

Scheife, R., X Protocol Reference Manual, O'Reilly and Associates, 1990

Schiller, J., "Secure Distributed Computing," Scientific American, November 1994, pp. 72—76.

Schlack, M., "The Key to Client/Server OLTP," Datamation, April 1, 1995, pp. 53—56.

Schulte, R., "Distributed Software Architecture in Full Bloom," Gartner Group Briefing, San Diego, February 1995

Sechrest, S., "An Introductory 4.3BSD Interprocess Communications Tutorial," Computer Science Research Division, Department of Electrical Engineering and Computer Science, University of California, Berkeley, 1986.

Shan, Y., "Introduction (Smalltalk on the Rise)," Communications of the ACM, October 1995, pp. 102—105.

Shatz, S. M, and Wang, J. P., "Introduction to Distributed Software Engineering," IEEE Computer, October 1987.

Sinha, A., "Client/Server Computing: Current Technology Review," Communications of the ACM, July 1992, pp. 77—96.

Snell, N., "The New MVS: Tuned to Serve?" Datamation, July 15, 1992, pp. 76—77.

Spooner, D., "An Object Oriented Data Management System for Mechnical CAD," IEEE, 1986 Conference on Graphics.

Stevens, W., UNIX Network Programming, Prentice Hall, 1990.

Svobodova, L., "File Servers for Network-Based Distributed Systems," ACM Computing Surveys, December 1984, pp. 353—398.

Tannenbaum, A., Computer Networks, 2d ed., Prentice Hall, 1988.

Tannenbaum, A., Modern Operating Systems, Prentice Hall, 1992.

Taylor, D., Object-Oriented Technology: A Manager’s Guide, Addison Wesley, 1994.

Trllica, C. "Software Applications," IEEE Spectrum, January 1996, pp. 56—59.

Umar, A., Distributed Computing and Client/server Systems, Prentice Hall, rev. ed., 1993.

Umar, A., Object-Oriented Client/Server Internet Environments, Prentice Hall, 1997.

Vaskevitz, D., Client/Server Strategies: A Survival Guide for Corporate Reengineers, IDG Books, 1993.

Vaughan-Nichols, S., "Object-Futures: The Top Ten Trends of 1997," Object Magazine, January 1997, pp. 54—55.

Vinzant, D., "SQL Database Servers," Data Communications, January 1990, pp. 72—86.

Wegner, P., "Dimensions of Object-Based Language Design," SIGPLAN Notices, Vol. 22, No. 12, Dec. 1987, pp. 168—182.

White, D., "SQL Database Servers: Networking Meets Data Management," Data Communications, September 1990, pp. 31—39.

Whiting, R.(a), "Getting on the Middleware Express," Client/Server Today, November 1994, pp. 70—75.

Whiting, R.(b), "Turning to MOM for the Answers," Client/Server Today, November 1994, pp. 76—81.

Wilbur, S. and Bacarisse, B., "Building Distributed Systems with Remote Procedure Calls," Software Engineering Journal, September 1987, pp. 148—159.

Wood, A., "Predicting Client/Server Availability," IEEE Computer Magazine, April 1995, pp. 41—48.

Wooding, T., "Business Frameworks," Object Magazine, January 1997, pp. 50—53.

Zuck, J., "Front-end Tools," PC Magazine, September 1992, pp. 295—332.

 

 


Go Home | Page 1 | 2 | 3 | 4 | 5 | 6 | Next Section


Print This Page


e-mail E-mail this URL

Research and Reports

Hypervisor Derby
August 2011

Network Computing: August 2011

TechWeb Careers