寻找适用于Delphi的通信框架

8

我正在寻找一个Delphi通信框架,我们知道其他语言有很多通信框架,如WCF、ECF等,但到目前为止我还没有发现适用于Delphi的框架,知道的人可以给我提供一些想法吗?

以下是我的一些要求:

  • 构建应用程序(服务器或客户端)而不必关心两个端点之间如何进行通信。

    想象一下我们使用邮箱来交换消息,似乎通信是透明的。

  • 支持通信协议扩展。

    我们经常需要在两个设备之间交换消息,但通信协议并不是公共或通用的,因此我们需要扩展框架,以完全实现接收或发送消息的通信协议。

  • 支持异步和同步通信。

  • 支持传输协议扩展。

    传输协议可以通过winsocket、pipes、com、windows message、mailslot等方式实现。

在客户端应用程序中,我们可以编写以下代码片段:

var
  server: TDelphiCommunicationServer;
  session : ICommunicationSession;
  request, response: IMessage;
begin
  session := server.CreateSession('IP', Port);
  request := TLoginRequest.Create;
  session.SynSendMessage(request);
  session.WaitForMessage(response, INFINITE);
  .......
end;

在上述代码片段中,TLoginRequest已经实现了消息接口。

1
这是一个好问题,但Indy有什么问题吗?它与Delphi捆绑在一起,可以满足你的需求。 - Mawg says reinstate Monica
6个回答

14
也许RemObjects SDK是你所寻求的。它是一种类似于WCF的抽象通信框架,可以变更消息格式、通道类型等。它内置了不同的通道,如winsockets、pipes和Windows消息。

1
我可以证实。在使用Delphi进行通信时,RemObjects SDK是理想的框架。 - Sebastian P.R. Gingter
RemObjects SDK是否包含基本的“客户端”和“服务器”TCPIP组件,以便您可以继承它们来编写自己的自定义TCPIP协议?我知道有关远程框架的信息。但我想知道它是否具有与Indy、ICS和RTC-SDK类似的功能。 - Warren P
可以在RemObjects SDK中实现称为“通道”的自定义协议。您也可以在这里查看:http://wiki.remobjects.com/wiki/Channels。 - Sebastian P.R. Gingter

4

看看Delphi自带的Indy,它是一个成熟的通信框架,在许多应用程序中都有使用。


Indy对于OP所说的“我们经常需要在两个设备之间交换消息,但通信协议不是公共或通用的”这一部分来说是一个不错的选择。您也可以尝试Francois Piette的ICS套件。它非常类似于Indy,但我发现它使用起来更简单。 - Warren P
Indy/ICS更注重TCP/IP协议栈,但我认为Ryan想要在更高层次上进行开发(WCF等是建立在HTTP之上的)。 - Lex Li

1
为了在我们的应用程序中编写自定义TCP IP客户端和服务器组件,我们使用Francois Piette的Internet Component Suite和Real Thin Client SDK(RTC SDK)在各种项目中。其他人使用Indy开发自定义TCP/IP协议客户端/服务器组件。
为了构建一个API,然后可以轻松地进行“远程调用”,您可以使用DCOM(不推荐!)或者像RemObjects SDK这样的“远程调用工具包”(推荐!)。

0

0

对于高级消息中间件Habari Client libraries适用于Delphi和Free Pascal。它们支持点对点和发布/订阅通信模型,与Internet Direct(Indy)和Synapse网络库一起工作,并支持序列化对象(JSON或XML)的交换。(我是这些库的开发人员)。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接