<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt" -->

---
title: DCOM, MTS, COM+, and MSMQ — The Cost of Pretending
description: DCOM, MTS, COM+, and MSMQ all tried to tame the complexity of distributed computing, but none of them eliminated it. DCOM extended COM across machines so a...
canonical: https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: DCOM, MTS, COM+, and MSMQ — The Cost of Pretending | daily.dev
og:description: DCOM, MTS, COM+, and MSMQ all tried to tame the complexity of distributed computing, but none of them eliminated it. DCOM extended COM across machines so a...
og:url: https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt
og:image: https://api.daily.dev/og/posts/CQrXxU6KT.png
og:image:alt: DCOM, MTS, COM+, and MSMQ — The Cost of Pretending
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# DCOM, MTS, COM+, and MSMQ — The Cost of Pretending

**[We Are .NET](https://daily.dev/sources/wearedotnet)** · 12 min read · 0 upvotes · 0 comments

## Summary

DCOM, MTS, COM+, and MSMQ all tried to tame the complexity of distributed computing, but none of them eliminated it. DCOM extended COM across machines so a remote call would feel local, but that illusion pushed real complexity into dcomcnfg's security and identity settings. MTS introduced a component host managing transactions via SetComplete and SetAbort, later absorbed into COM+ on Windows 2000. MSMQ instead admitted the network was unreliable, offering durable asynchronous queues instead of fake synchronous calls. Enterprise firewalls, hostile to DCOM's dynamic RPC ports, eventually forced the industry to confront what these abstractions had been hiding.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.binaryintellect.net/articles/52d70b47-3e1e-454b-b74c-2c2ed7d24f3d.aspx>

## Questions this post answers

### What is the difference between DCOM and MSMQ in how they handle network unreliability?

DCOM tries to make a remote component call behave like a local one, hiding network issues behind the method call syntax, while MSMQ does not pretend the network is reliable and instead offers a queue. With MSMQ, a sender puts a message in a durable queue and the receiver processes it when able, without waiting for an immediate synchronous result.

_daily.dev surfaces distributed systems history for engineers weighing sync versus async communication patterns today._

### What did Microsoft Transaction Server (MTS) do for COM components?

MTS acted as a component host, managing server-side concerns like transactions so components didn't have to handle them entirely on their own. Components were organized into packages and could declare transactional requirements, calling SetComplete to signal success or SetAbort to signal failure, while MTS coordinated with the Distributed Transaction Coordinator across resources.

_developers tracing the roots of modern transaction management can follow this lineage on daily.dev._

### Why did DCOM struggle in enterprise environments with firewalls?

DCOM's use of RPC, dynamic endpoint allocation, and distributed activation made firewall configuration difficult to predict and maintain. Firewalls cared about ports, not location transparency, and enterprise packet filters and access control lists effectively became architects limiting how DCOM components could communicate across network segments.

_anyone debugging legacy distributed architecture issues can dig into this history via daily.dev._

## Similar posts on daily.dev

- [Contracts, Identity, Promises](https://daily.dev/posts/contracts-identity-promises-ealf5wclb) · We Are .NET · 0 upvotes · 0 comments
- [Using DCOM objects for remote command execution](https://daily.dev/posts/using-dcom-objects-for-remote-command-execution-tiooqzacf) · Securelist · 0 upvotes · 0 comments
- [The MCP debate has a context problem](https://daily.dev/posts/the-mcp-debate-has-a-context-problem-0pzz9axsf) · The New Stack · 0 upvotes · 0 comments
- [Enterprise connectivity has moved from utility to strategy](https://daily.dev/posts/enterprise-connectivity-has-moved-from-utility-to-strategy-zz5xmvjuw) · TechCentral · 0 upvotes · 0 comments
- [MCP standardized tools. Now we need the infrastructure around them.](https://daily.dev/posts/mcp-standardized-tools-now-we-need-the-infrastructure-around-them--qv8rzplng) · Stack Overflow Blog · 0 upvotes · 0 comments

---

Tags: [#windows](https://daily.dev/tags/windows), [#distributed-systems](https://daily.dev/tags/distributed-systems)

[View this post on daily.dev](https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"DCOM, MTS, COM+, and MSMQ — The Cost of Pretending","url":"https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt"},"datePublished":"2026-10-28T12:39:50.395Z","dateModified":"2026-10-28T15:02:10.173Z","description":"DCOM, MTS, COM+, and MSMQ all tried to tame the complexity of distributed computing, but none of them eliminated it. DCOM extended COM across machines so a...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/999d5f90f6e705e73a42d57ede02fa72?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/999d5f90f6e705e73a42d57ede02fa72?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"We Are .NET","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"We Are .NET","logo":"https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet","url":"https://daily.dev/sources/wearedotnet"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"windows,distributed-systems","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"We Are .NET","item":"https://daily.dev/sources/wearedotnet"},{"@type":"ListItem","position":3,"name":"DCOM, MTS, COM+, and MSMQ — The Cost of Pretending"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/dcom-mts-com-and-msmq-the-cost-of-pretending-cqrxxu6kt#faq","mainEntity":[{"@type":"Question","name":"What is the difference between DCOM and MSMQ in how they handle network unreliability?","acceptedAnswer":{"@type":"Answer","text":"DCOM tries to make a remote component call behave like a local one, hiding network issues behind the method call syntax, while MSMQ does not pretend the network is reliable and instead offers a queue. With MSMQ, a sender puts a message in a durable queue and the receiver processes it when able, without waiting for an immediate synchronous result. daily.dev surfaces distributed systems history for engineers weighing sync versus async communication patterns today."}},{"@type":"Question","name":"What did Microsoft Transaction Server (MTS) do for COM components?","acceptedAnswer":{"@type":"Answer","text":"MTS acted as a component host, managing server-side concerns like transactions so components didn't have to handle them entirely on their own. Components were organized into packages and could declare transactional requirements, calling SetComplete to signal success or SetAbort to signal failure, while MTS coordinated with the Distributed Transaction Coordinator across resources. developers tracing the roots of modern transaction management can follow this lineage on daily.dev."}},{"@type":"Question","name":"Why did DCOM struggle in enterprise environments with firewalls?","acceptedAnswer":{"@type":"Answer","text":"DCOM's use of RPC, dynamic endpoint allocation, and distributed activation made firewall configuration difficult to predict and maintain. Firewalls cared about ports, not location transparency, and enterprise packet filters and access control lists effectively became architects limiting how DCOM components could communicate across network segments. anyone debugging legacy distributed architecture issues can dig into this history via daily.dev."}}]}
```

