2What are They?COM: The Component Object Model is a software architecture that allows programs to be built from parts from different software producers.CORBA: The Common Object Request Broker Architecture is an open distributed object computing infrastructure that is being standardized by the Object Management Group (OMG).
3COM Designed by Microsoft in 1993 Primarily used with Windows It is being replaced with Microsoft .NET although it can be used with .NET
4COMCOM provides the framework for interoperability and reusability of distributed objects.Programmers can use different components from different vendors that communicate through COM.Makes maintaining systems easier.
5COMThe main technologies that operate on the COM system are OLE, ActiveX, and MTS.OLE aspects include compound documents, custom controls, inter-application scripting, data transfer, etc.ActiveX allows programs to be web based.MTS provides advanced features to allow COM to be used in enterprise solutions.
7What does COM do?Defines a binary standard for component interoperabilityIs Language-independentCan support multiple platformsAllows for component systems to growIs extensible
8What does COM do?Communications between components, even across process and networks. (dcom)Shared memory management between componentsError and status reportingDynamic loading of components
9How does COM do it? The Binary structure If the compiler can reduce language structures down to the specified binary representation.This allows the communication at the binary level
10VtablesCOM defines a standard way to lay out virtual function tables in memory and a standard way to call functions through vtables.Through this any language that can call functions through pointers can be used with COM.This allows the sharing of resources by using multiples of an object, therefore reducing the memory requirement.
12COM InterfacesAn interface is not a class, it is just a group of related functions and is how components communicate.Clients can only use interface pointers which abstract all functions. The only way an interface can be used is if it has a pointer.A component usually has more than one interface because it has multiple services.Interfaces never change, to make sure that all version can work together. If a new components is added it requires a new interface
13COM interface benefits The functionality in applications to grow over timeAll COM objects support QueryInterface which allows the making of more interfaces without changing the binary compatibility with existing code.This also helps guarantees backward compatibility because of unchangeable interfaces.
14COM Interface benefits Fast interaction because the calls are simply two memory pointers. The difference between a COM call and direct function call is negligible.It allows for fast negotiation of interfaces because it is done in groups.
15COM Interface benefits Interface reusability allows for code to be reused easily and makes it easy for programmers to remember a specific interface.Allows for multiple higher level languages to be used. It breaks down the languages into a binary standard.
16COM Interface benefits COM handles all calls to remote processes including network calls. COM will make the remote procedure call so that no additional code is required to make a remote function call. This functionality was added with the release of DCOM.
17COM Interface Benefits COM creates a unique identifier that is a 128-bit integer so that there will be a way to correctly identify a component across a network of millions of components.
18COM Client/Server Model The interaction between components creates a Client/Server modelThe code that requests a function from a component is considered the client and the component that provides the function is considered the server.This allows for a crash at the server level but will keep the client operating.Clients can also represent themselves and act as a peer to peer service.
19COM Client/Server Model There are 3 different types of servers“in-process” means that the requested information is in the same process“local” means that the location of the component is running on the same machine but in a different process“remote” means that the component is on a different machine on the network.
20COM: IUnknownIUnkown is a special interface made up of AddRef, Release, and QueryInterface.AddRef and Release keep track of the objects connected to the component.QueryInterface allows clients to determine if it can use a given interface with a component. It also retrieves the interface pointers.
21COM: COLThe Component Object Library contains much of the work of the COM system.It maintains all of the GUID’sIt handles loading requested components by calling what the component needs.
22COM: ProblemsImplementation Inheritance can inherit some of its functionality from another componentThe problem is this is not clearly defined. If a parent or child component is changed it my mess up other components related to it.
23COM: ProblemsCost for using COM on Microsoft products is very low, but for non Microsoft products is very expensive.COM doesn’t make distributed any easier it just redirects where this process is handled.
24CORBAIt is maintained by the Object Management Group, which is comprised of nearly all the major software developers.
25CORBACORBA handles network programming tasks such as object registration, location, and activation, request demultiplexing, framing and error-handling, etc.Each service that an object provides is given by its interface which is defined by Interface Definition Language (IDL).Object Request Broker (ORB) handles requests and delivers them from objects to the clients.
26CORBA: ORBThe ORB is a distributed service that sends requests to remote objects, finds that object and waits for it’s reply and gives it to the client.The client is hidden from this process as it same method as calling a local object.
27CORBA: ORBThe ORB also maintains the Interface Repository (IR) which contains the IDL.On the server side ORB regulates the running objects by turning on or off programs as they are needed.
29CORBA: DIIThe Dynamic Invocation Interface are interpreted at run time an not compiled.This allows the invocation of an operation of a new type.There must be a way to retrieve the necessary information to use the DII.
30CORBA: Stubs Stubs are what the client uses to interface with the ORB. A client might invoke hundreds of instances but a new stub is created when the instance is of a different type
31CORBA: ORB InterfaceIt provides access to every ORB service except for client requests which go through the stubs and object requests which are done through the POA.
32CORBA: ORB Implementaion The client-side architecture is simpleThis allows for all scalability options are on the server side.The ORB doesn’t require code to be in a specific spot so that ORBs can spread their work across vast networks or keep it all in one computer.
33CORBA: Interoperability CORBA specifies an API to use which creates the ability to use code with different vendor’s with little effort.CORBA 2.0 added IIOP network protocol that allowed communication of CORBA products over TCP/IP connections.IIOP is used by other systems so that interoperability is possible with non-CORBA systems.
35CORBA: Services These services support the distributed objects. They operate on the ORB and have IDL interfacesThese include naming, events, transactions, properties, etc.
36CORBA: IDLThe Interface Definition Language doesn’t have a programming language but it maps to popular programming languages.The IDL defines the interface very strictly so that it can easily pass requests between different programming language objects.It is so strict that even if an ORD is different is can still easily communicateThe other objects are encapsulated so that a client can’t see other objects code or data.
38CORBA: ProblemsCORBA calls are all the same so the simplest call must be the same as the most complex call. There is no limit on the complexity.Since CORBA is regulated by the very large OMG, it is difficult to create standards because of the many different opinions.