Cover image for Distributed systems architecture : a middleware approach
Title:
Distributed systems architecture : a middleware approach
Personal Author:
Publication Information:
San Francisco, CA: Elsevier, 2006
ISBN:
9781558606487

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000003592197 QA76.9.D5 P82 2006 Open Access Book Book
Searching...

On Order

Summary

Summary

Middleware is the bridge that connects distributed applications across different physical locations, with different hardware platforms, network technologies, operating systems, and programming languages. This book describes middleware from two different perspectives: from the viewpoint of the systems programmer and from the viewpoint of the applications programmer. It focuses on the use of open source solutions for creating middleware and the tools for developing distributed applications. The design principles presented are universal and apply to all middleware platforms, including CORBA and Web Services. The authors have created an open-source implementation of CORBA, called MICO, which is freely available on the web. MICO is one of the most successful of all open source projects and is widely used by demanding companies and institutions, and has also been adopted by many in the Linux community.


Author Notes

Arno Puder received his master's degree in computer science from the University of Kaiserslautern and his Ph.D. from the University of Frankfurt/Main, Germany. After working for Deutsche Telekom AG and AT&T Labs, he is currently a professor of computer science at San Francisco State University. His special interests include distributed systems and wireless sensor networks.

Kay R#65533;mer is currently a senior researcher and lecturer at ETH Zurich (Switzerland). He received his Ph.D. in computer science from ETH with a thesis on sensor networks. Kay holds a master's degree in computer science from the University of Frankfurt/Main, Germany. His research interests encompass sensor networks, software infrastructures for ubiquitous computing, and middleware for distributed systems.

Frank Pilhofer received his masters in computer science from the University of Frankfurt/Main, Germany. After completing MICO's CORBA Components implementation, he joined Mercury Computer Systems, where he now works on component-based, real-time data streaming middleware for Software Radio.


Table of Contents

