Contents

 

Home Purchase Preface Contents Examples Resources Errata Site Guide

 
  COM and CORBAź Side by Side

ISBN: 0-201-37945-7
450 Pages, 1st Edition, July 1999
Addison-Wesley

Table of Contents

Excerpted from COM and CORBAź Side by Side: Architectures, Strategies, and Implementations by Jason Pritchard. Copyright © 1999. Reprinted by permission. All rights reserved.
 
bulletPart I: Embracing COM and CORBA
bulletPart II: COM and CORBA on the Server
bulletPart III: COM and CORBA on the Client
bulletPart IV: Bridging COM and CORBA


Preface  xv

Part I: Embracing COM and CORBA  1

Chapter 1: The Arrival of Distributed Objects  3

Client/Server Beginnings 4
2-Tier, 3-Tier, and N-Tier Architectures 5
Communicating Between Tiers 8
The Power of Distributed Objects 10
From Objects to Components 10
Managing Distributed Systems 13
The State of Distributed Objects 15
 

Chapter 2: The Dominance of COM and CORBA  17

The Distributed Object Landscape 18
    Microsoft's COM/DCOM 18
    IBM's SOM/DSOM 18
    CORBA 19
    Java RMI 20
    ObjectSpace's Voyager 20
    Summary 21
COM: The Dominant Component Architecture 21
CORBA: The Dominant Remoting Architecture 23
Evolutionary Trends 26
A Test of Wills 26
    Vendor Perspective 27
    User Perspective 28
Who Is the Winner? 29
 

Chapter 3: Distributed Object Fundamentals  31

An Overview of the Fundamentals 32
A Distributed Object Example 33
    COM Object and Clients 35
    CORBA Object and Clients 35
    Reviewing the Requirements 38
Demonstrating the Fundamentals 38
    Selecting Data Types 40
    Defining the Interfaces 41
        COM IDL and Type Libraries 41
        CORBA IDL 47
    Proxies, Stubs, and Skeletons 50
        COM Proxies and Stubs 52
        COM Type Library Marshaling 53
        CORBA Stubs and Skeletons 54
    Implementing the Servers 56
    Implementing the Clients 57
        Using IDL in the COM C++ Client 58
        Using a Type Library in the COM Visual Basic Client 60
        Using IDL in the Orbix CORBA C++ Client 62
        Using IDL in the VisiBroker CORBA Java Client 63
        Client Implementation Summary 64
    Object Handles 64
        COM Interface Pointers in C++ 65
        COM Interface Pointers in Visual Basic 69
        CORBA Object References in C++ 70
        CORBA Object References in Java 74
    Creating Objects 75
        COM Factories 75
        COM Object Creation in C++ 77
        COM Object Creation in Visual Basic 80
        CORBA Factories 82
        CORBA Object Creation in C++ and Java 85
    Invoking Object Methods 87
        COM HRESULTs 88
        COM Error Handling in the C++ Client 90
        COM Error Handling in the Visual Basic Client 91
        CORBA Exceptions 92
        CORBA Exception Handling in the C++ and Java Clients 93
    Destroying Objects 95
        Destroying COM Objects 96
        Destroying CORBA Objects 97
Summary 100
 

Part II: COM and CORBA on the Server  103

Chapter 4: Assessing the Server Side  105

What Constitutes the Server Side? 106
Partitioning the Enterprise 107
Strategic Directions of COM and CORBA 109
    COM: A Vertical Strategy 110
    CORBA: A Horizontal Strategy 111
The Need for an Assessment Strategy 113
Assessment Criteria 114
    Platform Criteria 114
    Essential Services 115
    Intangibles 116
An Assessment Strategy 116
    Prerequisites 117
    Recording the Assessment History 117
    Rating the Criteria 118
    Assessment Steps 118
    An Assessment Example 119
    COM and CORBA in Your Enterprise Solution 119
 

Chapter 5: The Server Platform  121

