SlideShare a Scribd company logo
1 of 29
DCOM Vs. CORBA

    Presented By
  Chandrika Mavram

        Date
    Dec 1st, 1999.
INDEX

1.   Terminology Used
2.   About DCOM
3.   About CORBA
4.   Features
5.   Interaction Between Server and Client
6.   DCOM Architecture
7.   CORBA Architecture
Index Cont’d
8. Different Layers
9. Sample Application
10. Top Layer - Basic Programming Architecture
11. Middle Layer - Remoting Architecture
12. Bottom Layer - WIRE Protocol Architecture
13. Summary
14. References
Terminology Used
Interface - A named collection of abstract
operations (or methods) that represent one
functionality.
Object class (or class) - A named concrete
implementation of one or more interfaces.
Object (or object instance) -An instantiation of
some object class.
Object server - A process responsible for creating
and hosting object instances.
Client - A process that invokes a method of an
object.
About DCOM
DCOM is the distributed extension to COM
(Component Object Model) that builds an object
RPC layer to support remote objects.
A COM server can create object instances of
multiple classes and also supports multiple
interfaces allowing client-server communication.
A COM client interacts with a COM object by
acquiring a pointer to the object’s interface and
invoking methods through that pointer.
It is the product of Microsoft people.
About CORBA
CORBA (Common Object Request Broker
Architecture), is a distributed object framework
proposed by a consortium of nearly 800 companies
called the Object Management Group (OMG) but
developed by Sun people.
The core of CORBA is the Object Request Broker (OB)
that acts as the object bus over which objects
transparently interact with other objects located locally
or remotely.
A CORBA object is represented by an interface with a
set of methods and the instances are identified bye object
reference
Object implementation interacts with the ORB through
either an Object Adaptor or thru ORB interface.
FEATURES

Both DCOM and CORBA provide client-server
type of communication.A client invokes a method
implemented by a remote object (i.e., server).
The service provided by the server is encapsulated
as an object and the interface of an object is
described in an Interface Definition Language
(IDL).
Features Cont’d
 These interfaces serve as a contract between a server
 and its clients.
 Some OOP features such as data
 encapsulation,polymorphism and single inheritance
 are present at the IDL level.
 CORBA also support multiple inheritance but
 DCOM does not support. But DCOM can have
 multiple interfaces
Interaction Between Server & Client

 The interaction between a client process and an
 object server are implemented as OO RPC style
 communications.
DCOM ARCHITECTURE
CORBA ARCHITECTURE
Different Layers
The top layer is the “basic programming
architecture”, which is visible to the developers of
the client and object server programs.
The middle layer is the “remoting architecture”,
which transparently makes the interface pointers
or objects references meaningful across different
processes.
The bottom layer is the “wire protocol
architecture”, which further extends the remoting
architecture to work across different machines.
Sample Application
There are two groups of methods.
First group has
       get() – to get the value at a point
       set() – to set the value at a point
Second group has
       reset() – sets values at each point to the
          supplied value
DCOM IDL                                                           CORBA IDL
 // definition of IGrid1                                           interface grid1
      [ object, uuid(3CFDB283-CCC5-11D0-BA0B-00A0C90DF8BC),        {
         helpstring("IGrid1 Interface"), pointer_default(unique)      long get(in short n, in short m);
      ]                                                               void set(in short n, in short m, in long
    interface IGrid1 : IUnknown       {                                   value);
                                                                   };
    import "unknwn.idl";
                                                                   interface grid2
   HRESULT get([in] SHORT n, [in] SHORT m, [out] LONG *value);
                                                                   {
    HRESULT set([in] SHORT n, [in] SHORT m, [in] LONG value);
                                                                      void reset(in long value);
   };                                                              };
// definition of IGrid2                                            interface grid: grid1, grid2
 [ object, uuid(3CFDB284-CCC5-11D0-BA0B-00A0C90DF8BC),
     helpstring("IGrid2 Interface"), pointer_default(unique)
 ]
