In the world I'm living in, corporate IT, there's a ton of COM and SOAP. I don't see COM running across the Internet (other than thru VPN tunnels), but I see a ton of SOAP for interop with third-party interfaces. Pretty much any of the "enterprise" Java-based apps I work adjacent to have SOAP-based interfaces.

COM is alive and well in the LAN space, too. I see it in industrial automation under the guise of OPC, fairly frequently, too.

Also, providing and consuming a basic COM interface is quite easy with Miscrosoft's development tools. This is not true in other ecosystems.

So COM did not fail as a standard, it just failed to conquer the whole world. It's doing fine though in its natural habitat.

I have a different experience writing and using COM with C++. I remember ugliness around reference counting, dealing with the literally dozen of methods of defining a string and having to coerce them into BSTRs and having to deal with variant types that were a weird C union type.

I remember going to a class at Embedded Systems Conference that showed how to implement a COM interface in assembly on a microcontroller. Was cool, but I had no use for that, although we were using COM/DCOM at the higher levels.

That sounds cool, though. Seeing protocols/formats/algorithms laid bare in assembly code makes them comprehensible in a way that I don't get from high level language implementations, where I have to either be content in just hand-waving away understand any "sugar" the language itself implements, or also having to understand the language's contrivances on top of whatever the core thing is I'm trying to understand.

Thank you for sharing your experience. I am just now realizing that just because I don't hear about SOAP very often doesn't mean it isn't still around.