| help | account  


Advanced Corba Programming with C++
View Larger Image
Michi Henning, Stephen Vinoski
Addison-Wesley, Paperback, Published February 1999, 1083 pages, ISBN 0201379279
List Price: $74.99
Our Price: $52.25
You Save: $22.74 (30% Off)


FREE Shipping on Orders over $40!*
Availability: Out-Of-Stock

Customer Reviews: 3     Average Customer Rating:

Write a Review and tell the world about this title!

People who purchase this book frequently purchase:

Books on similar topics, in best-seller order:Books from the same publisher, in best-seller order:

Here is the CORBA book that every C++ software engineer has been waiting for. Advanced CORBA® Programming with C++ provides designers and developers with the tools required to understand CORBA technology at the architectural, design, and source 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 industrial-strength 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 as potential 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.

Other highlights

  • In-depth coverage of IDL, including common idioms and design trade-offs
  • Complete and detailed explanations of the Life Cycle, Naming, Trading, and Event Services
  • Discussion of IIOP and implementation repositories
  • Insight into the dynamic aspects of CORBA, such as dynamic typing and the new DynAny interfaces
  • Advice on selecting appropriate application architectures and designs
  • Detailed, portable, and vendor-independent source code


Contents

Preface xvii

Chapter 1 Introduction 1

1.1 Introduction 1
1.2 Organization of the Book 3
1.3 CORBA Version 4
1.4 Typographical Conventions 5
1.5 Source Code Examples 5
1.6 Vendor Dependencies 6
1.7 Contacting the Authors 6

Part I Introduction to CORBA 7

Chapter 2 An Overview of CORBA 9

2.1 Introduction 9
2.2 The Object Management Group 11
2.3 Concepts and Terminology 14
2.4 CORBA Features 15
2.5 Request Invocation 23
2.6 General CORBA Application Development 33
2.7 Summary 35

Chapter 3 A Minimal CORBA Application 37

3.1 Chapter Overview 37
3.2 Writing and Compiling an IDL Definition 37
3.3 Writing and Compiling a Server 39
3.4 Writing and Compiling a Client 44
3.5 Running Client and Server 47
3.6 Summary 48

Part II Core CORBA 49

Chapter 4 The OMG Interface Definition Language 51

4.1 Chapter Overview 51
4.2 Introduction 51
4.3 Compilation 52
4.4 Source Files 56
4.5 Lexical Rules 57
4.6 Basic IDL Types 59
4.7 User-Defined Types 62
4.8 Interfaces and Operations 77
4.9 User Exceptions 88
4.10 System Exceptions 91
4.11 System Exceptions or User Exceptions? 94
4.12 Oneway Operations 95
4.13 Contexts 97
4.14 Attributes 98
4.15 Modules 100
4.16 Forward Declarations 102
4.17 Inheritance 103
4.18 Names and Scoping 112
4.19 Repository Identifiers and pragma Directives 116
4.20 Standard Include Files 120
4.21 Recent IDL Extensions 121
4.22 Summary 125

Chapter 5 IDL for a Climate Control System 127

5.1 Chapter Overview 127
5.2 The Climate Control System 127
5.3 IDL for the Climate Control System 130
5.4 The Complete Specification 136

Chapter 6 Basic IDL-to-C++ Mapping 139

6.1 Chapter Overview 139
6.2 Introduction 140
6.3 Mapping for Identifiers 141
6.4 Mapping for Modules 142
6.5 The CORBA Module 144
6.6 Mapping for Basic Types 144
6.7 Mapping for Constants 148
6.8 Mapping for Enumerated Types 150
6.9 Variable-Length Types and _var Types 151
6.10 The String_var Wrapper Class 156
6.11 Mapping for Wide Strings 169
6.12 Mapping for Fixed-Point Types 169
6.13 Mapping for Structures 173
6.14 Mapping for Sequences 179
6.15 Mapping for Arrays 198
6.16 Mapping for Unions 201
6.17 Mapping for Recursive Structures and Unions 209
6.18 Mapping for Type Definitions 210
6.19 User-Defined Types and _var Classes 211
6.20 Summary 222

Chapter 7 Client-Side C++ Mapping 223

7.1 Chapter Overview 223
7.2 Introduction 223
7.3 Mapping for Interfaces 224
7.4 Object Reference Types 225
7.5 Life Cycle of Object References 227
7.6 Semantics of _ptr References 234
7.7 Pseudo-Objects 241
7.8 ORB Initialization 242
7.9 Initial References 245
7.10 Stringified References 249
7.11 The Object Pseudo-Interface 251
7.12 _var References 259
7.13 Mapping for Operations and Attributes 271
7.14 Parameter Passing Rules 274
7.15 Mapping for Exceptions 307
7.16 Mapping for Contexts 322
7.17 Summary 323

