.net COM与本机DLL

.net COM与本机DLL,.net,dll,com,.net,Dll,Com,与.NET中的本机DLL相比,使用COM库有哪些优势 我看到的一个原因是,我不需要为COM库定义方法签名(与p/Invoke的DllImport相比)。还有其他的吗?如果从互操作的角度来看,你指的是与COM DLL和本机(非托管)DLL的区别,我会说COM服务器(DLL/EXE)更自然地映射到.Net代码样式(我的意思是,它们看起来像.Net世界中的对象) 从开发人员的角度(需要决定何时使用COM或本机“原始”DLL)我想说COM允许您拥有更好的功能分组(接口)(当然COM提供了更多功能,例如属

与.NET中的本机DLL相比,使用COM库有哪些优势


我看到的一个原因是,我不需要为COM库定义方法签名(与p/Invoke的DllImport相比)。还有其他的吗?

如果从互操作的角度来看,你指的是与COM DLL和本机(非托管)DLL的区别,我会说COM服务器(DLL/EXE)更自然地映射到.Net代码样式(我的意思是,它们看起来像.Net世界中的对象)

从开发人员的角度(需要决定何时使用COM或本机“原始”DLL)我想说COM允许您拥有更好的功能分组(接口)(当然COM提供了更多功能,例如属性、事件等)

只有我的0,02;)


最好的

您可以在COM中创建对象模型,这在pinvoke中是不可能的。非常类似于.NET类,支持方法、属性和事件。一个很好的例子是Office互操作名称空间(如Microsoft.Office.interop.Excel),它是在Office端用纯COM实现的

请注意,像这样的高可用性COM库使用COM自动化,这是COM的一个子集,旨在使不同语言之间的互操作非常容易。但是它对您可以在方法声明中使用的类型有严格的限制


<>编写C++中的COM代码并不特别容易,尽管ATL和内置VisualStudio向导可以帮助很多。请考虑使用C++ + CLI语言。由于该语言中内置的互操作支持,操作起来更加容易

通常是因为它们已经存在。我不会将托管.NET程序集称为“本机”@MitchWheat,对我来说也是如此