如何在c#和Delphi应用程序之间进行通信?

时间:2011-04-14 14:24:43

标签: c# delphi communication

我需要将我的应用程序(Delphi + MS SQL Server:D,从现在开始)与另一个应用程序(c#+ SQL Server:C从现在开始)连接起来。

C具有简约的Windows窗体用户界面,它所做的大工作是连接到发送和接收数据的PDA。

所以他们的想法是删除了C用户界面的UI,他们只保留了与DB和PDA通信所需的代码。

所以我需要C可以和D对话,反之亦然。

D到C:所以在某些事件上(比如TButton.OnPress)D会向C发送一些数据。所以我需要调用C公开的方法。

C到D:D需要对C执行的某些操作做出反应。所以C会调用D公开的一些方法。即使在第一阶段,D也只是“暴露存储过程”。

我从未做过这样的事情。该怎么办? D目前是单个exe(win32)。

你建议使用哪种技术?

10 个答案:

答案 0 :(得分:2)

如果要删除C中的用户界面,那么我建议将C包装在一个可以从Delphi透明使用的COM对象中。

答案 1 :(得分:2)

有很多选择。套接字可能是最强大的,但如果两个应用程序在同一台机器上运行,您可以使用窗口消息(WndProc和朋友)或命名管道。

答案 2 :(得分:1)

我认为你可以使用套接字。使用您自己的协议或者您可以使用webservices,但后者非常复杂。 Delphi有WSDL导入器,C ++有gSOAP库。

答案 3 :(得分:1)

RemObjects SDK本身支持Delphi和.NET程序。它是一个较低级别的附加层,但可能会使事情变得更容易。

答案 4 :(得分:1)

如果它们都使用相同的数据库,则可以将它用作它们之间的管道。

在一个应用程序中写入特定的表,在另一个应用程序中通过定期轮询来“监听”该表,删除已处理的任何“消息”。

这是一般性的想法,好处是你现在可以不使用任何库来实现。

答案 5 :(得分:1)

我正在做类似的应用程序,我使用现有的Delphi应用程序与我的新.NET应用程序进行通信。我将应用程序包装到DLL中,并使用公开的函数从.NET调用以及使用Callback proc将表单.NET与Delphi进行通信。

答案 6 :(得分:0)

作为我可以提供的MsgConnect选项之一,这是一个轻量级的面向消息的中间件,可以轻松解决您的问题。 MsgConnect适用于Delphi和C#。上面提到的RemObjects SDK也是一个很棒的产品,虽然对你的简单任务来说可能有点过分。

答案 7 :(得分:0)

您可以使用ZeroMQ。它是一个免费的面向消息的堆栈。

答案 8 :(得分:0)

我的框架可以在Delphi和Visual Studio下运行,因此允许跨原始TCP套接字在Win32和.NET应用程序之间进行通信。

答案 9 :(得分:0)

您可以将C#代码转换为DLL(类库)。设置选项“使组件COM-Visible”。创建新的certyficate(如果需要)并签署您的代码。

在Windows中注册您的C#DLL:“RegAsm -tlb -codebase YourLibrary.dll”。

在Delphi中导入您的库(Component - > Import Component,选择“Type library”,选择您的库,“Create Unit”)。

在Delphi中使用C#库的方式与使用COM对象(例如OLE自动化或ActiveX)相同。

您可以创建用于Delphi和C#之间通信的接口。如果你这样做,那么你可以轻松实现Delphi中的代码和C#中的代码之间的双向通信。

相关问题