为什么我宁愿使用本机dll或com服务器从C#调用Delphi代码?

Mar*_*ema 7 c# delphi com dll interop

我们即将编写一个C#Web服务,它将公开本机Delphi GUI应用程序中包含的功能.为什么我会选择将Delphi代码包装在本机dll中,为什么我要将它包装在COM服务器中?换句话说:当选择一个而不是另一个时,我需要考虑哪些因素?我对编码,调试,(自动)测试,部署(客户安装)和性能(开销?)方面的因素感兴趣.

Jen*_*off 3

与普通 DLL 相比,COM 增加了一些显着的优点:

  • 支持 OOP(类、接口)
  • 字符串 ( BSTR)、数组和对象的自动内存管理(通过接口)
  • 无需在 .NET 端使用平台调用

所以我会选择 COM。

要在 .NET 中使用 DLL 来使用 Delphi 类,您必须在 Delphi 端展平该类,然后在 .NET 端重新包装它,这有点难看。

Rudy 的许多关于 Delphi 和 C++ 代码的文章也适用于 C#:

http://rvelthuis.de/articles/articles-cppobjs.html

  • 普通 DLL 可以像 COM 服务器一样向客户端公开接口指针。 (2认同)