About the Authorsp. viii
Prefacep. ix
1 Introductionp. 1
1.1 Infrastructures for Distributed Applicationsp. 1
1.2 Thematic Organizationp. 3
1.3 Target Groupp. 3
1.4 Chapter Overviewsp. 4
1.5 Ancillary Materialsp. 5
2 Basic Conceptsp. 7
2.1 Distributed Systemsp. 7
2.1.1 Characterizationp. 7
2.1.2 Transparencyp. 9
2.1.3 Communication Mechanismsp. 10
2.1.4 Client/Server Modelp. 12
2.1.5 Failure Semanticsp. 14
2.2 Object Modelp. 16
2.2.1 Characterizationp. 16
2.2.2 Terminologyp. 17
2.3 Middlewarep. 21
2.3.1 Middleware Tasksp. 21
2.3.2 The Structure of a Middleware Platformp. 22
2.3.3 Standardization of a Middlewarep. 23
2.3.4 Portability and Interoperabilityp. 24
2.4 Sample Applicationp. 25
2.4.1 The Account Examplep. 25
2.4.2 C++ Implementationp. 27
2.4.3 Distribution of the Sample Applicationp. 29
2.5 Summaryp. 30
3 Introduction to CORBAp. 33
3.1 Object Management Architecturep. 34
3.2 Overview of CORBAp. 35
3.2.1 CORBA Object Modelp. 37
3.2.2 Interface Definition Languagep. 37
3.2.3 IDL-Language Mappingsp. 38
3.2.4 Object Request Brokerp. 38
3.2.5 Invocation and Object Adaptersp. 39
3.2.6 Interoperabilityp. 39
3.3 The Creation Process of a CORBA Applicationp. 40
3.4 Application Development in C++p. 42
3.4.1 IDL Specificationp. 42
3.4.2 IDL Language Mapping for C++p. 43
3.4.3 C++ Server Implementationp. 44
3.4.4 C++ Client Implementationp. 48
3.5 Compiling and Executing the Applicationp. 50
3.5.1 Compiling the Applicationp. 50
3.5.2 Executing the Applicationp. 51
3.6 Application Development in Javap. 53
3.6.1 Java Server Implementationp. 53
3.6.2 Java Client Implementationp. 56
3.6.3 Compiling and Executing the Java Implementationp. 56
3.7 The Bootstrapping Problemp. 57
3.7.1 File-Based Bootstrappingp. 58
3.7.2 Object URLsp. 58
3.7.3 Command Line Argumentsp. 58
3.8 Naming Servicep. 59
3.8.1 Overviewp. 59
3.8.2 Name Server Daemonp. 60
3.8.3 Examplep. 61
3.9 Summaryp. 64
4 [mu]ORBp. 65
4.1 [mu]ORB Architecturep. 65
4.2 Transport Layerp. 67
4.3 Presentation Layerp. 70
4.3.1 Value Ranges of Typesp. 70
4.3.2 Representation of Type Instancesp. 71
4.3.3 Modeling of the Presentation Layerp. 74
4.4 Interoperability Layerp. 75
4.4.1 Protocol for Remote Operation Invocationp. 75
4.4.2 Structure of Protocol Data Unitsp. 77
4.4.3 Modeling of Protocol Data Unitsp. 79
4.5 Proxiesp. 81
4.6 Object Servicesp. 83
4.6.1 Life Cycle of an Objectp. 83
4.6.2 Object Referencesp. 84
4.6.3 Services on the Server Sidep. 86
4.7 Summaryp. 88
5 ORB Designp. 91
5.1 ORB Functionalityp. 92
5.2 ORB Architecturesp. 93
5.3 Design of Mico's ORBp. 94
5.3.1 Invocation Adapter Interfacep. 95
5.3.2 Object Adapter Interfacep. 98
5.3.3 Invocation Tablep. 99
5.3.4 Schedulerp. 100
5.3.5 Object Generationp. 106
5.3.6 Bootstrappingp. 106
5.3.7 Dynamic Extensibilityp. 108
5.4 Summary, Evaluation, and Alternativesp. 108
6 Interoperabilityp. 111
6.1 Modelp. 111
6.2 Inter-ORB Protocolsp. 113
6.2.1 Interoperable Object Referencesp. 114
6.2.2 General Inter-ORB Protocolp. 115
6.2.3 Environment-Specific Inter-ORB Protocolsp. 116
6.3 Design of Mico's Interoperabilityp. 117
6.3.1 Frameworkp. 117
6.3.2 GIOPp. 121
6.4 Summary, Evaluation, and Alternativesp. 124
7 Object Adaptersp. 125
7.1 Terminologyp. 125
7.2 Functionalityp. 127
7.2.1 Object Managementp. 128
7.2.2 Servant Managementp. 130
7.2.3 Generation of Object Referencesp. 130
7.2.4 Mapping Objects to Servantsp. 131
7.2.5 Execution of Method Invocationsp. 131
7.3 The Portable Object Adapterp. 133
7.3.1 Overviewp. 133
7.3.2 Policiesp. 135
7.3.3 POA Managerp. 137
7.3.4 Request Processingp. 138
7.3.5 Persistencep. 141
7.4 Design of Mico's POAp. 143
7.4.1 Object Key Generationp. 144
7.4.2 Persistencep. 146
7.4.3 POA Mediatorp. 146
7.4.4 Collocationp. 149
8 Invocation Adaptersp. 153
8.1 Functionalityp. 153
8.1.1 Representation of IDL Data Typesp. 154
8.1.2 Type Checkingp. 155
8.2 Dynamic Invocation Interfacep. 156
8.3 Static Invocation Interfacep. 157
8.4 Design of Mico's DIIp. 159
8.5 Design of Mico's SIIp. 161
8.6 Summaryp. 162
9 IDL Compilerp. 163
9.1 Invocation Adaptersp. 163
9.1.1 Dynamic versus Static Invocation Adaptersp. 164
9.1.2 Support of Static Invocation Adaptersp. 165
9.1.3 Mico's Static Invocation Adapterp. 166
9.2 Compiler Fundamentalsp. 168
9.2.1 Formal Languages and Grammarsp. 168
9.2.2 Parse Treesp. 170
9.2.3 Structure of a Compilerp. 170
9.3 Abstract Syntax Tree for IDL Specificationsp. 172
9.4 Mico's IDL Compilerp. 175
9.4.1 Class Structurep. 175
9.4.2 Front Endp. 177
9.4.3 Back Endp. 179
9.5 Summary, Evaluation, and Alternativesp. 180
10 CORBA and Beyondp. 183
10.1 CORBA Componentsp. 183
10.1.1 Component-Based Developmentp. 183
10.1.2 The CORBA Component Modelp. 185
10.1.3 An Example Componentp. 192
10.1.4 Implementation Overviewp. 199
10.1.5 Discussionp. 201
10.2 Web Servicesp. 206
10.2.1 Overview of XMLp. 207
10.2.2 Service Descriptions through WSDLp. 208
10.2.3 Server-Side Mappingp. 211
10.2.4 Interoperability through SOAPp. 213
10.2.5 Service Lookup through UDDIp. 214
10.2.6 CORBA or Web Services?p. 216
10.3 Middleware for Ubiquitous Computingp. 217
10.3.1 Ubiquitous Computing in a Nutshellp. 217
10.3.2 Middleware Challengesp. 219
10.3.3 Case Study: Sensor Networksp. 223
10.3.4 Conclusionsp. 228
10.4 Summaryp. 229
A Mico Installationp. 231
A.1 Installing Mico on UNIXp. 231
A.2 Installing Mico on Windowsp. 234
A.3 Road Mapp. 235
B Mico Implementation Overviewp. 237
B.1 ORBp. 237
B.2 Interface Repositoryp. 243
B.3 Portable Object Adapterp. 244
B.3.1 Mico Daemonp. 245
B.3.2 Implementation Repositoryp. 246
B.4 IDL Compilerp. 249
B.5 Compiler and Linker Wrappersp. 253
B.5.1 Examplesp. 254
C Mico Implementation Detailsp. 257
C.1 Path of an Operation Invocation through an ORBp. 257
C.1.1 Client Sidep. 259
C.1.2 Server Sidep. 262
C.2 Integration of a New Invocation Adapterp. 266
C.3 Integration of a New Object Adapterp. 269
C.4 Integration of a New Transport Mechanismp. 272
C.4.1 XAddressp. 273
C.4.2 XAddressParserp. 274
C.4.3 XProfilep. 275
C.4.4 XProfileDecoderp. 277
C.4.5 XTransportp. 277
C.4.6 XTransportServerp. 279
C.4.7 Dispatcherp. 280
C.4.8 Initializationp. 283
C.5 The Structure of Generated Program Codep. 284
D Sample Applicationp. 291
D.1 Stand-alone Application in C++p. 291
D.2 IDL Specificationp. 293
D.3 Implementation of the Server in C++p. 293
D.4 Implementation of the Client in C++p. 295
D.5 Implementation of the Server in Javap. 296
D.6 Implementation of the Client in Javap. 298
List of Figuresp. 301
Acronymsp. 305
Glossaryp. 309
Bibliographyp. 313
Indexp. 317