Review of the Platform Criteria 122
Legacy System Support 122
    General Approaches for Supporting Legacy Systems 123
        Identifying Significant Legacy Systems 123
        Selecting Platforms for New Development 124
        Wrapper Approach 125
        Gateway Approach 126
    Legacy Support When Using COM 128
        COM and the Wrapper Approach 129
        COM and the Gateway Approach 129
        Using COM to Access Legacy Data 130
        COM Integration with CICS and IMS 131
        COM Integration with IBM's MQSeries 132
        Summary of COM-Related Legacy Support 132
    Legacy Support When Using CORBA 133
        CORBA and the Wrapper Approach 133
        CORBA and the Gateway Approach 134
        Summary of CORBA-Related Legacy Support 135
The Development Platform 135
    COM Development Platforms 136
        COM/Windows/C++ Development Platform 136
        COM/Windows/Java Development Platform 137
        COM/Windows/Visual Basic Development Platform 138
        Non-Windows COM Development Platforms 138
    CORBA Development Platforms 139
Availability of Development Tools 140
    COM Development Tools 140
    CORBA Development Tools 141
Summary 141
 

Chapter 6: Essential Services  143

Review of the Service Criteria 144
Distributed Transaction Support 145
    A Scenario for a Distributed Object Transaction 145
    COM, MTS, and the Distributed Transaction Coordinator 148
    CORBA and the Object Transaction Service 156
Distributed Security 162
    DCOM Security 163
    MTS Security 170
    CORBA and the Secure Sockets Layer 174
    The CORBA Security Service 175
Messaging Support 179
    COM and Microsoft Message Queue Server 181
    CORBA and Messaging Support 187
Distributed Object Management 190
    The Need for Stateless Objects 191
    COM Object Management Under Microsoft's MTS 194
    CORBA Object Management Under BEA Systems' M3 198
Summary 202
 

Chapter 7: Server-Side Intangibles  205

Vendor Perception 206
Vendor Commitment and Viability 207
Vendor Lock-in 208
Availability of Product 209
Availability of Development Staff 209
Product Cost 211
Server-Side Summary 211
 
 

Part III: COM and CORBA on the Client  213

Chapter 8: The Desktop Client  215

Impact of Distributed Objects 216
Dominance of COM on the Desktop 217
COM Client Approaches 218
    Custom Interfaces 219
    Automation Interfaces 227
    Dual Interfaces 229
Installing Remote COM Clients 235
COM Development Environments 238
    The Visual Basic COM Client 239
    The Visual J++ COM Client 242
    The Visual C++ COM Client 247
Summary 253
 

Chapter 9: The Internet Client  255

Distributed Object Internet Strategies 256
    COM Internet Strategies 257
    CORBA Internet Strategies 259
Using COM with Active Server Pages 261
Using CORBA in a Java Applet 267
The Push Technology Alternative 272
Summary 274
 

Chapter 10: Client Design Considerations  277

Remoting Requirements and Design Issues 278
Client Needs Versus Remoting Requirements 280
Security Issues for Internet Clients 282
    Security Issues When Using Active Server Pages 283
    Security Issues When Using Java Applets 285
Migrating from the Desktop to the Internet 288
    Implementing the COM and CORBA Customer Servers 289
        The COM Customer Server and Proxy 289
        The COM Customer Wrapper 294
        The CORBA Customer Server and Proxy 297
    Implementing the COM/CORBA Customer Bridge 300
        The COM-to-CORBA Customer Bridge 300
        The CORBA-to-COM Customer Bridge 301
    Implementing the COM and CORBA Customer Clients 303
        The Visual Basic Customer Client 304
        The Active Server Pages Customer Client 308
        The CORBA/Java Customer Client 310
    Migration Summary 313
Client-Side Summary 314
 
 

Part IV: Bridging COM and CORBA  317

Chapter 11: Custom Bridging Approaches  319

Overview of Bridging Example 320
Using C++ to Bridge COM and CORBA 322
Using Microsoft's JVM as a Bridge 323
    Using a CORBA/Java ORB with Microsoft's JVM 323
    A COM-to-CORBA Bridge 324
    A Visual Basic Client 327
Other COM/CORBA Bridging Approaches 328
    Using COM in Non-Microsoft JVMs 328
    Bridging ActiveX and JavaBeans 328
    Using Environments That Support COM and CORBA 329
    Future Java/COM Support from Microsoft 330
Summary 330
 

Chapter 12: Commercial Bridging Approach  333