Chapter 8 Developing a Client for the Climate Control System 325

8.1 Chapter Overview 325
8.2 Introduction 325
8.3 Overall Client Structure 326
8.4 Included Files 327
8.5 Helper Functions 328
8.6 The main Program 333
8.7 The Complete Client Code 341
8.8 Summary 346

Chapter 9 Server-Side C++ Mapping 349

9.1 Chapter Overview 349
9.2 Introduction 349
9.3 Mapping for Interfaces 351
9.4 Servant Classes 353
9.5 Object Incarnation 355
9.6 Server main 356
9.7 Parameter Passing Rules 358
9.8 Raising Exceptions 376
9.9 Tie Classes 382
9.10 Summary 387

Chapter 10 Developing a Server for the Climate Control System 389

10.1 Chapter Overview 389
10.2 Introduction 389
10.3 The Instrument Control Protocol API 390
10.4 Designing the Thermometer Servant Class 393
10.5 Implementing the Thermometer Servant Class 396
10.6 Designing the Thermostat Servant Class 399
10.7 Implementing the Thermostat Servant Class 402
10.8 Designing the Controller Servant Class 405
10.9 Implementing the Controller Servant Class 407
10.10 Implementing the Server main Function 413
10.11 The Complete Server Code 414
10.12 Summary 427

Chapter 11 The Portable Object Adapter 429

11.1 Chapter Overview 429
11.2 Introduction 430
11.3 POA Fundamentals 430
11.4 POA Policies 434
11.5 POA Creation 447
11.6 Servant IDL Type 451
11.7 Object Creation and Activation 455
11.8 Reference, ObjectId, and Servant 496
11.9 Object Deactivation 499
11.10 Request Flow Control 502
11.11 ORB Event Handling 506
11.12 POA Activation 514
11.13 POA Destruction 520
11.14 Applying POA Policies 522
11.15 Summary 531

Chapter 12 Object Life Cycle 533

12.1 Chapter Overview 533
12.2 Introduction 533
12.3 Object Factories 534
12.4 Destroying, Copying, and Moving Objects 548
12.5 A Critique of the Life Cycle Service 564
12.6 The Evictor Pattern 570
12.7 Garbage Collection of Servants 589
12.8 Garbage Collection of CORBA Objects 598
12.9 Summary 600

Part III CORBA Mechanisms 603

Chapter 13 GIOP, IIOP, and IORs 605

13.1 Chapter Overview 605
13.2 An Overview of GIOP 606
13.3 Common Data Representation 607
13.4 GIOP Message Formats 612
13.5 GIOP Connection Management 621
13.6 Detecting Disorderly Shutdown 623
13.7 An Overview of IIOP 624
13.8 Structure of an IOR 626
13.9 Bidirectional IIOP 629
13.10 Summary 630

Chapter 14 Implementation Repositories and Binding 631

14.1 Chapter Overview 631
14.2 Binding Modes 631
14.3 Direct Binding 632
14.4 Indirect Binding via an Implementation Repository 636
14.5 Migration, Reliability, Performance, and Scalability 648
14.6 Activation Modes 652
14.7 Race Conditions 653
14.8 Security Considerations 656
14.9 Summary 659

Part IV Dynamic CORBA 661

Chapter 15 C++ Mapping for Type any 663

15.1 Chapter Overview 663
15.2 Introduction 663
15.3 Type any C++ Mapping 667
15.4 Pitfalls in Type Definitions 689
15.5 Summary 690

Chapter 16 Type Codes 691

16.1 Chapter Overview 691
16.2 Introduction 692
16.3 The TypeCode Pseudo-Object 692
16.4 C++ Mapping for the TypeCode Pseudo-Object 703
16.5 Type Code Comparisons 715
16.6 Type Code Constants 721
16.7 Type Code Comparison for Type any 725
16.8 Creating Type Codes Dynamically 727
16.9 Summary 736

Chapter 17 Type DynAny 737

17.1 Chapter Overview 737
17.2 Introduction 737
17.3 The DynAny Interface 738
17.4 C++ Mapping for the DynAny Pseudo-Object 750
17.5 Using DynAny for Generic Display 763
17.6 Obtaining Type Information 766
17.7 Summary 768