interface IGrid2 : IUnknown        {
    import "unknwn.idl";
     HRESULT reset([in] LONG value);
};
//uuid and definition of type library
 [ uuid(3CFDB281-CCC5-11D0-BA0B-00A0C90DF8BC),
     version(1.0), helpstring("grid 1.0 Type Library)
 ]
 library GRIDLib
 {
   importlib("stdole32.tlb");
    // definition of the component
    [ uuid(3CFDB287-CCC5-11D0-BA0B-00A0C90DF8BC),
       helpstring("Grid Class")
    ]
     coclass CGri
      { [default] interface IGrid1;
          interface IGrid2;
Server Class Definition
Cgrid.h
                                                                 Grid_I.h
#include "grid.h" // IDL-generated interface header file
                                                                 #include "grid.hh" // IDL-generated interface header file
 class CClassFactory : public IClassFactory {
                                                                 class grid1_i : public grid1BOAImpl {
  public: // IUnknown
                                                                     public:
   STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
                                                                      grid1_i(CORBA::Short h, CORBA::Short w);
    STDMETHODIMP_(ULONG) AddRef(void) { return 1; };
                                                                      virtual ~grid1_i();
    STDMETHODIMP_(ULONG) Release(void) { return 1; }
                                                                      virtual void set(CORBA::Short n, CORBA::Short m,
 // IClassFactory
                                                                      CORBA::Long value, CORBA::Environment &env);
    STDMETHODIMP CreateInstance(LPUNKNOWN punkOuter,
                                                                      virtual CORBA::Long get(CORBA::Short n, CORBA::Short m,
                                      REFIID iid, void **ppv);
                                                                                                  CORBA::Environment &env);
   STDMETHODIMP LockServer(BOOL fLock)
                                                                       protected:
  { return E_FAIL; };
                                                                        CORBA::Long **m_a;
};
                                                                        CORBA::Short m_height, m_width;
class CGrid : public IGrid1, public IGrid2 {
                                                                 };
 public: // IUnknown
                                                                  class grid2_i : public grid2BOAImpl {
   STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
                                                                  public:
   STDMETHODIMP_(ULONG) AddRef(void)
                                                                    grid2_i() {};
   { return InterlockedIncrement(&m_cRef); }
                                                                    ~grid2_i() {};
       STDMETHODIMP_(ULONG) Release(void)
                                                                    virtual void reset(CORBA::Long value, CORBA::Environment
       { if (InterlockedDecrement(&m_cRef) == 0)                          &env)=0;
           { delete this; return 0; }                             };
             return 1; }                                          class grid_i : public grid1_i, grid2_i, gridBOAImpl {
 // IGrid1                                                       public:
    STDMETHODIMP get(IN SHORT n, IN SHORT m,                     virtual void reset(CORBA::Long value,
                                OUT LONG *value);                CORBA::Environment &env);
  STDMETHODIMP set(IN SHORT n, IN SHORT m,                       grid_i(CORBA::Short h, CORBA::Short w) : grid1_i(h, w) {};
                IN LONG value);
                                                                 ~grid_i() {};
   // IGrid2
                                                                 };
    STDMETHODIMP reset(IN LONG value);
    CGrid();
   ~CGrid();
Server Main Program
void main()                                              int main()
              {                                          {
              // Event used to signal this main thread
                                                         // create a grid object using the implementation
              hevtDone = CreateEvent(NULL, FALSE,
                                                                class grid_i
     FALSE, NULL);
              hr = CoInitializeEx(NULL,                    grid_i ourGrid(100,100);
     COINIT_MULTITHREADED);                                 try {
              CClassFactory* pcf = new CClassFactory;       // tell Orbix that we have completed the server's
              hr =                                              initialization:
     CoRegisterClassObject(CLSID_CGrid, pcf,
                                                            CORBA::Orbix.impl_is_ready("grid");
                  CLSCTX_SERVER,
     REGCLS_MULTIPLEUSE , &dwRegister);                      } catch (...) {
              // Wait until the event is set by              }
     CGrid::~CGrid()
              WaitForSingleObject(hevtDone,
     INFINITE);
              CloseHandle(hevtDone);
              CoUninitialize();
            }
Client Main Program
#include "grid.h"                                   #include "grid.hh"
void main(int argc, char**argv)                      void main (int argc, char **argv)
  {                                                   {
    IGrid1 *pIGrid1;                                   grid_var gridVar;
    IGrid2 *pIGrid2;                                   CORBA::Long value;
    LONG         value;                                 // bind to "grid" object; returns object reference
    CoInitialize(NULL);        // initialize COM       gridVar = grid::_bind(":grid");
    CoCreateInstance(CLSID_CGrid, NULL,                value = gridVar->get(0, 0);
       CLSCTX_SERVER, IID_IGrid1, (void**)             gridVar->reset(value+1);
       &pIGrid1);                                   }
     pIGrid1->get(0, 0, &value);
     pIGrid1->QueryInterface(IID_IGrid2, (void**)
       pIGrid2);
     pIGrid1->Release();
     pIGrid2->reset(value+1);
     pIGrid2->Release();
     CoUninitialize();
}
Top Layer
Describes how a client requests an object
and invokes its methods, and how a server
creates an object instance and makes it
available.
Main differences
– Specification of interface by a client, COM’s
  class factories and the Iunknown methods
– Performance of Exceptional Handling
TOP LAYER
PROGRAMMER’S VIEW OF DCOM
TOP LAYER
PROGRAMMER’S VIEW OF CORBA
Middle Layer
Consists of infrastructure necessary for
providing the client and the server with the
illustion that they are in the same address
space.
Main differences include
– how server objects are registered.
– when the proxy/stub/skeleton instances are
  created.
MIDDLE LAYER
PROGRAMMER’S VIEW OF DCOM
MIDDLE LAYER
PROGRAMMER’S VIEW OF CORBA
Bottom Layer
Specifies the wire protocol for supporting
the client and the server running on
different machines.
Main differences
– how remote interface pointers or object
  references are represented to convey server
  endpoint representation to client
– standard format in which the data is marshaled
  for transmission in heterogeneous environment
BOTTOM LAYER
PROGRAMMER’S VIEW OF DCOM
BOTTOM LAYER
PROGRAMMER’S VIEW OF CORBA
Summary
   The three-layer step-by-step descriptions have shown that the architectures
 of DCOM and CORBA are basically similar.
   They both provide the distributed objects infrastructure for transparent
 activation and accessing of remote objects.

  • First,DCOM supports objects with multiple interfaces and provides a
    standard QueryInterface() method to navigate among the interfaces. This
    also introduces the notion of an object proxy/stub dynamically loading
    multiple interface proxies/stubs in the remoting layer. Such concepts do
    not exist in CORBA.

  • Second, every CORBA interface inherits from CORBA::Object, the
    constructor of which implicitly performs such common tasks as object
    registration, object reference generation, skeleton instantiation, etc. In
    DCOM, such tasks are either explicitly performed by the server programs
    or handled dynamically by DCOM run-time system.
Summary Cont’d
 • Third, DCOM's wire protocol is strongly tied to RPC, but
   CORBA's is not. Finally, we would like to point out that DCOM
   specification contains many details that are considered as
   implementation issues and not specified by CORBA.
References
1.   http://www.omg.org/corba/beginners.html
2.   http://www.microsoft.com/ntserver/guide/dcom/asp
3.   http://www.bell-labs.com/~emerald/dcom_corba/Pap

More Related Content

What's hot

Chap 06 delivery and routing of ip packets
Chap 06 delivery and routing of ip packetsChap 06 delivery and routing of ip packets
Chap 06 delivery and routing of ip packetsNoctorous Jamal
 
Advanced computer network
Advanced computer networkAdvanced computer network
Advanced computer networkTrinity Dwarka
 
Operating System Overview
Operating System OverviewOperating System Overview
Operating System OverviewAnas Ebrahim
 
Data abstraction in DBMS
Data abstraction in DBMSData abstraction in DBMS
Data abstraction in DBMSPapan Sarkar
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver艾鍗科技
 
Cs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT VCs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT Vpkaviya
 
Operating system
Operating systemOperating system
Operating systemvivek anand
 
Kernel I/O subsystem
Kernel I/O subsystemKernel I/O subsystem
Kernel I/O subsystemAtiKa Bhatti
 
INTER PROCESS COMMUNICATION (IPC).pptx
INTER PROCESS COMMUNICATION (IPC).pptxINTER PROCESS COMMUNICATION (IPC).pptx
INTER PROCESS COMMUNICATION (IPC).pptxLECO9
 
Operating system concepts
Operating system conceptsOperating system concepts
Operating system conceptsStarlee Lathong
 
Osi model vs TCP/IP
Osi model vs TCP/IPOsi model vs TCP/IP
Osi model vs TCP/IPMannu Khani
 
Memory management
Memory managementMemory management
Memory managementcpjcollege
 
Computer Network
Computer NetworkComputer Network
Computer NetworkHassan Khan
 
3 Level Architecture
3 Level Architecture3 Level Architecture
3 Level ArchitectureAdeel Rasheed
 

What's hot (20)

operating system structure
operating system structureoperating system structure
operating system structure
 
Chap 06 delivery and routing of ip packets
Chap 06 delivery and routing of ip packetsChap 06 delivery and routing of ip packets
Chap 06 delivery and routing of ip packets
 
Advanced computer network
Advanced computer networkAdvanced computer network
Advanced computer network
 
Operating System Overview
Operating System OverviewOperating System Overview
Operating System Overview
 
Data abstraction in DBMS
Data abstraction in DBMSData abstraction in DBMS
Data abstraction in DBMS
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver
 
Distributed Operating System_1
Distributed Operating System_1Distributed Operating System_1
Distributed Operating System_1
 
Chapter 3: Processes
Chapter 3: ProcessesChapter 3: Processes
Chapter 3: Processes
 
Np unit2
Np unit2Np unit2
Np unit2
 
Cs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT VCs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT V
 
Operating system
Operating systemOperating system
Operating system
 
System call
System callSystem call
System call
 
Dhcp ppt
Dhcp pptDhcp ppt
Dhcp ppt
 
Kernel I/O subsystem
Kernel I/O subsystemKernel I/O subsystem
Kernel I/O subsystem
 
INTER PROCESS COMMUNICATION (IPC).pptx
INTER PROCESS COMMUNICATION (IPC).pptxINTER PROCESS COMMUNICATION (IPC).pptx
INTER PROCESS COMMUNICATION (IPC).pptx
 
Operating system concepts
Operating system conceptsOperating system concepts
Operating system concepts
 
Osi model vs TCP/IP
Osi model vs TCP/IPOsi model vs TCP/IP
Osi model vs TCP/IP
 
Memory management
Memory managementMemory management
Memory management
 
Computer Network
Computer NetworkComputer Network
Computer Network
 
3 Level Architecture
3 Level Architecture3 Level Architecture
3 Level Architecture
 

Viewers also liked

Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Peter R. Egli
 
Corba concepts & corba architecture
Corba concepts & corba architectureCorba concepts & corba architecture
Corba concepts & corba architecturenupurmakhija1211
 
Component object model and
Component object model andComponent object model and
Component object model andSaransh Garg
 
ASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOMASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOMAashish Jain
 
Distributed objects & components of corba
Distributed objects & components of corbaDistributed objects & components of corba
Distributed objects & components of corbaMayuresh Wadekar
 
Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBACommon Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBAPeter R. Egli
 
Como crear Clientes/Servidores en COM-DCOM
Como crear Clientes/Servidores en COM-DCOMComo crear Clientes/Servidores en COM-DCOM
Como crear Clientes/Servidores en COM-DCOMEliana Ruiz
 
RMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolsRMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolselliando dias
 
Linux Firewall - NullCon Chennai Presentation
Linux Firewall - NullCon Chennai PresentationLinux Firewall - NullCon Chennai Presentation
Linux Firewall - NullCon Chennai PresentationVinoth Sivasubramanan
 
ASP.net Image Slideshow
ASP.net Image SlideshowASP.net Image Slideshow
ASP.net Image SlideshowHock Leng PUAH
 
EJB3 Advance Features
EJB3 Advance FeaturesEJB3 Advance Features
EJB3 Advance FeaturesEmprovise
 

Viewers also liked (20)

Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)
 
Presentation On Com Dcom
Presentation On Com DcomPresentation On Com Dcom
Presentation On Com Dcom
 
Corba concepts & corba architecture
Corba concepts & corba architectureCorba concepts & corba architecture
Corba concepts & corba architecture
 
COM and DCOM
COM and DCOMCOM and DCOM
COM and DCOM
 
Component object model and
Component object model andComponent object model and
Component object model and
 
ASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOMASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOM
 
Distributed objects & components of corba
Distributed objects & components of corbaDistributed objects & components of corba
Distributed objects & components of corba
 
DCOM
DCOMDCOM
DCOM
 
Corba
CorbaCorba
Corba
 
Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBACommon Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBA
 
Corba
CorbaCorba
Corba
 
Unit 6 dcom
Unit 6 dcom   Unit 6 dcom
Unit 6 dcom
 
Como crear Clientes/Servidores en COM-DCOM
Como crear Clientes/Servidores en COM-DCOMComo crear Clientes/Servidores en COM-DCOM
Como crear Clientes/Servidores en COM-DCOM
 
RMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolsRMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable tools
 
Dcom visualC++
Dcom visualC++Dcom visualC++
Dcom visualC++
 
Linux Firewall - NullCon Chennai Presentation
Linux Firewall - NullCon Chennai PresentationLinux Firewall - NullCon Chennai Presentation
Linux Firewall - NullCon Chennai Presentation
 
Rhel4
Rhel4Rhel4
Rhel4
 
ASP.net Image Slideshow
ASP.net Image SlideshowASP.net Image Slideshow
ASP.net Image Slideshow
 
Access control list
Access control listAccess control list
Access control list
 
EJB3 Advance Features
EJB3 Advance FeaturesEJB3 Advance Features
EJB3 Advance Features
 

Similar to Dcom vs. corba

개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
The Ring programming language version 1.5.2 book - Part 78 of 181
The Ring programming language version 1.5.2 book - Part 78 of 181The Ring programming language version 1.5.2 book - Part 78 of 181
The Ring programming language version 1.5.2 book - Part 78 of 181Mahmoud Samir Fayed
 
FPGA training session generic package and funtions of VHDL by Digitronix Nepal
FPGA training session generic package and funtions of VHDL by Digitronix NepalFPGA training session generic package and funtions of VHDL by Digitronix Nepal
FPGA training session generic package and funtions of VHDL by Digitronix NepalKrishna Gaihre
 
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)Igalia
 
Polygon .java package chegg2;public class Polygon { Var.pdf
Polygon .java package chegg2;public class Polygon {  Var.pdfPolygon .java package chegg2;public class Polygon {  Var.pdf
Polygon .java package chegg2;public class Polygon { Var.pdfaplolomedicalstoremr
 
Design patterns
Design patternsDesign patterns
Design patternsBa Tran
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialskksupaul
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialskailash454
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerGarth Gilmour
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerGarth Gilmour
 

Similar to Dcom vs. corba (20)

DCOM Comparison
DCOM ComparisonDCOM Comparison
DCOM Comparison
 
C++ via C#
C++ via C#C++ via C#
C++ via C#
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
Lecture07
Lecture07Lecture07
Lecture07
 
Oo ps
Oo psOo ps
Oo ps
 
Lecture5
Lecture5Lecture5
Lecture5
 
Npc14
Npc14Npc14
Npc14
 
The Ring programming language version 1.5.2 book - Part 78 of 181
The Ring programming language version 1.5.2 book - Part 78 of 181The Ring programming language version 1.5.2 book - Part 78 of 181
The Ring programming language version 1.5.2 book - Part 78 of 181
 
FPGA training session generic package and funtions of VHDL by Digitronix Nepal
FPGA training session generic package and funtions of VHDL by Digitronix NepalFPGA training session generic package and funtions of VHDL by Digitronix Nepal
FPGA training session generic package and funtions of VHDL by Digitronix Nepal
 
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)
Stranger in These Parts. A Hired Gun in the JS Corral (JSConf US 2012)
 
Codejunk Ignitesd
Codejunk IgnitesdCodejunk Ignitesd
Codejunk Ignitesd
 
Polygon .java package chegg2;public class Polygon { Var.pdf
Polygon .java package chegg2;public class Polygon {  Var.pdfPolygon .java package chegg2;public class Polygon {  Var.pdf
Polygon .java package chegg2;public class Polygon { Var.pdf
 
Design patterns
Design patternsDesign patterns
Design patterns
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
Lecture21
Lecture21Lecture21
Lecture21
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin Compiler
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin Compiler
 
Writing MySQL UDFs
Writing MySQL UDFsWriting MySQL UDFs
Writing MySQL UDFs
 
Computer networkppt4577
Computer networkppt4577Computer networkppt4577
Computer networkppt4577
 

More from Mohd Arif

Bootp and dhcp
Bootp and dhcpBootp and dhcp
Bootp and dhcpMohd Arif
 
Arp and rarp
Arp and rarpArp and rarp
Arp and rarpMohd Arif
 
User datagram protocol
User datagram protocolUser datagram protocol
User datagram protocolMohd Arif
 
Project identification
Project identificationProject identification
Project identificationMohd Arif
 
Project evalaution techniques
Project evalaution techniquesProject evalaution techniques
Project evalaution techniquesMohd Arif
 
Presentation
PresentationPresentation
PresentationMohd Arif
 
Pointers in c
Pointers in cPointers in c
Pointers in cMohd Arif
 
Peer to-peer
Peer to-peerPeer to-peer
Peer to-peerMohd Arif
 
Overview of current communications systems
Overview of current communications systemsOverview of current communications systems
Overview of current communications systemsMohd Arif
 
Overall 23 11_2007_hdp
Overall 23 11_2007_hdpOverall 23 11_2007_hdp
Overall 23 11_2007_hdpMohd Arif
 
Objectives of budgeting
Objectives of budgetingObjectives of budgeting
Objectives of budgetingMohd Arif
 
Network management
Network managementNetwork management
Network managementMohd Arif
 
Networing basics
Networing basicsNetworing basics
Networing basicsMohd Arif
 
Iris ngx next generation ip based switching platform
Iris ngx next generation ip based switching platformIris ngx next generation ip based switching platform
Iris ngx next generation ip based switching platformMohd Arif
 
Ip sec and ssl
Ip sec and  sslIp sec and  ssl
Ip sec and sslMohd Arif
 
Ip security in i psec
Ip security in i psecIp security in i psec
Ip security in i psecMohd Arif
 
Intro to comp. hardware
Intro to comp. hardwareIntro to comp. hardware
Intro to comp. hardwareMohd Arif
 

More from Mohd Arif (20)

Bootp and dhcp
Bootp and dhcpBootp and dhcp
Bootp and dhcp
 
Arp and rarp
Arp and rarpArp and rarp
Arp and rarp
 
User datagram protocol
User datagram protocolUser datagram protocol
User datagram protocol
 
Project identification
Project identificationProject identification
Project identification
 
Project evalaution techniques
Project evalaution techniquesProject evalaution techniques
Project evalaution techniques
 
Presentation
PresentationPresentation
Presentation
 
Pointers in c
Pointers in cPointers in c
Pointers in c
 
Peer to-peer
Peer to-peerPeer to-peer
Peer to-peer
 
Overview of current communications systems
Overview of current communications systemsOverview of current communications systems
Overview of current communications systems
 
Overall 23 11_2007_hdp
Overall 23 11_2007_hdpOverall 23 11_2007_hdp
Overall 23 11_2007_hdp
 
Objectives of budgeting
Objectives of budgetingObjectives of budgeting
Objectives of budgeting
 
Network management
Network managementNetwork management
Network management
 
Networing basics
Networing basicsNetworing basics
Networing basics
 
Loaders
LoadersLoaders
Loaders
 
Lists
ListsLists
Lists
 
Iris ngx next generation ip based switching platform
Iris ngx next generation ip based switching platformIris ngx next generation ip based switching platform
Iris ngx next generation ip based switching platform
 
Ip sec and ssl
Ip sec and  sslIp sec and  ssl
Ip sec and ssl
 
Ip security in i psec
Ip security in i psecIp security in i psec
Ip security in i psec
 
Intro to comp. hardware
Intro to comp. hardwareIntro to comp. hardware
Intro to comp. hardware
 
Heap sort
Heap sortHeap sort
Heap sort
 

Recently uploaded

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Recently uploaded (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Dcom vs. corba

  • 1. DCOM Vs. CORBA Presented By Chandrika Mavram Date Dec 1st, 1999.
  • 2. INDEX 1. Terminology Used 2. About DCOM 3. About CORBA 4. Features 5. Interaction Between Server and Client 6. DCOM Architecture 7. CORBA Architecture
  • 3. Index Cont’d 8. Different Layers 9. Sample Application 10. Top Layer - Basic Programming Architecture 11. Middle Layer - Remoting Architecture 12. Bottom Layer - WIRE Protocol Architecture 13. Summary 14. References
  • 4. Terminology Used Interface - A named collection of abstract operations (or methods) that represent one functionality. Object class (or class) - A named concrete implementation of one or more interfaces. Object (or object instance) -An instantiation of some object class. Object server - A process responsible for creating and hosting object instances. Client - A process that invokes a method of an object.
  • 5. About DCOM DCOM is the distributed extension to COM (Component Object Model) that builds an object RPC layer to support remote objects. A COM server can create object instances of multiple classes and also supports multiple interfaces allowing client-server communication. A COM client interacts with a COM object by acquiring a pointer to the object’s interface and invoking methods through that pointer. It is the product of Microsoft people.
  • 6. About CORBA CORBA (Common Object Request Broker Architecture), is a distributed object framework proposed by a consortium of nearly 800 companies called the Object Management Group (OMG) but developed by Sun people. The core of CORBA is the Object Request Broker (OB) that acts as the object bus over which objects transparently interact with other objects located locally or remotely. A CORBA object is represented by an interface with a set of methods and the instances are identified bye object reference Object implementation interacts with the ORB through either an Object Adaptor or thru ORB interface.
  • 7. FEATURES Both DCOM and CORBA provide client-server type of communication.A client invokes a method implemented by a remote object (i.e., server). The service provided by the server is encapsulated as an object and the interface of an object is described in an Interface Definition Language (IDL).
  • 8. Features Cont’d These interfaces serve as a contract between a server and its clients. Some OOP features such as data encapsulation,polymorphism and single inheritance are present at the IDL level. CORBA also support multiple inheritance but DCOM does not support. But DCOM can have multiple interfaces
  • 9. Interaction Between Server & Client The interaction between a client process and an object server are implemented as OO RPC style communications.
  • 12. Different Layers The top layer is the “basic programming architecture”, which is visible to the developers of the client and object server programs. The middle layer is the “remoting architecture”, which transparently makes the interface pointers or objects references meaningful across different processes. The bottom layer is the “wire protocol architecture”, which further extends the remoting architecture to work across different machines.
  • 13. Sample Application There are two groups of methods. First group has get() – to get the value at a point set() – to set the value at a point Second group has reset() – sets values at each point to the supplied value
  • 14. DCOM IDL CORBA IDL // definition of IGrid1 interface grid1 [ object, uuid(3CFDB283-CCC5-11D0-BA0B-00A0C90DF8BC), { helpstring("IGrid1 Interface"), pointer_default(unique) long get(in short n, in short m); ] void set(in short n, in short m, in long interface IGrid1 : IUnknown { value); }; import "unknwn.idl"; interface grid2 HRESULT get([in] SHORT n, [in] SHORT m, [out] LONG *value); { HRESULT set([in] SHORT n, [in] SHORT m, [in] LONG value); void reset(in long value); }; }; // definition of IGrid2 interface grid: grid1, grid2 [ object, uuid(3CFDB284-CCC5-11D0-BA0B-00A0C90DF8BC), helpstring("IGrid2 Interface"), pointer_default(unique) ] interface IGrid2 : IUnknown { import "unknwn.idl"; HRESULT reset([in] LONG value); }; //uuid and definition of type library [ uuid(3CFDB281-CCC5-11D0-BA0B-00A0C90DF8BC), version(1.0), helpstring("grid 1.0 Type Library) ] library GRIDLib { importlib("stdole32.tlb"); // definition of the component [ uuid(3CFDB287-CCC5-11D0-BA0B-00A0C90DF8BC), helpstring("Grid Class") ] coclass CGri { [default] interface IGrid1; interface IGrid2;
  • 15. Server Class Definition Cgrid.h Grid_I.h #include "grid.h" // IDL-generated interface header file #include "grid.hh" // IDL-generated interface header file class CClassFactory : public IClassFactory { class grid1_i : public grid1BOAImpl { public: // IUnknown public: STDMETHODIMP QueryInterface(REFIID riid, void** ppv); grid1_i(CORBA::Short h, CORBA::Short w); STDMETHODIMP_(ULONG) AddRef(void) { return 1; }; virtual ~grid1_i(); STDMETHODIMP_(ULONG) Release(void) { return 1; } virtual void set(CORBA::Short n, CORBA::Short m, // IClassFactory CORBA::Long value, CORBA::Environment &env); STDMETHODIMP CreateInstance(LPUNKNOWN punkOuter, virtual CORBA::Long get(CORBA::Short n, CORBA::Short m, REFIID iid, void **ppv); CORBA::Environment &env); STDMETHODIMP LockServer(BOOL fLock) protected: { return E_FAIL; }; CORBA::Long **m_a; }; CORBA::Short m_height, m_width; class CGrid : public IGrid1, public IGrid2 { }; public: // IUnknown class grid2_i : public grid2BOAImpl { STDMETHODIMP QueryInterface(REFIID riid, void** ppv); public: STDMETHODIMP_(ULONG) AddRef(void) grid2_i() {}; { return InterlockedIncrement(&m_cRef); } ~grid2_i() {}; STDMETHODIMP_(ULONG) Release(void) virtual void reset(CORBA::Long value, CORBA::Environment { if (InterlockedDecrement(&m_cRef) == 0) &env)=0; { delete this; return 0; } }; return 1; } class grid_i : public grid1_i, grid2_i, gridBOAImpl { // IGrid1 public: STDMETHODIMP get(IN SHORT n, IN SHORT m, virtual void reset(CORBA::Long value, OUT LONG *value); CORBA::Environment &env); STDMETHODIMP set(IN SHORT n, IN SHORT m, grid_i(CORBA::Short h, CORBA::Short w) : grid1_i(h, w) {}; IN LONG value); ~grid_i() {}; // IGrid2 }; STDMETHODIMP reset(IN LONG value); CGrid(); ~CGrid();
  • 16. Server Main Program void main() int main() { { // Event used to signal this main thread // create a grid object using the implementation hevtDone = CreateEvent(NULL, FALSE, class grid_i FALSE, NULL); hr = CoInitializeEx(NULL, grid_i ourGrid(100,100); COINIT_MULTITHREADED); try { CClassFactory* pcf = new CClassFactory; // tell Orbix that we have completed the server's hr = initialization: CoRegisterClassObject(CLSID_CGrid, pcf, CORBA::Orbix.impl_is_ready("grid"); CLSCTX_SERVER, REGCLS_MULTIPLEUSE , &dwRegister); } catch (...) { // Wait until the event is set by } CGrid::~CGrid() WaitForSingleObject(hevtDone, INFINITE); CloseHandle(hevtDone); CoUninitialize(); }
  • 17. Client Main Program #include "grid.h" #include "grid.hh" void main(int argc, char**argv) void main (int argc, char **argv) { { IGrid1 *pIGrid1; grid_var gridVar; IGrid2 *pIGrid2; CORBA::Long value; LONG value; // bind to "grid" object; returns object reference CoInitialize(NULL); // initialize COM gridVar = grid::_bind(":grid"); CoCreateInstance(CLSID_CGrid, NULL, value = gridVar->get(0, 0); CLSCTX_SERVER, IID_IGrid1, (void**) gridVar->reset(value+1); &pIGrid1); } pIGrid1->get(0, 0, &value); pIGrid1->QueryInterface(IID_IGrid2, (void**) pIGrid2); pIGrid1->Release(); pIGrid2->reset(value+1); pIGrid2->Release(); CoUninitialize(); }
  • 18. Top Layer Describes how a client requests an object and invokes its methods, and how a server creates an object instance and makes it available. Main differences – Specification of interface by a client, COM’s class factories and the Iunknown methods – Performance of Exceptional Handling
  • 21. Middle Layer Consists of infrastructure necessary for providing the client and the server with the illustion that they are in the same address space. Main differences include – how server objects are registered. – when the proxy/stub/skeleton instances are created.
  • 24. Bottom Layer Specifies the wire protocol for supporting the client and the server running on different machines. Main differences – how remote interface pointers or object references are represented to convey server endpoint representation to client – standard format in which the data is marshaled for transmission in heterogeneous environment
  • 27. Summary The three-layer step-by-step descriptions have shown that the architectures of DCOM and CORBA are basically similar. They both provide the distributed objects infrastructure for transparent activation and accessing of remote objects. • First,DCOM supports objects with multiple interfaces and provides a standard QueryInterface() method to navigate among the interfaces. This also introduces the notion of an object proxy/stub dynamically loading multiple interface proxies/stubs in the remoting layer. Such concepts do not exist in CORBA. • Second, every CORBA interface inherits from CORBA::Object, the constructor of which implicitly performs such common tasks as object registration, object reference generation, skeleton instantiation, etc. In DCOM, such tasks are either explicitly performed by the server programs or handled dynamically by DCOM run-time system.
  • 28. Summary Cont’d • Third, DCOM's wire protocol is strongly tied to RPC, but CORBA's is not. Finally, we would like to point out that DCOM specification contains many details that are considered as implementation issues and not specified by CORBA.
  • 29. References 1. http://www.omg.org/corba/beginners.html 2. http://www.microsoft.com/ntserver/guide/dcom/asp 3. http://www.bell-labs.com/~emerald/dcom_corba/Pap