【发布时间】:2013-08-09 02:01:20
【问题描述】:
现有软件使用 C++ 将通信层编码为单个对象。 Microsoft COM 对象用于将通信对象连接到 UI 的上层。它使用 COM 对象公开接口。
新软件需要我创建一个完全不同于现有通信对象的通信对象。我可以选择在 C# 中将其编码为一个单独的类,或者创建另一个 COM 对象并重新使用一些 C++ 代码来创建对象。
作为一名 C 本地人,我想先听听您的建议,然后再决定如何进行未来的软件更改。我觉得如果我创建另一个 COM 对象,似乎没有必要,因为上层的 C# 类可以处理它。但后来我可以重用一些代码。
谢谢!
【问题讨论】:
-
不要再使用 COM。我不知道您在寻找什么,但 COM 仅适用于互操作场景 请通过提供示例
use case或usage scenario或其他内容进一步澄清一下。 -
所以现有的 COM 是我们移植过来的遗留软件。新软件使用 C#(UI 层),通信层使用 C++。因此,选择 COM 是因为我们不想将图层重新写入 C#。现在我们需要使用另一个通信协议添加到通信层,我想知道是将它添加为另一个 COM 还是简单地将它放在 C# 层中。 C#(UI 层)将同时使用这两种协议与两个外部设备进行通信。
-
让我再澄清一点,目前总共有 3 层,UI、App 和 Communication。应用程序用 C# 编码,通信层用 C++ 编码。通信层是 C# 使用的 COM dll。新软件需要添加与当前通信层完全不同的附加功能。我正在讨论该怎么做..
-
我的观点仍然成立。新代码应该用 C# 编写,除非
lower level代码(例如设备驱动程序等)必须用 C++ 编写。 -
这里没有技术障碍,COM 是纯基于接口的对象模型。您可以对 COM 服务器进行任何实现,只要它实现相同的接口即可。语言也无关紧要,在 C++ 或 C# 中可以正常工作。唯一的细节是客户端传递给 CoCreateInstance() 的 {guid},它确定了它想要使用的特定 COM 服务器。
标签: c# c++ architecture com