Part V CORBAservices 769

Chapter 18 The OMG Naming Service 771

18.1 Chapter Overview 771
18.2 Introduction 771
18.3 Basic Concepts 772
18.4 Structure of the Naming Service IDL 774
18.5 Semantics of Names 775
18.6 Naming Context IDL 780
18.7 Iterators 800
18.8 Pitfalls in the Naming Service 808
18.9 The Names Library 810
18.10 Naming Service Tools 810
18.11 What to Advertise 811
18.12 When to Advertise 812
18.13 Federated Naming 813
18.14 Adding Naming to the Climate Control System 817
18.15 Summary 824

Chapter 19 The OMG Trading Service 827

19.1 Chapter Overview 827
19.2 Introduction 828
19.3 Trading Concepts and Terminology 828
19.4 IDL Overview 834
19.5 The Service Type Repository 835
19.6 The Trader Interfaces 854
19.7 Exporting Service Offers 860
19.8 Withdrawing Service Offers 866
19.9 Modifying Service Offers 867
19.10 The Trader Constraint Language 869
19.11 Importing Service Offers 873
19.12 Bulk Withdrawal 890
19.13 The Admin Interface 891
19.14 Inspecting Service Offers 894
19.15 Exporting Dynamic Properties 894
19.16 Trader Federation 898
19.17 Trader Tools 911
19.18 Architectural Considerations 911
19.19 What to Advertise 913
19.20 Avoiding Duplicate Service Offers 914
19.21 Adding Trading to the Climate Control System 915
19.22 Summary 920

Chapter 20 The OMG Event Service 923

20.1 Chapter Overview 923
20.2 Introduction 923
20.3 Distributed Callbacks 924
20.4 Event Service Basics 931
20.5 Event Service Interfaces 936
20.6 Implementing Consumers and Suppliers 945
20.7 Choosing an Event Model 958
20.8 Event Service Limitations 961
20.9 Summary 963

Part VI Power CORBA 965

Chapter 21 Multithreaded Applications 967

21.1 Chapter Overview 967
21.2 Introduction 967
21.3 Motivation for Multithreaded Programs 968
21.4 Fundamentals of Multithreaded Servers 972
21.5 Multithreading Strategies 980
21.6 Implementing a Multithreaded Server 981
21.7 Servant Activators and the Evictor Pattern 996
21.8 Summary 997

Chapter 22 Performance, Scalability, and Maintainability 999

22.1 Chapter Overview 999
22.2 Introduction 999
22.3 Reducing Messaging Overhead 1000
22.4 Optimizing Server Implementations 1011
22.5 Federating Services 1013
22.6 Improving Physical Design 1014
22.7 Summary 1017

Appendix A Source Code for the ICP Simulator 1019

A.1 Overview 1019
A.2 Transient Simulator Code 1019
A.3 Persistent Simulator Code 1026

Appendix B CORBA Resources 1031

B.1 World Wide Web 1031
B.2 Newsgroups 1032
B.3 Mailing Lists 1032
B.4 Magazines 1033

Bibliography 1035
Index 1043


Customer Reviews

Customer Reviews: 3     Average Customer Rating:

Jul 23, 2000     Hongye from US
Excellent book for Corba programmers
If you are writting Corba program with C++, this is the right book for you. Don't waste your time in searching other Corba reference anymore. It's the best in today's market. This book + OMG reference are all you need for your Corba(C++) project.

I haven't finished the book yet. So far, so good.

Feb 9, 2000     jolson@atdsprint.com from Kansas City, KS
Very well written
This book is well written and clearly presents details of CORBA that are generally dry to read from OMG specs. The authors took pains to present the concepts in an incremental manner with a Climate Control System example and they explain the details very well. After reading the book, you can read the OMG specs or an ORB spec much easier. It puts the pieces of various C++ Report "Object Interconnection" articles by Douglas Schmidt and Steve Vinoski over the past 5 years into perspective. The text also explains the better known CORBA services including Naming, Event, and Trading Services.

Jun 30, 1999     Erik Johannes from Beaverton, OR
Excellent book for both intro and as a reference
I am an experienced programmer who is new to the Corba world. I have purchased several books on Corba to get up to speed and also to use as reference material during my development phase. This book has struck me as being outstanding because it not only brings one up to speed on Corba details but also makes an excellent reference once one is experienced with Corba. I have ordered 5 copies for my company.



Forgot your password?
FAQs
Shipping Options
Returns
Your Orders
Your Account