| About the Authors | p. viii |
| Preface | p. ix |
| Introduction | p. 1 |
| Infrastructures for Distributed Applications | p. 1 |
| Thematic Organization | p. 3 |
| Target Group | p. 3 |
| Chapter Overviews | p. 4 |
| Ancillary Materials | p. 5 |
| Basic Concepts | p. 7 |
| Distributed Systems | p. 7 |
| Characterization | p. 7 |
| Transparency | p. 9 |
| Communication Mechanisms | p. 10 |
| Client/Server Model | p. 12 |
| Failure Semantics | p. 14 |
| Object Model | p. 16 |
| Characterization | p. 16 |
| Terminology | p. 17 |
| Middleware | p. 21 |
| Middleware Tasks | p. 21 |
| The Structure of a Middleware Platform | p. 22 |
| Standardization of a Middleware | p. 23 |
| Portability and Interoperability | p. 24 |
| Sample Application | p. 25 |
| The Account Example | p. 25 |
| C++ Implementation | p. 27 |
| Distribution of the Sample Application | p. 29 |
| Summary | p. 30 |
| Introduction to CORBA | p. 33 |
| Object Management Architecture | p. 34 |
| Overview of CORBA | p. 35 |
| CORBA Object Model | p. 37 |
| Interface Definition Language | p. 37 |
| IDL-Language Mappings | p. 38 |
| Object Request Broker | p. 38 |
| Invocation and Object Adapters | p. 39 |
| Interoperability | p. 39 |
| The Creation Process of a CORBA Application | p. 40 |
| Application Development in C++ | p. 42 |
| IDL Specification | p. 42 |
| IDL Language Mapping for C++ | p. 43 |
| C++ Server Implementation | p. 44 |
| C++ Client Implementation | p. 48 |
| Compiling and Executing the Application | p. 50 |
| Compiling the Application | p. 50 |
| Executing the Application | p. 51 |
| Application Development in Java | p. 53 |
| Java Server Implementation | p. 53 |
| Java Client Implementation | p. 56 |
| Compiling and Executing the Java Implementation | p. 56 |
| The Bootstrapping Problem | p. 57 |
| File-Based Bootstrapping | p. 58 |
| Object URLs | p. 58 |
| Command Line Arguments | p. 58 |
| Naming Service | p. 59 |
| Overview | p. 59 |
| Name Server Daemon | p. 60 |
| Example | p. 61 |
| Summary | p. 64 |
| [mu]ORB | p. 65 |
| [mu]ORB Architecture | p. 65 |
| Transport Layer | p. 67 |
| Presentation Layer | p. 70 |
| Value Ranges of Types | p. 70 |
| Representation of Type Instances | p. 71 |
| Modeling of the Presentation Layer | p. 74 |
| Interoperability Layer | p. 75 |
| Protocol for Remote Operation Invocation | p. 75 |
| Structure of Protocol Data Units | p. 77 |
| Modeling of Protocol Data Units | p. 79 |
| Proxies | p. 81 |
| Object Services | p. 83 |
| Life Cycle of an Object | p. 83 |
| Object References | p. 84 |
| Services on the Server Side | p. 86 |
| Summary | p. 88 |
| ORB Design | p. 91 |
| ORB Functionality | p. 92 |
| ORB Architectures | p. 93 |
| Design of Mico's ORB | p. 94 |
| Invocation Adapter Interface | p. 95 |
| Object Adapter Interface | p. 98 |
| Invocation Table | p. 99 |
| Scheduler | p. 100 |
| Object Generation | p. 106 |
| Bootstrapping | p. 106 |
| Dynamic Extensibility | p. 108 |
| Summary, Evaluation, and Alternatives | p. 108 |
| Interoperability | p. 111 |
| Model | p. 111 |
| Inter-ORB Protocols | p. 113 |
| Interoperable Object References | p. 114 |
| General Inter-ORB Protocol | p. 115 |
| Environment-Specific Inter-ORB Protocols | p. 116 |
| Design of Mico's Interoperability | p. 117 |
| Framework | p. 117 |
| GIOP | p. 121 |
| Summary, Evaluation, and Alternatives | p. 124 |
| Object Adapters | p. 125 |
| Terminology | p. 125 |
| Functionality | p. 127 |
| Object Management | p. 128 |
| Servant Management | p. 130 |
| Generation of Object References | p. 130 |
| Mapping Objects to Servants | p. 131 |
| Execution of Method Invocations | p. 131 |
| The Portable Object Adapter | p. 133 |
| Overview | p. 133 |
| Policies | p. 135 |
| POA Manager | p. 137 |
| Request Processing | p. 138 |
| Persistence | p. 141 |
| Design of Mico's POA | p. 143 |
| Object Key Generation | p. 144 |
| Persistence | p. 146 |
| POA Mediator | p. 146 |
| Collocation | p. 149 |
| Invocation Adapters | p. 153 |
| Functionality | p. 153 |
| Representation of IDL Data Types | p. 154 |
| Type Checking | p. 155 |
| Dynamic Invocation Interface | p. 156 |
| Static Invocation Interface | p. 157 |
| Design of Mico's DII | p. 159 |
| Design of Mico's SII | p. 161 |
| Summary | p. 162 |
| IDL Compiler | p. 163 |
| Invocation Adapters | p. 163 |
| Dynamic versus Static Invocation Adapters | p. 164 |
| Support of Static Invocation Adapters | p. 165 |
| Mico's Static Invocation Adapter | p. 166 |
| Compiler Fundamentals | p. 168 |
| Formal Languages and Grammars | p. 168 |
| Parse Trees | p. 170 |
| Structure of a Compiler | p. 170 |
| Abstract Syntax Tree for IDL Specifications | p. 172 |
| Mico's IDL Compiler | p. 175 |
| Class Structure | p. 175 |
| Front End | p. 177 |
| Back End | p. 179 |
| Summary, Evaluation, and Alternatives | p. 180 |
| CORBA and Beyond | p. 183 |
| CORBA Components | p. 183 |
| Component-Based Development | p. 183 |
| The CORBA Component Model | p. 185 |
| An Example Component | p. 192 |
| Implementation Overview | p. 199 |
| Discussion | p. 201 |
| Web Services | p. 206 |
| Overview of XML | p. 207 |
| Service Descriptions through WSDL | p. 208 |
| Server-Side Mapping | p. 211 |
| Interoperability through SOAP | p. 213 |
| Service Lookup through UDDI | p. 214 |
| CORBA or Web Services? | p. 216 |
| Middleware for Ubiquitous Computing | p. 217 |
| Ubiquitous Computing in a Nutshell | p. 217 |
| Middleware Challenges | p. 219 |
| Case Study: Sensor Networks | p. 223 |
| Conclusions | p. 228 |
| Summary | p. 229 |
| Mico Installation | p. 231 |
| Installing Mico on UNIX | p. 231 |
| Installing Mico on Windows | p. 234 |
| Road Map | p. 235 |
| Mico Implementation Overview | p. 237 |
| ORB | p. 237 |
| Interface Repository | p. 243 |
| Portable Object Adapter | p. 244 |
| Mico Daemon | p. 245 |
| Implementation Repository | p. 246 |
| IDL Compiler | p. 249 |
| Compiler and Linker Wrappers | p. 253 |
| Examples | p. 254 |
| Mico Implementation Details | p. 257 |
| Path of an Operation Invocation through an ORB | p. 257 |
| Client Side | p. 259 |
| Server Side | p. 262 |
| Integration of a New Invocation Adapter | p. 266 |
| Integration of a New Object Adapter | p. 269 |
| Integration of a New Transport Mechanism | p. 272 |
| XAddress | p. 273 |
| XAddressParser | p. 274 |
| XProfile | p. 275 |
| XProfileDecoder | p. 277 |
| XTransport | p. 277 |
| XTransportServer | p. 279 |
| Dispatcher | p. 280 |
| Initialization | p. 283 |
| The Structure of Generated Program Code | p. 284 |
| Sample Application | p. 291 |
| Stand-alone Application in C++ | p. 291 |
| IDL Specification | p. 293 |
| Implementation of the Server in C++ | p. 293 |
| Implementation of the Client in C++ | p. 295 |
| Implementation of the Server in Java | p. 296 |
| Implementation of the Client in Java | p. 298 |
| List of Figures | p. 301 |
| Acronyms | p. 305 |
| Glossary | p. 309 |
| Bibliography | p. 313 |
| Index | p. 317 |
| Table of Contents provided by Ingram. All Rights Reserved. |