在.NET中是否有可行的DCOM对应物?

在.NET中是否有可行的DCOM对应物?,.net,wcf,com,dcom,.net,Wcf,Com,Dcom,我知道.net有WCF,我相信它在代号为Indigo(?)时被吹捧为COM的替代品,但它真的适合在.net应用程序中使用,提供与C++/DCOM应用程序相同的功能吗 在客户机-服务器系统上安装DCOM应用程序可能会很痛苦,但我认为与其他选项(如web服务)相比,它是相当有效的,因为web服务还有其他问题 那么,WCF是(D)COM的真正继承者,还是有不同的目标 编辑:我专门谈论分布式应用程序和远程控制-例如,服务器可以在工作站上启动对话框,工作站可以调用服务器上的方法发送响应,等等。我相应地在标

我知道.net有WCF,我相信它在代号为Indigo(?)时被吹捧为COM的替代品,但它真的适合在.net应用程序中使用,提供与C++/DCOM应用程序相同的功能吗

在客户机-服务器系统上安装DCOM应用程序可能会很痛苦,但我认为与其他选项(如web服务)相比,它是相当有效的,因为web服务还有其他问题

那么,WCF是(D)COM的真正继承者,还是有不同的目标


编辑:我专门谈论分布式应用程序和远程控制-例如,服务器可以在工作站上启动对话框,工作站可以调用服务器上的方法发送响应,等等。我相应地在标题中添加了“D”。

WCF从来就不是COM的替代品。NET框架本身就是COM的替代品


WCF旨在提供一个通用接口,用于编写客户端/服务器应用程序,如SOAP web服务和远程处理应用程序,而不依赖于所使用的协议/传输/序列化机制。

通过选择正确的行为/序列化/协议,您可以非常有效地使用WCF。
实际上,将COM/DCOM与网络结合使用会降低今天从网络到COM的b/c传递速度很慢。

我不知道有任何官方指南指定DCOM的继任者,但.net有两个框架可以取代DCOM的使用。它们是WCF和.NET远程处理

WCF可以替代DCOM等提供的所有传输功能。如果您无法使用.NET 3.0或更新版本;您只有.NET远程处理可用。NET中的两个框架都允许您发出调用,并将执行控制权转移到其他线程、进程和计算机中的主机。远程处理很可能是DCOM的替代品,它还可以处理几乎所有的传输功能,但采用率并没有那么高

一般来说,大多数人现在更喜欢WCF,因为一切都定义得很好,并且有大量的特性来控制通过WCF进行的调用。常规的.NET远程处理现在有些被废弃了,因为您需要在网络的两端管理类型信息,与DCOM相比,这并不是一个显著的负担改进。此外,它没有共享内存传输,因此线程/进程内通信仅使用基于套接字的通信进行设置,并受到环回套接字性能的限制

关于您提到的一般场景,几乎任何应用程序都可以通过WCF或远程处理进行访问,以便连接到其他应用程序。大多数棘手的问题都涉及到与web应用程序中托管组件的通信。一般来说,这通常不会完成-调用是从它们发出的,但很少在http/https web活动之外被接受。安全性和身份管理也可能很棘手,但与DCOM基于配置的设置相比有了很大改进


总的来说,WCF和.NET远程处理都明显优于DCOM。它们更易于设置和维护,并且不像在DCOM下使用的COM组件那样有注册问题。此外,您还可以获得一些固有的好处,比如.NET中的故障条件的自然库异常;而在DCOM中,您必须担心如何优雅地处理应用程序代码中的传递失败和超时。仅此一点就可以显著减少为处理此类情况而必须编写的代码量,对于异步调用,您还可以随时退出长操作。要在DCOM中做好这一点非常棘手。

每种技术都有自己的优势。WCF不是COM的替代品

场景中使用COM的位置:

我们可以利用.Net应用程序中的现有技术。
原因:许多组织(银行/电信/医疗系统)可能会在自动化方面投入大量资金。他们喜欢使用最新的技术进行迁移(不是所有的业务流程,它应该是流程的一部分)。因此,我们可以选择最新的技术。但是,它们遵循现有代码的业务流程(代码可以是任何东西,COM…)。所以,它将减少开发成本、时间、调试等诸多因素。每种技术都应该提供向后兼容性,否则它将无法适应这个竞争激烈的世界。这就是.Net引入互操作性的原因。(RCW、CCW等)。

可能会解释您的主要用例。对于特定场景,回答您的问题会更容易。我不知道如何提供答案,但DCOM提供了一种跨系统执行COM(接口方法)的方法。WCF是一种通信方式,但我不清楚它是否包括客户端执行接口方法的方式。WCF没有类型库,对吗?一个好的答案可以解释接口和类型库的WCF等价物。+1正确-每个.NET类都是COM组件,基本上你说的是COM,但问题是关于DCOM的。DCOM是由系统提供的COM+系统间通信。