- Object-Oriented Technology
- Component-Oriented Technology
- Technology Ownership
- Client-Server Technology
- Internet Technology
- Architectural Layers and When to Use Them
- Software Application Experience
- Technology and Application Architecture
- Applying Standards to Application Systems
- Distributed Infrastructures
- Conclusions
- Exercises
3.4 Client-Server Technology
Client-server technologies are the result of the evolution of software technology supporting application systems. In particular, the evolution of client-server technologies has been an important factor in the expansion of information technology across an increasing range of application business processes. Originally technologies focused on file sharing. File sharing is still the dominant paradigm of the Internet today with protocols such as HTTP supporting access to the global file systems available. File server technologies evolve into a second generation of capabilities dominated by a database server technology. It is important to note that the file server technologies have been closely linked with the evolution of distributed computing technologies.
Increasingly, client-server technologies are being replaced by N-Tier component-oriented solutions. Based upon Java application servers, the N-Tier solutions include support for thin-client user interfaces with increased scalability and reliability.
One of the most successful networking technologies came from Sun Microsystems and was called network file server. Sun Microsystems was successful in encouraging the de facto standardization of that technology by providing free reference technology access in terms of source code for implementation on arbitrary platforms. Network file server technology is based upon open network computing, another Sun Microsystems technology that was one of the first successful generations of distributed computer technology. The network file server was a procedurally based technology closely tied to the C programming language, as was the other important remote-procedure-call technology called the distributed computing environment. Both technologies resulted in file-sharing capabilities that were widely implemented. The database server technologies utilized these underlying distributed computing capabilities to provide remote access to database systems from a variety of client platforms.
Another important technology that arose during the database generation was that of transaction-processing monitors. Transaction-processing monitors enable the consistent and reliable maintenance of data integrity across distributed systems. Transaction-processing technology continues to be an important add-on capability to distributed computing technologies to ensure robustness and integrity of implementations.
Groupware technologies also arose in the late 1980s and early 1990s starting with email and evolving to higher forms of interactivity, some of which can be seen on the Internet today (e.g., chat rooms and videoconferencing). Recently, the technologies of object orientation, distributed computing, and the Internet have merged to support adaptable computing environments that can scale to global proportions. This generation of technologies is supported by application servers primarily based on Sun's Java or Microsoft's .Net platform.
The client-server technologies initially arose as an evolution of mainframe-based technologies. Mainframe-based technologies were a natural outgrowth of single-processor systems that date back to the origins of computing. In a mainframe technology, the processing and management of data in the system is completely centralized. The mainframe is surrounded by a number of peripheral client terminals that simply support presentation of information. In the client-server generation of technologies, the client computer has become a significant processing resource in its own right. Client systems that arose during the personal computer revolution are now capable of processing speeds that rival and greatly exceed that of former minicomputer and mainframe computer generations. Initially, in order to support access to data in departments and enterprises, client-server technology supported the connection through local area networking to the back-end mainframe minicomputer and workstation server systems. The technology at the software level supporting this communication is called middleware.
"Genius might be that ability to say a profound thing in a simple way."
Charles Bukowski
History
Initially, middleware was installed as a custom capability to support client-server networking between PCs and server platforms. As technology evolves, middleware is becoming embedded in the operating system so that it is a natural capability of client platforms as well as server platforms. Client systems with embedded middleware can now support on-board services to applications running locally and across the network. This evolution of client-server technology to an embedded capability has added many new challenges to the implementation of application systems. In fact, there are various antitheses to the client-server evolution, including a resurgence of the mainframe platform as a significant business of IBM and the capability called the network computer which begins to resemble the dumb terminal of mainframe days (Figure 3.5).
Figure 3.5. Origins of Client Server Technologies
Object technologies are organized around client-server capabilities. Object technologies come in two primary categories. Some are organized to serve the process of software development. Examples of these technologies include object-oriented analysis and object-oriented design. Object-oriented analysis comprises the definition of information technology capabilities that are models of current and future business processes. Object-oriented modeling provides rich capabilities for representing business entities and business processes. This is in contrast to procedural and relational database technologies, which require the application designer to compromise the representation of the business environment to the constraints of the technology in terms of control flow and data representation. Object-oriented analysis, because of the natural correspondence of state information in process, provides a mechanism for modeling reality that is relatively easy to communicate with end-users. Because end-user communication is facilitated, the design and validation of object-oriented systems is greatly enabled.
Object-oriented design is another major software phase that has been successful commercially in the software process market. Object-oriented design comprises the planning of software structure and capabilities that support the reduction in software defects and rapid prototyping of software capabilities.
The other major category of object technology focuses on implementation. At the center is object-oriented middleware technology. Object-oriented middleware supports distributed computing and the integration of various heterogeneous software technologies including operating systems, programming languages, and databases. Object-oriented programming languages are the direct expression of the object paradigm. Object-oriented programming languages support the encapsulation of data with process in the form of abstract data types in component objects. There are as many object-oriented programming languages as there are procedural languages. The predominant languages for object-oriented programming include C++, the Java language, and increasingly C#, but a significant number of communities support Eiffel and other languages. Object-oriented middleware allows these languages to interoperate to form applications. Object-oriented programming languages are one possible choice for implementation of application software. It is also possible to utilize object-oriented analysis and design to support programming in procedural languages. This occurs frequently, as many corporate development environments use procedural languages for their mainstream languages, such as the C programming language and COBOL.
One of the important qualities of object orientation is that the developer should not have to be concerned about the underlying implementation. If the underlying implementation is procedural or is object-oriented, it should not and does not matter if the applications are properly encapsulated. Distributed object middleware supports the opaque encapsulation property, which makes this possible. The integration of commercial software with legacy and object-oriented applications is also enabled as a result of these encapsulation properties (Figure 3.6).
Figure 3.6. Role of Middleware
Object-oriented middleware technologies can be viewed as an outgrowth of their procedural producers. Beginning with operating systems, procedural technologies supporting interprocess communication were added to enable file sharing and the evolution of client-server capabilities (Figure 3.7). Some of these technologies include the Remote Procedure Call (RPC) technologies such as Open Network Computing (ONC) and Distributed Computing Environment (DCE). The RPC technologies were preceded by socket-level technologies, which are a more primitive form of messaging. Today, all these technologies are still used actively in application systems and on the Internet. The object-oriented middleware technologies provided a next generation of capabilities, which bundled more of the application functionality into the infrastructure.
Figure 3.7. Middleware Reference Model
Distributed Components
It is interesting to note that previous generations of interprocess communication technology were marketed with the promise of universal application interoperability. Component-oriented technology is marketed the same way today. Distributed object-oriented middleware has the advantage of retrospection on the shortcomings of these previous technology generations. It was found that even though remote-procedure-call technologies enabled the integration of distributed software, the primitive level of these technologies required substantial application programming in order to realize systems. Once the systems were implemented, the systems tended to be fairly brittle and difficult to maintain.
Microsoft, in 1996, released DCOM as a multimedia middleware technology for the Internet. DCOM still exposed many of the lower level primitive details, which were the downfall of remote procedure calls. DCOM added some object-oriented capabilities and a natural integration support for C++ programming. Simply adding the capability to support C++ didn't necessarily overcome the procedural route that exposed excessive complexity to distributed system developers in the DCOM predecessor called the distributed computing environment. However, with the release of the current generation of product, Microsoft .Net, Microsoft has created an enterprise development environment that can compete favorably with the capabilities of the more mature J2EE application servers.
The Common Object Request Broker Architecture was the first technology to be designed from the ground up to support distributed object-oriented computing. Figure 3.8 shows that there is a partitioning of a technology market between the Microsoft technology base and virtually all other information technology vendors. The other vendors support various open system technologies that are the result of consensus standards processes. CORBA is universally accepted as the vendor-independent standard for distributed object middleware. CORBA simplifies distributed computing in several ways. The most significant advance is the language independence that CORBA provides, allowing multiple programming languages in heterogeneous environments to interoperate using object messaging.
Figure 3.8. Distributed Technologies in Context
Above the middleware layer are other technologies that support further integration of application functionality. In the Microsoft technology base, these technologies have been grouped into a brand name called .Net. The .Net technologies include a substantial reinvention of middleware capabilities that eliminate interface definition languages. The CORBA capabilities are widely available today and support multiple programming-language integration from multiple vendor platforms.
CORBA technologies are the product of an open systems consortium process called the object management group, or OMG. The OMG has over 700 member organizations including all major vendors in information technology, such as Sun Microsystems, Hewlett Packard, IBM, Netscape, and Microsoft. The OMG has addressed the problem of application software interoperability by focusing on the standardization of programming interfaces. With previous generations of remote-procedure-call technologies, the only widely adopted standard interface was the network file server, which is really the most primitive form of software interoperability beyond exchange of removable media. It is important for end-users to provide their requirements and interact with open systems processes because they shape the form of technologies that will be used for end-user system development. In particular, sophisticated users of technologies can encourage open systems consortia and software vendors to provide more complete capabilities to enable the development of complex systems. This reduces technology risk and creates more leverage for application developers.
The CORBA technologies are centered around the object request broker that the component standardizes (Figure 3.9). In the object management architecture, which is the route node of OMG diagrams, there are several categories of objects. The object request broker is distinguished because it is the object through which all the other categories of object communicate. The object management architecture is conceptually a layered architecture that includes increasing levels of specificity for domain application implementation. The most common capabilities embodied by object technologies are standardized through the object request broker. The next level of capabilities is called the CORBA services, which provide enabling functions for systems implementation. The CORBA services are comparable in functionality to current operating-system services that are commonly bundled with platforms. The CORBA services provide the first step toward a distributed operating system capability that supports the integration of application software and commercial software across all types of platforms and environments.
Figure 3.9. Object Management Architecture
CORBA technology is widely available today and is a mainstream technology available on virtually every operating-system platform. Some of the more innovative platforms, including the Netscape Communicator, which could be considered an operating-system platform in its own right, are bundling CORBA with all of their deliverable licenses. Microsoft also supports the CORBA technology market by delivering specifications that enable interworking with the Microsoft infrastructure workings. The OMG has standardized interworking specifications for both COM and COM+ generations of Microsoft technologies. These standards are available on products on major CORBA implementation systems today.
In addition, third-party vendors are providing direct support for CORBA. These include vendors like Black and White software, which provide graphical user interface development tool kits, database vendors, system management vendors, and specialty market vendors such as real-time and computer-aided software engineering tools. CORBA provides the interface definition language, which is the key capability fundamental to object orientation. The interface definition language is a notation for defining software boundaries. IDL is a specification language that enables the description of computational software architectures for application systems as well as international standards for interoperability.
The interface definition language from CORBA has also been adopted by the international standards organization and the formal standards counterparts for telecommunication systems. IDL is the international standard DIS14750. As such, IDL is a universal notation for defining application program interfaces in software architectures. Because IDL is programming-language independent, a single specification will suffice for defining software interfaces on any language or platform environment. IDL interfaces support object-oriented designs as well as the integration of legacy software. Since the object management group is the only major standards consortium developing object-oriented standards specifications for software interfaces, IDL is synonymous with object technology open system.
IDL supports the integration of a diverse array of programming languages and computing platforms (Figure 3.10). With IDL, one can specify software interfaces that are compiled and readily integrated to available programming languages. These capabilities are available commercially and support distributed communication in a general manner.
Figure 3.10. Technology Independence of the Interface Definition Language
This section discussed how mainframe technology has evolved into client-server technologies with middleware providing the distributed computing software capabilities. Because client-server technologies have merged with object technologies, it is now possible to provide object-oriented capabilities that augment legacy systems across most or all programming environments. In addition, interoperability between CORBA and the Microsoft counterpart called COM+ enables the coverage of popular platforms on many organizational desktops. The vendors supporting open systems also support CORBA. The dominant Internet vendors are delivering CORBA and associated protocol stacks to numerous licensees. CORBA is the standard for object-oriented middleware. The products are available now as are the horizontal services specifications that enable application development. The OMG is proceeding to develop the vertical specifications that will provide direct support for application-level interoperability.
The ISO has supported the designation of CORBA IDL as a standard for the definition of software interfaces across all computing environments.
Object orientation is a natural paradigm for modeling real-world information and business processes. Object technology supports the integration of heterogeneous and distributed information technologies that include legacy systems (Figure 3.11). Combining object orientation and component technology enables the creation of ambitious system concepts, which are increasingly becoming the competitive advantage of application companies and end-users.
Figure 3.11. Interoperability Vision for Object Technology