【问题标题】:.NET remoting and Delphi win32.NET 远程处理和 Delphi win32
【发布时间】:2010-10-22 00:17:38
【问题描述】:

在 Delphi win32 应用程序中使用 .NET Remoting 接口是否可能(并且可行)?

我需要 .NET 应用程序和 Delphi win32 应用程序之间的通信,因此 .NET 远程处理对于管道的另一端来说是本机的。

对于没有第三方库的两端,是否有任何其他解决方案,尽可能接近原生?应用程序将在单独的 Windows 机器上运行。

【问题讨论】:

    标签: .net delphi winapi remoting ipc


    【解决方案1】:

    Delphi win23 和 .Net 都对 COM 对象有很好的支持。这是一个值得一试的选择。

    【讨论】:

    • 我觉得处理COM和DCOM可能有点乱,真的值得吗?
    • 哎呀,请不要把COM和DCOM搞混了! (和 ActiveX) 是的,DCOM 可能看起来有点乱,COM+ 被提出来解决它的一些问题。但是,仅限于类型库和 IUnknown 继承的基本使用的 COM 本身是非常干净和快速的。特别是如果您将其视为预定义、共享和使用 DLL 导出的“相对安全”的方式。
    • 好的,但是当我们谈论计算机之间的通信时,“纯” COM 没有帮助?
    • 你把我带到了那里。尽管如此,如果您在单台计算机上获得了一个使用 COM 的混合 win32-dotnet 解决方案(尽可能干净),您会发现将 COM 库添加到 COM+ 应用程序并使用应用程序代理是一个非常干净的远程设置。 (以我的拙见)
    【解决方案2】:

    从非.NET Delphi exe 中使用远程处理会非常痛苦。如果不知道 .NET 应用程序正在运行,那么 COM 互操作将是最简单的答案,因为存在用于激活 COM 的进程等。存在不同机器的事实使事情变得复杂,但 DCOM 存在并且有效(我没有t 使用 .NET 和 Delphi 端点对其进行了测试)。

    如果 .NET 应用程序已知正在运行(可能作为服务),您可以考虑一系列替代方案:

    • 套接字
    • http(可能是 POX over http,在 .NET 服务器上使用 HttpListener
    • SOAP(可能在 .NET 端通过 ServiceHost 使用 WCF)
    • 基于文件(大概是网络共享)

    【讨论】:

    • 两个应用程序都应该一直在运行,所以这不是问题。基于文件的进程间通信真的是一个不错的选择吗?
    • 嗯,它是 an 选项 - 但它可能比 http 之类的问题更多,尤其是周围的权限(甚至不要通过防火墙尝试... )
    【解决方案3】:

    因为它们运行在不同的机器上,你应该使用网络通信。 SOAP 是一种通用的通信格式,可以轻松地为 .Net 和 Delphi win32 制作。但是 SOAP = XML = 慢。

    对于我的公司,我们使用 RemObjects SDK 远程处理框架: http://www.remobjectssdk.com/

    制作界面非常容易,为 .Net/Delphi/Php/c++/whatever 生成代码,也支持 SOAP,但我们使用二进制格式来提高速度(!)。

    【讨论】:

    • 实际上我们在 Delphi 端使用了 RemObjects,所以这当然是一种选择。但是 RO 在这两个世界中都是第三方选项,因此它增加了系统的一些(不必要的?)复杂性。
    • 关于速度的说法,在这种情况下这不是问题。
    【解决方案4】:

    到目前为止,对我来说与任何平台进行通信的最佳方式是通过套接字。 现在,如果它是内部的,我更喜欢 PIPES 或 MAPPED 内存。

    【讨论】:

      【解决方案5】:

      我找到了有关此主题的最新文章并提供了解决方案: http://www.codeproject.com/Articles/852750/NET-and-Delphi-Inter-Process-Communication-via-Nam

      【讨论】:

      • 虽然此链接可能会回答问题,但最好包含答案here 的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2013-01-09
      • 2023-04-08
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多