通过 LAN 上的 PC 在两个应用程序之间交换数据
题
我需要实现两个相互交换数据的应用程序。这两个应用程序将在属于 LAN 的不同 PC 上运行。
我们如何在 Delphi 中做到这一点?
是否有任何免费组件可以让跨 PC 的应用程序之间轻松交换数据?
其他提示
在你选择的技术中,用户需要根据其吞吐量,粒度,延迟和临界表征通信。
吞吐量 - 如何每单位时间的数据量将需要移动?可能的值的范围极广,最低速率和最高速率应用的共同点几乎没有。
粒度 - 有多大的消息?多少数据并接收应用程序需要,才可以使用该消息?
延迟 - 当一个aplication发送消息时,多快必须在其他应用看到吗?你想接收的应用程序发送应用程序的反应速度如何呢?
临界 - 多久可以将接收到的消息被无人看管前它由以后消息溢出? (这通常并不重要,除非吞吐量高,消息存储是有限的。)
一旦你已经回答了这些问题,就可以开始问关于你的具体情况最好的技术。
-Al。
我曾经使用邮筒,如果我需要在通过网络在时间(“广播”)与一个以上的PC进行通信,虽然有需要提醒的是邮筒没有保障。
有关1对1,命名管道是做这样的事情的一个Windows方式,则基本上打开的通信信道2 PC之间,然后将消息写入到管道。不直截了当地开始,但非常可靠的东西,如Windows服务的推荐方式。
MS提供命名管道作为与SQL服务器(除TCP / IP以外)进行通信的另一种方法。
但正如布鲁斯说,TCP / IP是标准的,独立于平台,并且非常可靠的。
DCOM 曾经是一种很好的进程间通信方法。这也是德尔菲的强项之一。今天我会 强烈地 建议不要使用它。
根据您项目的性质,我会选择
- 使用 SQL 服务器
- 套接字通信
查看使用“远程过程调用”类型接口的解决方案。我用 RemObjects SDK 对于这类事情,但是有开源版本 真正的瘦客户端 这样也可以。
这两种方法都允许您创建一个对于大多数代码来说都是“透明”的连接,您只需调用一个接口即可通过线路发送数据并获取结果。然后,您可以按照平常的方式进行编程,而忘记套接字等详细信息。
这是的那些情况下,其中一个是不是真的有一个“最好的”回答,因为几乎任何已经讨论可用于两个应用程序之间通信的准确的技术。该方法的选择使用才会真正降下来与您的沟通的关键性质,以及有多少数据必须从一个工作站转移到另一个地方。
如果您的沟通不是时间敏感的或关键的,那么数据库或文件的定期的简单调查可能就足够了。如果你的沟通是非常关键的时间敏感的然后将在每个客户端TCPIP服务器可能是值得追求的。如果只是对时间敏感然后邮筒也是一个不错的选择,如果重要,但不是时间敏感然后命名管道。
我使用了印库的组播组分(IdIPMCastClient /服务器),用于这种类型的事情很多次。这些应用只是发送XML对方。快速和容易以最小的连接要求。
也许最简单的方法是,读出和写入文件(或可能每一个方向文件)。它还具有的优点是很容易模仿和跟踪。这不是最快的选项,虽然(它肯定听起来很蹩脚的;-))。
一个可能性是在网络上“共享”的对象。
有可能的客户机 - 服务器ORM像我们的小mORMot 。
此程序源码libraires从Delphi 6的工作到XE2,并使用JSON用于传输。还有包括一些安全功能(涉及的RESTful认证机构),并且可以使用任何数据库 - 或没有数据库在所有
特别参见href="http://synopse.info/fossil/dir?name=SQLite3/Samples" rel="nofollow">第一四个样品提供中
对于 Delphi 应用程序集成, 面向消息的中间件 可能是一个选择。消息代理提供有保证的交付、负载平衡、不同的通信模型,并且它们可以跨平台和跨语言工作。开源消息消息代理包括:
(免责声明 - 我是这些服务器的 Delphi / Free Pascal 客户端库的作者)