Advanced CORBA programming with C++ / Michi Henning and Steve Vinoski.
By: Henning, Michi.
Contributor(s): Vinoski, Steve.
Material type: BookSeries: Addison-Wesley professional computing series.Publisher: Reading, Mass. : Addison-Wesley, c1999Description: xxii, 1083 p. : ill ; 24 cm. + pbk.ISBN: 0201379279 .Subject(s): C (Computer program language) | CORBA (Computer architecture)DDC classification: 005.133 HENItem type | Current library | Call number | Copy number | Status | Date due | Barcode | Item holds |
---|---|---|---|---|---|---|---|
General Lending | MTU Bishopstown Library Lending | 005.133 HEN (Browse shelf(Opens below)) | 1 | Available | 00156418 | ||
General Lending | MTU Bishopstown Library Store Item | 005.133 HEN (Browse shelf(Opens below)) | 1 | Available | 00071055 | ||
General Lending | MTU Bishopstown Library Lending | 005.133 HEN (Browse shelf(Opens below)) | 1 | Available | 00075626 |
Enhanced descriptions from Syndetics:
Written for C++ practitioners, this book is the first to explore advanced Common Object Request Broker Architecture (CORBA) topics and techniques. Michi Henning and Steve Vinoski share the benefits of their extensive experience with CORBA programming, and arm the programmer with the skills necessary to overcome the intricate programming issues that arise in a real-world environment. By learning proven, hands-on explanations for building CORBA applications, the reader will be well on the way to building more successful distributed objects for industrial-strength development projects.
Bibliography: (pages 1035-1042) and index.
Introduction -- Part I: Introduction to CORBA -- An overview of CORBA -- A minimal CORBA application -- Part II: Core CORBA -- The OMG interface definition language -- IDL for a climate control system -- Basic IDL-to-C++ mapping -- Client-Side C++ mapping -- Developing a client for the climate control system -- Server-Side C++ mapping -- Developing a server for the climate control system -- The portable object adapter -- Object life cycle -- Part III: CORBA Mechanisms -- GIOP, IIOP, and IORs -- Implementation repositories and binding -- Part IV: Dyanmic CORBA -- C++ mapping for type any -- Type codes -- Type DynAny -- Part V: CORBAservices -- The OMG naming service -- The OMG trading service -- The OMG event service -- Part VI: Power COBRA -- Multithreaded applications -- Performance, scalability and maintainability.
This book provides designers and developers the tools required to understand CORBA technology at the architectural, design, and code levels.This book offers hands-on explanations for building efficient applications, as well as lucid examples that provide practical advice on avoiding costly mistakes. With this book as a guide, programmers will find the support they need to successfully undertake CORBA development projects. The content is systematically arranged and presented so the book may be used as both a tutorial and a reference. The rich example programs in this definitive text show CORBA developers how to write clearer code that is more maintainable, portable, and efficient. The authors' detailed coverage of the IDL-to-C++ mapping moves beyond the mechanics of the APIs to discuss topics such aspotential pitfalls and efficiency. An in-depth presentation of the new Portable Object Adapter (POA) explains how to take advantage of its numerous features to create scalable and high-performance servers. In addition, detailed discussion of advanced topics, such as garbage collection and multithreading, provides developers with the knowledge they need to write commercial applications.
Table of contents provided by Syndetics
- Preface (p. xvii)
- Chapter 1 Introduction (p. 1)
- 1.1 Introduction (p. 1)
- 1.2 Organization of the Book (p. 3)
- 1.3 CORBA Version (p. 4)
- 1.4 Typographical Conventions (p. 5)
- 1.5 Source Code Examples (p. 5)
- 1.6 Vendor Dependencies (p. 6)
- 1.7 Contacting the Authors (p. 6)
- Part I Introduction to CORBA (p. 7)
- Chapter 2 An Overview of CORBA (p. 9)
- 2.1 Introduction (p. 9)
- 2.2 The Object Management Group (p. 11)
- 2.3 Concepts and Terminology (p. 14)
- 2.4 CORBA Features (p. 15)
- 2.5 Request Invocation (p. 23)
- 2.6 General CORBA Application Development (p. 33)
- 2.7 Summary (p. 35)
- Chapter 3 A Minimal CORBA Application (p. 37)
- 3.1 Chapter Overview (p. 37)
- 3.2 Writing and Compiling an IDL Definition (p. 37)
- 3.3 Writing and Compiling a Server (p. 39)
- 3.4 Writing and Compiling a Client (p. 44)
- 3.5 Running Client and Server (p. 47)
- 3.6 Summary (p. 48)
- Part II Core CORBA (p. 49)
- Chapter 4 The OMG Interface Definition Language (p. 51)
- 4.1 Chapter Overview (p. 51)
- 4.2 Introduction (p. 51)
- 4.3 Compilation (p. 52)
- 4.4 Source Files (p. 56)
- 4.5 Lexical Rules (p. 57)
- 4.6 Basic IDL Types (p. 59)
- 4.7 User-Defined Types (p. 62)
- 4.8 Interfaces and Operations (p. 77)
- 4.9 User Exceptions (p. 88)
- 4.10 System Exceptions (p. 91)
- 4.11 System Exceptions or User Exceptions? (p. 94)
- 4.12 Oneway Operations (p. 95)
- 4.13 Contexts (p. 97)
- 4.14 Attributes (p. 98)
- 4.15 Modules (p. 100)
- 4.16 Forward Declarations (p. 102)
- 4.17 Inheritance (p. 103)
- 4.18 Names and Scoping (p. 112)
- 4.19 Repository Identifiers and pragma Directives (p. 116)
- 4.20 Standard Include Files (p. 120)
- 4.21 Recent IDL Extensions (p. 121)
- 4.22 Summary (p. 125)
- Chapter 5 IDL for a Climate Control System (p. 127)
- 5.1 Chapter Overview (p. 127)
- 5.2 The Climate Control System (p. 127)
- 5.3 IDL for the Climate Control System (p. 130)
- 5.4 The Complete Specification (p. 136)
- Chapter 6 Basic IDL-to-C++ Mapping (p. 139)
- 6.1 Chapter Overview (p. 139)
- 6.2 Introduction (p. 140)
- 6.3 Mapping for Identifiers (p. 141)
- 6.4 Mapping for Modules (p. 142)
- 6.5 The CORBA Module (p. 144)
- 6.6 Mapping for Basic Types (p. 144)
- 6.7 Mapping for Constants (p. 148)
- 6.8 Mapping for Enumerated Types (p. 150)
- 6.9 Variable-Length Types and_var Types (p. 151)
- 6.10 The String_var Wrapper Class (p. 156)
- 6.11 Mapping for Wide Strings (p. 169)
- 6.12 Mapping for Fixed-Point Types (p. 169)
- 6.13 Mapping for Structures (p. 173)
- 6.14 Mapping for Sequences (p. 179)
- 6.15 Mapping for Arrays (p. 198)
- 6.16 Mapping for Unions (p. 201)
- 6.17 Mapping for Recursive Structures and Unions (p. 209)
- 6.18 Mapping for Type Definitions (p. 210)
- 6.19 User-Defined Types and -var Classes (p. 211)
- 6.20 Summary (p. 222)
- Chapter 7 Client-Side C++ Mapping (p. 223)
- 7.1 Chapter Overview (p. 223)
- 7.2 Introduction (p. 223)
- 7.3 Mapping for Interfaces (p. 224)
- 7.4 Object Reference Types (p. 225)
- 7.5 Life Cycle of Object References (p. 227)
- 7.6 Semantics of _ptr References (p. 234)
- 7.7 Pseudo-Objects (p. 241)
- 7.8 ORB Initialization (p. 242)
- 7.9 Initial References (p. 245)
- 7.10 Stringified References (p. 249)
- 7.11 The Object Pseudo-Interface (p. 251)
- 7.12 _var References (p. 259)
- 7.13 Mapping for Operations and Attributes (p. 271)
- 7.14 Parameter Passing Rules (p. 274)
- 7.15 Mapping for Exceptions (p. 307)
- 7.16 Mapping for Contexts (p. 322)
- 7.17 Summary (p. 323)
- Chapter 8 Developing a Client for the Climate Control System (p. 325)
- 8.1 Chapter Overview (p. 325)
- 8.2 Introduction (p. 325)
- 8.3 Overall Client Structure (p. 326)
- 8.4 Included Files (p. 327)
- 8.5 Helper Functions (p. 328)
- 8.6 The main Program (p. 333)
- 8.7 The Complete Client Code (p. 341)
- 8.8 Summary (p. 346)
- Chapter 9 Server-Side C++ Mapping (p. 349)
- 9.1 Chapter Overview (p. 349)
- 9.2 Introduction (p. 349)
- 9.3 Mapping for Interfaces (p. 351)
- 9.4 Servant Classes (p. 353)
- 9.5 Object Incarnation (p. 355)
- 9.6 Server main (p. 356)
- 9.7 Parameter Passing Rules (p. 358)
- 9.8 Raising Exceptions (p. 376)
- 9.9 Tie Classes (p. 382)
- 9.10 Summary (p. 387)
- Chapter 10 Developing a Server for the Climate Control System (p. 389)
- 10.1 Chapter Overview (p. 389)
- 10.2 Introduction (p. 389)
- 10.3 The Instrument Control Protocol API (p. 390)
- 10.4 Designing the Thermometer Servant Class (p. 393)
- 10.5 Implementing the Thermometer Servant Class (p. 396)
- 10.6 Designing the Thermostat Servant Class (p. 399)
- 10.7 Implementing the Thermostat Servant Class (p. 402)
- 10.8 Designing the Controller Servant Class (p. 405)
- 10.9 Implementing the Controller Servant Class (p. 407)
- 10.10 Implementing the Server main Function (p. 413)
- 10.11 The Complete Server Code (p. 414)
- 10.12 Summary (p. 427)
- Chapter 11 The Portable Object Adapter (p. 429)
- 11.1 Chapter Overview (p. 429)
- 11.2 Introduction (p. 430)
- 11.3 POA Fundamentals (p. 430)
- 11.4 POA Policies (p. 434)
- 11.5 POA Creation (p. 447)
- 11.6 Servant IDL Type (p. 451)
- 11.7 Object Creation and Activation (p. 455)
- 11.8 Reference, ObjectId, and Servant (p. 496)
- 11.9 Object Deactivation (p. 499)
- 11.10 Request Flow Control (p. 502)
- 11.11 ORB Event Handling (p. 506)
- 11.12 POA Activation (p. 514)
- 11.13 POA Destruction (p. 520)
- 11.14 Applying POA Policies (p. 522)
- 11.15 Summary (p. 531)
- Chapter 12 Object Life Cycle (p. 533)
- 12.1 Chapter Overview (p. 533)
- 12.2 Introduction (p. 533)
- 12.3 Object Factories (p. 534)
- 12.4 Destroying, Copying, and Moving Objects (p. 548)
- 12.5 A Critique of the Life Cycle Service (p. 564)
- 12.6 The Evictor Pattern (p. 570)
- 12.7 Garbage Collection of Servants (p. 589)
- 12.8 Garbage Collection of CORBA Objects (p. 598)
- 12.9 Summary (p. 600)
- Part III CORBA Mechanisms (p. 603)
- Chapter 13 GIOP, IIOP, and IORs (p. 605)
- 13.1 Chapter Overview (p. 605)
- 13.2 An Overview of GIOP (p. 606)
- 13.3 Common Data Representation (p. 607)
- 13.4 GIOP Message Formats (p. 612)
- 13.5 GIOP Connection Management (p. 621)
- 13.6 Detecting Disorderly Shutdown (p. 623)
- 13.7 An Overview of IIOP (p. 624)
- 13.8 Structure of an IOR (p. 626)
- 13.9 Bidirectional IIOP (p. 629)
- 13.10 Summary (p. 630)
- Chapter 14 Implementation Repositories and Binding (p. 631)
- 14.1 Chapter Overview (p. 631)
- 14.2 Binding Modes (p. 631)
- 14.3 Direct Binding (p. 632)
- 14.4 Indirect Binding via an Implementation Repository (p. 636)
- 14.5 Migration, Reliability, Performance, and Scalability (p. 648)
- 14.6 Activation Modes (p. 652)
- 14.7 Race Conditions (p. 653)
- 14.8 Security Considerations (p. 656)
- 14.9 Summary (p. 659)
- Part IV Dynamic CORBA (p. 661)
- Chapter 15 C++ Mapping for Type any (p. 663)
- 15.1 Chapter Overview (p. 663)
- 15.2 Introduction (p. 663)
- 15.3 Type any C++ Mapping (p. 667)
- 15.4 Pitfalls in Type Definitions (p. 689)
- 15.5 Summary (p. 690)
- Chapter 16 Type Codes (p. 691)
- 16.1 Chapter Overview (p. 691)
- 16.2 Introduction (p. 692)
- 16.3 The TypeCode Pseudo-Object (p. 692)
- 16.4 C++ Mapping for the TypeCode Pseudo-Object (p. 703)
- 16.5 Type Code Comparisons (p. 715)
- 16.6 Type Code Constants (p. 721)
- 16.7 Type Code Comparison for Type any (p. 725)
- 16.8 Creating Type Codes Dynamically (p. 727)
- 16.9 Summary (p. 736)
- Chapter 17 Type DynAny (p. 737)
- 17.1 Chapter Overview (p. 737)
- 17.2 Introduction (p. 737)
- 17.3 The DynAny Interface (p. 738)
- 17.4 C++ Mapping for the DynAny Pseudo-Object (p. 750)
- 17.5 Using DynAny for Generic Display (p. 763)
- 17.6 Obtaining Type Information (p. 766)
- 17.7 Summary (p. 768)
- Part V CORBAservices (p. 769)
- Chapter 18 The OMG Naming Service (p. 771)
- 18.1 Chapter Overview (p. 771)
- 18.2 Introduction (p. 771)
- 18.3 Basic Concepts (p. 772)
- 18.4 Structure of the Naming Service IDL (p. 774)
- 18.5 Semantics of Names (p. 775)
- 18.6 Naming Context IDL (p. 780)
- 18.7 Iterators (p. 800)
- 18.8 Pitfalls in the Naming Service (p. 808)
- 18.9 The Names Library (p. 810)
- 18.10 Naming Service Tools (p. 810)
- 18.11 What to Advertise (p. 811)
- 18.12 When to Advertise (p. 812)
- 18.13 Federated Naming (p. 813)
- 18.14 Adding Naming to the Climate Control System (p. 817)
- 18.15 Summary (p. 824)
- Chapter 19 The OMG Trading Service (p. 827)
- 19.1 Chapter Overview (p. 827)
- 19.2 Introduction (p. 828)
- 19.3 Trading Concepts and Terminology (p. 828)
- 19.4 IDL Overview (p. 834)
- 19.5 The Service Type Repository (p. 835)
- 19.6 The Trader Interfaces (p. 854)
- 19.7 Exporting Service Offers (p. 860)
- 19.8 Withdrawing Service Offers (p. 866)
- 19.9 Modifying Service Offers (p. 867)
- 19.10 The Trader Constraint Language (p. 869)
- 19.11 Importing Service Offers (p. 873)
- 19.12 Bulk Withdrawal (p. 890)
- 19.13 The Admin Interface (p. 891)
- 19.14 Inspecting Service Offers (p. 894)
- 19.15 Exporting Dynamic Properties (p. 894)
- 19.16 Trader Federation (p. 898)
- 19.17 Trader Tools (p. 911)
- 19.18 Architectural Considerations (p. 911)
- 19.19 What to Advertise (p. 913)
- 19.20 Avoiding Duplicate Service Offers (p. 914)
- 19.21 Adding Trading to the Climate Control System (p. 915)
- 19.22 Summary (p. 920)
- Chapter 20 The OMG Event Service (p. 923)
- 20.1 Chapter Overview (p. 923)
- 20.2 Introduction (p. 923)
- 20.3 Distributed Callbacks (p. 924)
- 20.4 Event Service Basics (p. 931)
- 20.5 Event Service Interfaces (p. 936)
- 20.6 Implementing Consumers and Suppliers (p. 945)
- 20.7 Choosing an Event Model (p. 958)
- 20.8 Event Service Limitations (p. 961)
- 20.9 Summary (p. 963)
- Part VI Power CORBA (p. 965)
- Chapter 21 Multithreaded Applications (p. 967)
- 21.1 Chapter Overview (p. 967)
- 21.2 Introduction (p. 967)
- 21.3 Motivation for Multithreaded Programs (p. 968)
- 21.4 Fundamentals of Multithreaded Servers (p. 972)
- 21.5 Multithreading Strategies (p. 980)
- 21.6 Implementing a Multithreaded Server (p. 981)
- 21.7 Servant Activators and the Evictor Pattern (p. 996)
- 21.8 Summary (p. 997)
- Chapter 22 Performance, Scalability, and Maintainability (p. 999)
- 22.1 Chapter Overview (p. 999)
- 22.2 Introduction (p. 999)
- 22.3 Reducing Messaging Overhead (p. 1000)
- 22.4 Optimizing Server Implementations (p. 1011)
- 22.5 Federating Services (p. 1013)
- 22.6 Improving Physical Design (p. 1014)
- 22.7 Summary (p. 1017)
- Appendix A Source Code for the ICP Simulator (p. 1019)
- A.1 Overview (p. 1019)
- A.2 Transient Simulator Code (p. 1019)
- A.3 Persistent Simulator Code (p. 1026)
- Appendix B CORBA Resources (p. 1031)
- B.1 World Wide Web (p. 1031)
- B.2 Newsgroups (p. 1032)
- B.3 Mailing Lists (p. 1032)
- B.4 Magazines (p. 1033)
- Bibliography (p. 1035)
- Index (p. 1043)
Excerpt provided by Syndetics
Author notes provided by Syndetics
Michi Henning is the founder of Triodia Technologies in Brisbane, Australia, where he spends much of his time providing CORBA consulting and training to international customers. He has contributed to a number of OMG specifications, and is involved in ongoing CORBA-related research. Michi is also a member of the OMG's Core and C++ Revision Task Forces.Steve Vinoski is chief architect for IONA Technologies, Inc., where he guides the development of advanced CORBA-based products. He frequently presents CORBA C++ tutorials at technical conferences around the globe. In addition, Steve has coauthored several important OMG specifications, and is the chair of the OMG's C++ Revision Task Force.