• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Tim Cooke
  • Devaka Cooray
Sheriffs:
  • Liutauras Vilda
  • paul wheaton
  • Rob Spoor
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Piet Souris
  • Mikalai Zaikin
Bartenders:
  • Carey Brown
  • Roland Mueller

Is DCOM still relevant / used in modern application ?

 
Bartender
Posts: 1368
39
IBM DB2 Netbeans IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi there,

just a general question... As far as I know, DCOM is roughly speaking the equivalent of RMI for Microsoft-based technology. RMI has already got a foot in the grave, just wondering if the same may be told about DCOM.

Thanks for you replies.
 
Bartender
Posts: 1210
25
Android Python PHP C++ Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
DirectX - Microsoft's framework for games and graphics - used to be a heavy user of COM.
Since I haven't touched DirectX from a loooong time, I went looking for C++ sample code for the latest DirectX version (v12) out of curiosity if it's still using COM.
And sure enough, it's still using ComPtr safe pointer wrappers over DirectX COM interfaces!

It also looks like WinRT - the successor to Win32 API - is also based on COM according to its wikipedia article .
So yeah, COM seems to be doing surprisingly well in the Windows ecosystem, both at the system layers and at the application layers. Or atleast a lot better than RMI.

Edit:
It occurs to me that system and game programming are both rather specialized areas and represent relatively lesser number of developers.
What about the majority of Windows application developers?
I suspect they are using higher level technologies like C# / VB.NET on .NET and don't use COM much. Just like the average Java developer doesn't use RMI much directly.
 
Claude Moore
Bartender
Posts: 1368
39
IBM DB2 Netbeans IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks for your kind answer! I would have said that DCOM had faded away in favour of .NET remoting....but if WinRT is built upon DCOM, I think I was wrong.
 
Saloon Keeper
Posts: 28132
198
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'd debate that RMI has one foot in the grave. It's not only useful in its own right, but the RMI-IOOP implementation is used with Enterprise Java Beans, and we've actually had some very active discussions recently on remoting EJBs, even though EJBs themselves are somewhat of a niche these days.

The biggest reason that DCOM or indeed any of the Microsoft-proprietary remoting interfaces isn't something to invest heavily in is that Windows is no longer a given once you leave your local LAN (and sometimes even within the LAN, thanks to Apple's recent growth).

To do remote method invocation of any kind where you don't have a strictly captive audience, you need 2 things:

1) A common protocol on both client and server

2) An Internet-approved infrastructure supporting that protocol.

DCOM fails #1, because it's Windows only. CORBA failed #2 because, while it was OS/machine independent, its lack of easily firewalled ports made it unsuitable for general Internet routine (attempts to change that were too little, too late). RMI-IOOP was an adaptation to allow RMI to be Internet-friendly, but Java RMI requires compatible versions of Java on both ends, so often fails #1. Even though Java, unlike .Net, is fully supported on virtually all modern OS platforms, it's not an essential OS service and usually has to be explicitly installed.

The primary agency for remote processing these days is AJAX and Web Services. The idea of "remote objects" and "remote method calls" over the Internet is deprecated because experience taught us that low-level interfacing was too much at the mercy of Internet latencies. So the generally-preferred alternative is to communicate with services, not functions.
 
Cob is sand, clay and sometimes straw. This tiny ad is made of cob:
We need your help - Coderanch server fundraiser
https://coderanch.com/wiki/782867/Coderanch-server-fundraiser
reply
    Bookmark Topic Watch Topic
  • New Topic