CORBA FAQ

Embed Size (px)

Citation preview

  • 8/13/2019 CORBA FAQ

    1/3

    Im totally new to CORBA.What is CORBA? What does it do?What is CORBA good for?How about a high-level technical overview?How do remote invocations work?That ORB/Skeleton Architecture on the Server Side doesn't look very scalable. What did you leaveout?What is CORBA 2? CORBA 3? What does the version number mean, anyhow?Who is using CORBA already?

    Does your company have a

    networking strategy, to ensure

    interoperability and control costs?

    Im totally new to CORBA.

    This page will get you started. We haven't assumed that you know anything about CORBA. Wedid, however, assume that you know something about computing in general, and distributed(that is, networked) computing in particular - at least what you want to use it for, although not

    necessarily what you have to do to get it to work.

    Some of the points in our discussion are aimed at management, while others are aimed attechnical folks, but it's too soon to diverge. Don't worry about point of view; by clicking on thetopics that look interesting, you'll pick the path that's best for you.

    UML, another OMG standard, maybe even more widely used than

    CORBA.

    What is CORBA? What does it do?

    CORBAis the acronym for Common Object Request Broker Architecture, OMG's open, vendor-independent architecture and infrastructure that computer applications use to work togetherover networks. Using the standard protocol IIOP, a CORBA-based program from any vendor, onalmost any computer, operating system, programming language, and network, caninteroperate with a CORBA-based program from the same or another vendor, on almost anyother computer, operating system, programming language, and network.

    Some people think (or used to, when we originally wrote this page back in the early '90s) thatCORBA is the only specification that OMG produces, or that the term "CORBA" covers all of theOMG specifications. Neither is true; for list with links to all the OMG specifications, click here.To continue with CORBA, read on.

    Some large companies are embedding

    CORBA in networked devices for

    finance and medical applications.

    What is CORBA good for?

    CORBA is useful in many situations. Because of the easy way that CORBA integratesmachines from so many vendors, with sizes ranging from mainframes through minis anddesktops to hand-helds and embedded systems, it is the middleware of choice for large (andeven not-so-large) enterprises. One of its most important, as well most frequent, uses is inservers that must handle large number of clients, at high hit rates, with high reliability. CORBAworks behind the scenes in the computer rooms of many of the world's largest websites; onesthat you probably use every day. Specializations for scalability and fault-tolerance support thesesystems. But it's not used just for large applications; specialized versions of CORBA run real-time systems, and small embedded systems.

    The four keys to object orientation

    are

    * Encapsulation* Polymorphism

    * Inheritance* Instantiation

    How about a high-level technical overview?

    CORBA applications are composed of objects, individual units of running software thatcombine functionality and data, and that frequently (but not always) represent something in thereal world. Typically, there are many instancesof an object of a single type- for example, an e-commerce website would have many shopping cart object instances, all identical infunctionality but differing in that each is assigned to a different customer, and contains datarepresenting the merchandise that its particular customer has selected. For other types, there

    Follow us: Search

    [ OMG Specifications and Process] [ Introduction To OMG Specifications ] [ CORBA FAQ ][ Getting Specs and Products ] [ Payoff ] [ BPM, UML, and CORBA Training ]

    CORBA BASICS

    If You Want To Understand CORBA, This Is The Place To Start!You Can Either Read Straight Down The Page, Or Click On A Question To Go Straight To A Topic ThatInterests You.

    To read this page in Belorussian click here.

    CORBA FAQ 06/12/2013

    http://www.omg.org/gettingstarted/corbafaq.htm 1 / 3

    http://www.omg.org/gettingstarted/overview.htmhttp://www.omg.org/welcome_to_the_members_area.htmhttp://www.omg.org/spec/index.htmhttp://www.omg.org/spec/index.htmhttp://www.corba.org/http://webhostingrating.com/libs/cobra-faq-behttp://www.omg.org/gettingstarted/training.htmhttp://www.omg.org/gettingstarted/payoff.htmhttp://www.omg.org/gettingstarted/specsandprods.htmhttp://www.omg.org/gettingstarted/specintro.htmhttp://www.omg.org/gettingstarted/overview.htmhttp://www.omg.org/fbhttp://www.omg.org/inhttp://www.omg.org/thttp://www.omg.org/omg-rss.htmhttp://www.omg.org/welcome_to_the_members_area.htm
  • 8/13/2019 CORBA FAQ

    2/3

    In CORBA, client and object may bewritten in different programming

    languages!

    may be only one instance. When a legacy application, such as an accounting system, iswrapped in code with CORBA interfaces and opened up to clients on the network, there isusually only one instance.

    For each object type, such as the shopping cart that we just mentioned, you define an interfacein OMG IDL. The interface is the syntax part of the contract that the server object offers to theclients that invoke it. Any client that wants to invoke an operation on the object mustuse thisIDL interface to specify the operation it wants to perform, and to marshal the arguments that itsends. When the invocation reaches the target object, the sameinterface definition is usedthere to unmarshal the arguments so that the object can perform the requested operation withthem. The interface definition is then used to marshal the results for their trip back, and tounmarshal them when they reach their destination.

    The IDL interface definition is independent of programming language, but mapsto all of thepopular programming languages via OMG standards: OMG has standardized mappings from

    IDL to C, C++, C++11, Java, Ruby, COBOL, Smalltalk, Ada, Lisp, Python, and IDLscript.

    For more on OMG IDL, click here.

    This separation of interface from implementation, enabled by OMG IDL, is the essence ofCORBA - how it enables interoperability, with all of the transparencies we've claimed. Theinterfaceto each object is defined very strictly. In contrast, the implementationof an object - itsrunning code, and its data - is hidden from the rest of the system (that is, encapsulated) behinda boundary that the client may not cross. Clients access objects only through their advertisedinterface, invoking only those operations that that the object exposes through its IDL interface,with only those parameters (input and output) that are included in the invocation.

    Figure 1 shows how everything fitstogether, at least within a s ingleprocess: You compile your IDLinto client stubs and objectskeletons, and write your object(shown on the right) and a clientfor it (on the left). Stubs and

    skeletons serve as proxies forclients and servers, respectively.Because IDL defines interfaces sostrictly, the stub on the client sidehas no trouble meshing perfectlywith the skeleton on the serverside, even if the two are compiledinto different programminglanguages, or even running ondifferent ORBs from differentvendors.

    In CORBA, every object instance has i ts own unique object reference, an identifying electronictoken. Clients use the object references to direct their invocations, identifying to the ORB theexact instance they want to invoke (Ensuring, for example, that the books you select go into yourown shopping cart, and not into your neighbor's.) The client acts as if it's invoking an operationon the object instance, but it's actually invoking on the IDL stub which acts as a proxy. Passingthrough the stub on the client side, the invocation continues through the ORB (Object RequestBroker), and the skeleton on the implementation side, to get to the object where it is executed.

    The CORBAservices provide

    standard ways of passi ng objectreferences around your network of

    CORBA objects.

    Location Transparency keeps yourapplications flexible.

    How do remote invocations work?

    Figure 2 diagrams a remote invocation. In order to invoke the remote object instance, the clientfirst obtains its object reference. (There are many ways to do this, but we won't detail any ofthem here. Easy ways include the Naming Service and the Trader Service.) To make theremote invocation, the client uses the same code that it used in the local invocation we justdescribed, substituting the object reference for the remote instance. When the ORB examinesthe object reference and discovers that the target object is remote, it routes the invocation outover the network to the remote object's ORB. (Again we point out: for load balanced servers,this is an oversimplification.)

    How does this work? OMG has standardized this process at two key levels: First, the clientknows the type of object it's invoking (that it's a shopping cart object, for instance), and theclient stub and object skeleton are generated from the same IDL. This means that the clientknows exactly which operations it may invoke, what the input parameters are, and where theyhave to go in the invocation; when the invocation reaches the target, everything is there and inthe right place. We've already seen how OMG IDL accomplishes this . Second, the client's ORBand object's ORB must agree on a common protocol- that is, a representation to specify thetarget object, operation, all parameters (input and output) of every type that they may use, and

    how all of this is represented over the wire. OMG has defined this also - it's the standardprotocol IIOP. (ORBs may use other protocols besides IIOP, and many do for various reasons.But virtually all speak the standard protocol IIOP for reasons of interoperability, and because it'srequired by OMG for compliance.)

    Although the ORB can tell from the object reference that the target object is remote, the clientcan not. (The user may know that this also, because of other knowledge - for instance, that allaccounting objects run on the mainframe at the main office in Tulsa.) There is nothing in theobject reference token that the client holds and uses at invocation time that identifies the

    CORBA FAQ 06/12/2013

    http://www.omg.org/gettingstarted/corbafaq.htm 2 / 3

    http://www.omg.org/technology/documents/corbaservices_spec_catalog.htmhttp://www.omg.org/gettingstarted/omg_idl.htmhttp://www.omg.org/technology/documents/recent/corba_language.htmhttp://www.omg.org/technology/documents/formal/corba_language_mapping_specs.htm
  • 8/13/2019 CORBA FAQ

    3/3

    location of the target object. This ensures location transparency- the CORBA principle thatsimplifies the design of distributed object computing applications.

    OMG's best support for server-

    side scalability comes from theCORBA Component Model.

    That ORB/Skeleton Architecture on the Server side doesn't lookvery scalable. What did you leave out?

    Almost everything. Figure 1 doesn't showanyof CORBA's mechanisms for load balancing,resource control, or fault tolerance on the server side. We deliberately kept the figure simple todemonstrate how CORBA interoperability works.

    For technical details on the ORB, click here. This technical page includes more detail abouthow the ORB works, and the interfaces it bears, including resource control and load

    balancing.

    This FAQ continues with a description of the CORBA specifications.

    The over 500 attendees at eachOMG meeting make it a happening as

    well as an occasion to advance theOMG specification suite.

    What is CORBA 2? CORBA 3? What does the version number mean,anyhow?

    As we've already pointed out, CORBA is a suite of specifications issued by the OMG.

    We've put details of the specification process in their own part of this tutorial. To jump to detailsabout how OMG members work together to define new specifications, click here.

    Formally, CORBA 2 and CORBA 3 refer to complete releases of the entire CORBAspecification. However, because OMG increments the major release number only when theymake a significant addition to the architecture, these phrases become a sort of shorthand forjust the significant addition. So, "CORBA 2" sometimes refers to CORBA interoperability andthe IIOP protocol, and "CORBA 3" sometimes refers to the CORBA Component Model (even

    though the term CORBA 3 really refers to a suite of ten specifications!). It's easy to tell, from thecontext, which meaning an author intends.

    To learn about how to download specifications, click here. To skip the download tutorial and gostraight to the download page, click here.

    Last updated on 11/06/2013 by Jon

    Copyright 1997-2013 Object Management Group, Inc. All Rights Reserved. For questions about the WEBSITE , please contact [email protected] TECHNICAL questions, please contact [email protected]. This site is best viewed with Mozilla Firefox or Internet

    Explorer versions 6.0 or later or any browser capable of viewing JavaScript and CSS 2.0. The site is using DHTML JavaScript Menu By Milonic.com.

    CORBA FAQ 06/12/2013

    http://www.omg.org/gettingstarted/corbafaq.htm 3 / 3

    http://www.milonic.com/mailto:[email protected]:[email protected]://www.omg.org/technology/documents/index.htmhttp://www.omg.org/gettingstarted/specsandprods.htmhttp://www.omg.org/gettingstarted/processintro.htmhttp://www.omg.org/gettingstarted/orb_basics.htm