COM/CORBA Interworking Specification 334
Vendor Support for COM/CORBA Bridging 337
A Commercial Bridging Example 338
    Selecting a Commercial Bridging Product 338
    The CORBA Server 339
    Creating a COM View for the CORBA Server 342
    Using the CORBA Server from a Visual Basic Client 346
    Using COM Servers from CORBA Clients 352
Bridging COM/CORBA Services 353
Summary 354
 

Chapter 13: Enterprise Application Servers  357

Emergence of Enterprise Application Servers 358
    Early Web Application Servers 358
    The Need for Enterprise Application Servers 359
Enterprise Application Server Criteria 360
Enterprise Application Server Approaches 362
    COM Approach 362
    CORBA Approach 364
    Enterprise JavaBeans Approach 366
Summary 368
 

Chapter 14: Conclusion  371

A Summary of What We've Covered 371
    Embracing COM and CORBA (Part I) 371
    COM and CORBA on the Server (Part II) 372
    COM and CORBA on the Client (Part III) 373
    Bridging COM and CORBA (Part IV) 374
Farewell 374
 
 

Appendices

Appendix A: References  375

On COM 375
On CORBA 375
On COM/CORBA Bridging 375
 

Appendix B: Examples Available for Download  377

Chapter 3 Examples 377

Clients 377
    COM C++ Client 377
    COM Visual Basic Client 377
    CORBA C++ Client 378
    CORBA Java Client 378
Servers 378
    COM IDL 378
    CORBA IDL 378
    COM C++ Server 378
    CORBA C++ Server 379
 

Chapter 6 Examples  379

MTS Example 379
    MTS Account Server 379
    MTS Teller Server 379
    MTS Client 379
COM Security 380
    COM Secure Agent Server 380
    COM Secure Client 380
    MTS Secure Account Server 380
    MTS Secure Client 380
MSMQ Example 380
    MSMQ Market Application 380
    MSMQ Trader Application 381
 

Chapter 8 Examples  381

Automation Interface Approach 381
    Visual J++ Server 381
    Visual Basic Client 381
    Visual C++ Client 381
    Visual J++ Client 382
Custom Interface Approach 382
    Visual C++ Server 382
    Visual Basic Client 382
    Visual C++ Client 382
    Visual J++ Client 382
Dual Interface Approach 382
    Visual Basic Server 383
    Visual C++ Server 383
    Visual J++ Server 383
    Visual Basic Client 383
    Visual Basic Automation Client 383
    Visual C++ Client 383
    Visual J++ Client 384
 

Chapter 9 Examples  384

Clients 384
    COM Active Server Pages Client 384
    CORBA Java Applet 384
Servers 384
    COM IDL 384
    CORBA IDL 385
    COM Server 385
    CORBA Server 385
 

Chapter 10 Examples  385

Clients 385
    COM Active Server Pages Client 385
    COM Visual Basic Client 386
    CORBA Java Applet 386
Servers 386
    COM IDL 386
    CORBA IDL 386
    COM Customer Interface 386
    COM Customer Wrapper 387
    COM Customer Server 387
    COM Customer Proxy 387
    COM-to-CORBA Bridge 387
    CORBA Customer Server 387
    CORBA Customer Proxy 387
    CORBA-to-COM Bridge 388
 

Chapter 11 Examples  388

COM IDL 388
CORBA IDL 388
COM Client 388
COM-to-CORBA Bridge 388
CORBA Server 389
 

Chapter 12 Examples  389

Bindings Generated by Commercial Bridging Product 389
COM Client 389
CORBA Server 389
 

Appendix C: Selected Example Code  391

MyCheckingAccount Classes (from Ch. 3) 391
    COM/C++ MyCheckingAccount Class 391
    COM/Visual Basic MyCheckingAccount Class 397
    CORBA/C++ MyCheckingAccount Class 400
    CORBA/Java MyCheckingAccount Class 405
MTS Components (from Ch. 6) 408
    Ch6Teller MTS Component 408
    Ch6Account MTS Component 411
MSMQ Applications (from Ch. 6) 415
    Trader MSMQ Application 415
    Stock Market MSMQ Application 417

 Index  421

 

Home ] Purchase ] Preface ] [ Contents ] Examples ] Resources ] Errata ] Site Guide ]

Send mail to jpritchard@pobox.com with questions or comments about this web site.
Last modified: August 12, 2003