如何在这个系统内进行通信?

2024-03-10

我们打算设计一个具有三个“层”的系统。

  1. 总部,只有一台服务器
  2. 区域上有很多“节点”
  3. 使用 iPad 的用户。

HQ 与节点进行 2 路通信,节点与用户进行 2 路通信。用户从不与总部沟通,反之亦然。

权力机构规定总部的 Windows 应用程序(使用 Delphi)和用户 iPad 的本机桌面应用程序。他们对节点没有意见。

如果有令人信服的技术论点,我也许能够击败他们,从“法令”转向“更喜欢”Windows 程序(例如,使其基于浏览器)。节点没有 GUI,它们只是坐在那里扮演中间人。

这些东西通信的最佳方式是什么(SOAP/HTTP/AJAX/jQuery/home-brewed-protocol-on-top-of-TCP/其他东西?)最好端到端使用相同的协议,还是hqnode 和 nodeiPad 有不同的协议吗?

这两个接口的两端可能都希望启动一个事务(如果我推出自己的协议,我可以轻松地做到这一点),那么我应该使用推/拉/长轮询还是什么?

我希望这个描述是有意义的。如果没有,请提问。谢谢。


Update:
文件大小通常低于 1MB,不可能超过 10MB 甚至 5MB。在第一个文件被确认之前,不会发送第二个文件。

文件从总部“下坡”流向节点,再到 iPad。文件永远不会“上坡”流动,但会有一些小数据包(除了 ack 之外),这些数据包是由 iPad 上的用户操作发起的。这些将发送到本地节点,然后发送到总部。我们讨论的可能是

我想各个方向也会有低速率的一般控制和维护流量。


对于推/拉(发布/订阅或点对点通信),可以使用跨平台消息代理。我不确定是否有适用于 Microsoft Message Queue (MSMQ) 的 (iOS) 客户端库,但我也会评估开源解决方案,例如HornetQ http://www.hornetq.org/, Apache ActiveMQ http://activemq.apache.org/, Apollo http://activemq.apache.org/apollo/, OpenMQ http://mq.java.net/、阿帕奇QPid http://qpid.apache.org/ or RabbitMQ http://rabbitmq.com/.

所有这些解决方案都为分布式消息传递提供了可靠的基础,例如故障转移、集群、持久性、高性能和附加的许多客户端。在此基础设施上,可以交换任何内容类型(JSON、二进制、纯文本)的消息,并且顶部消息可以包含路由和优先级信息。它们还支持事务消息传递。

有Delphi和Free Pascal可用的客户端库 http://www.habarisoft.com/适用于许多企业优质开源消息传递产品。 (我是其中一些的作者,支持ActiveMQ、Apollo、HornetQ、OpenMQ和RabbitMQ)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在这个系统内进行通信? 的相关文章

  • 递归遍历树视图中的节点?

    我有一个树视图 其中已经填充了另一个过程中的文件 文件夹 我想按照从上到下的确切顺序逐项迭代树视图中的项目 但是 与普通列表不同 我不能仅使用简单的for对此的声明 我必须进入每个节点等 我该怎么做呢 我希望有一种方法可以在不运行递归过程的
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 在运行时创建 TQReport 元素

    在运行时创建 TQReport 元素 嗯 至少尝试一下 我不知道这份报告中应出现哪些标题或数据 我得到一个代表数据行和列的 TString 的 TList 我在组的带打印事件中植入 创建 指令 并在主数据行带的 OnNeedData 事件中
  • 如何在 Compojure 中使用 lib-noir 有状态会话

    我想我这里有一个相当简单的问题 但我已经看这个屏幕太久了 所以我正在尝试 但失败了 让有状态会话在 Compojure 中工作 refheap代码粘贴is here https www refheap com paste 11161 你可以
  • “192.168.1.1/21”是什么意思?

    当他们在 IP 地址后面写上一个斜杠和一个数字时 这意味着什么 斜杠后面的部分是要使用多少个子网掩码位 由于使用无类路由 您可以使用斜线而不是说 A 类或 B 类 例子 192 168 1 1 24 is 192 168 1 1 255 2
  • 如何仅在数据库、模式和表尚不存在时自动创建它们

    我想创建一个简单的网络应用程序 允许远程客户端跟踪发布请求中的某些内容 将所有跟踪保存在轻量级数据库中 返回 get 请求的所有跟踪 关于数据库 我想 将其位置放在我的 web 应用程序的属性文件中 并将此位置用于 persistence
  • 为什么NWPathMonitor状态总是满足?

    当没有连接时 我从 URL 会话中收到一条错误消息 指出请求超时 我正在使用网络协议来事先检查连接情况 但显然当我在内部调用它时这不起作用viewDidLoad static func startUpdateProcess let moni
  • 如何获取 Web 应用程序中所有 HttpSession 对象的列表?

    假设我有一个正在运行的基于 Java 的 Web 应用程序 其中有 0 个或多个有效值HttpSession与之相关的对象 我想要一种方法来访问当前有效列表HttpSession对象 我想我可以实施一个HttpSessionListener
  • 如何在 OSX 上的应用程序名称下创建子项菜单?

    如何在下面添加TMenuItemProject1以上Quit在下面的屏幕截图上 我创建了一个 TMenuBar 并选中了 UseOSMenu 属性 我添加的第一个 TMenuItem 是主栏中的第二个 TMenuItem 您可以通过将 II
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • Delphi TImageList 位图更改

    我正在使用 Delphi XE2 Update 3 Update 4 与我们的一些第 3 方组件不兼容 因此我们尚未更新 我在我的应用程序中使用 TImageList 我注意到很多时候当它从源视图切换到表单视图 F12 时 突然之前未修改的
  • Firemonkey 编辑/组合自动完成/打字时自动建议

    实施方式是什么Autocomplete or Autosuggest适用于 Windows Android 平台以及 MacOS 和 iOS 的 Delphi Firemonkey Example 当用户在 Google 搜索框中输入文本时
  • Delphi - 自XE8以来如何正确注册图形类?

    我正在编写一个 Delphi 包 它提供了一个新的自定义 TGraphic 对象 允许读取 VCL 组件 如 TImage 中的新图像格式 我最初使用 RAD Studio XE7 开发了这个包 并且运行良好 然而 我最近迁移到了较新的 R
  • 运行delphi客户端自动化程序后excel.exe保持加载状态的原因是什么?

    我编写了一个 Delphi 程序 该程序从单个 XLS 文件的多个不同电子表格中提取数据并将其合并到文本文件中以供以后处理 这是德尔福7console程序 最相关的代码片段的摘录将向您表明 显然 我的程序表现得相当好 或者至少达到了它需要的
  • 当显示对话框时淡出应用程序的所有其他窗口?

    如何在 Delphi 2009 中调暗 淡出应用程序的所有其他窗口 Form 有一个 AlphaBlend 属性 但它仅控制透明度级别 但如果我们能有这样的东西那就太好了 集中窗口 http www anappaday com downlo
  • 使用 OLE 和 Delphi 提高 Word 文档中搜索替换的性能

    经过一些实验 我最终得到了以下代码来在 MSWord 中执行搜索和替换 此代码在页眉和页脚中也能完美运行 包括首页或奇数 偶数页的页眉和 或页脚不同的情况 问题是我需要打电话MSWordSearchAndReplaceInAllDocume
  • 我的 RIA 应该使用什么架构模式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过 TCP/IP 同步两台 PC 之间的时间,无需服务器

    我有两台通过 LAN 连接的 PC 当用户更改一台机器上的时间 通过我的应用程序 时 我希望第二台机器上的时间也能更新 或者第二台机器可以轮询第一台机器 没有服务器 没有互联网 最好的方法是什么 操作系统 XP嵌入式 框架 Net 3 5
  • TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作

    Firemonkey 应用程序中的 TOpenDialog 似乎存在问题 该应用程序已针对 Mac Appstore 进行沙箱处理 我使用XE3 但它也存在于XE2中 我其实在这里找到了一份QC报告 但仍然没有解决 http qc emba
  • 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?

    我正在使用一个组合框 http docwiki embarcadero com Libraries en Vcl StdCtrls TComboBoxstyle 属性设置为的组件csOwnerDrawFixed 我实现了绘图项一切工作正常

随机推荐

  • Oh-my-posh 主题无法与 Powerline 字体和 ConEmu 一起正常工作

    I use PowerShell as my shell on Windows 7 I find that ConEmu is a really good terminal Since I am not on Windows 10 I ca
  • 如何使用 IntelliJ 设置 libgdx?

    我跟着this https github com libgdx libgdx wiki Gradle and Intellij IDEA教程 但似乎有点过时了 我不知道 不幸的是 我对 Java 的经验不是很丰富 但对 C Python 所
  • Javascript:如何检查 URL 是否包含单词

    我想检查浏览器中的 URL 是否包含单词 桌面 我从桌面启动 html 文件 它的网址是 file C Users Joe Desktop TestAlert html 但应该会出现一个警报 但这不起作用 这是我的代码 h1 Test001
  • 动态设置用户任务受让人

    我必须在 activiti 中创建需要以下用例的流程 1 表单有一个人员搜索字段 2 当有人填写表单并使用填充姓名的人员搜索字段完成任务时 我需要将分配的下一个任务的名称设置为可以对下一个任务执行操作的用户 如何使用 activiti 引擎
  • android中什么时候绘制视图?

    我想获取活动中视图的大小 但无法在任何活动生命周期回调 onCreate onStart onResume 中获取该信息 我假设这是因为视图尚未绘制 在什么时候绘制视图 是否有回调我可以放置我的代码以便获得视图的大小 findViewByI
  • Quarkus 替代 spring-data-jdbc

    默认DAO层 ORM框架中Quarkus is Panache 在 Hibernate 之上 这很奇怪 因为我没有找到任何可插入外部 L2 缓存实现 如 Redis 的内置集成 夸库斯被称为cloud native但在实际系统中 使用默认的
  • 如何使用 cURL 在 php 中发布表单数据?

    我有以下命令 它使用 form F 选项 我知道它正在工作 curl form file home USERNAME import csv https apiprovider com api v0 imports token KEY 我需要
  • mongodb聚合获取数组中负序的最大数量

    我需要通过聚合从数组中获取负序列的最大计数 示例文档 id 1 x 1 1 1 1 1 1 1 1 1 1 1 id 2 x 1 1 1 1 1 1 1 预期结果 id 1 x 4 id 2 x 2 请指教 您可以使用 reduce htt
  • 如何为 Cloudfront 上的静态托管网站的子目录设置默认根对象?

    如何为 Cloudfront 上静态托管网站上的子目录设置默认根对象 具体来说 我想www example com subdir index html每当用户请求时提供服务www example com subdir 请注意 这是为了交付保
  • quartz:xml 文件的文档?

    quartz xml 文件 特别是 jobs xml 的文档在哪里 我找到了javadoc http www quartz scheduler org docs api index html在线 但我似乎找不到如何编写 xml 文件的文档
  • 如何在 sed 中转义斜杠、双引号和单引号?

    据我所知 当您使用单引号时 里面的所有内容都被视为文字 我想要那个来代替我 但我也想找到一个带有单引号或双引号的字符串 例如 sed i s http www fubar com URL FUBAR g 我想用 URL FUBAR 替换 h
  • Oracle 查询 - 仅获取选择字段中的字符串

    也许这听起来有点疯狂 但我需要提出一个查询来仅检索字母数字字段中的字母 例如 TABLE 1234ADD 3901AC 1812OPA82711AUU 预期结果 ADD AC OPA AUU 谢谢你 看起来您只想删除数字 您可以使用REGE
  • 无法在 Android 上使用 AlarmManager 安排通知(使用 Qt)

    我正在 qt 5 5 中执行以下操作 项目 我正在尝试使用 android 中的警报管理器安排本地通知 这是安排通知的代码 class ScheduledNotifications static public int notificatio
  • 是否可以让 Visual Studio 或 Resharper 用不同的颜色突出显示枚举?

    我认为如果用与类属性不同的颜色突出显示枚举属性 代码会更具可读性 对于 VS2010 VS2013 VS2015 VS2017 VS2019 工具 gt 选项 gt 环境 gt 字体和颜色 显示文本编辑器的设置 显示项目 用户类型 枚举 更
  • 如何提取 Tidymodels 生成的 GLMNET 系数

    我估计了一个glmnet逻辑回归使用整洁的模型 但我无法弄清楚有两件事是密切相关的 整洁的模型 a 如何提取估计系数 b 保存估计模型以供将来生产使用 以下是伪模型的代码 我试过tidy coef and predict 但他们都失败了 任
  • javamail还提取封装消息的附件内容类型:message/rfc822

    我想提取封装在消息 InputStream 中的 eml 消息的所有附件 内容类型 message rfc822 InputStream is new FileInputStream Path MimeMessage mime new Mi
  • 双重修改后如何继续合并?

    我在用着git rebase i重写历史记录 在这种情况下 对早期提交的更改集进行小的更改 换句话说 A B C master gt A B C master I know C也在隐含地改变 但你明白了 这是我迄今为止的进展 git reb
  • Eclipse Neon.1 泛型编译错误:无法推断类型参数

    MWE https www wikiwand com en Minimal Working Example import java util Comparator import java util TreeMap import static
  • Ruby 的 watchr 在 Python 中相当于什么?

    我喜欢这个概念watchr https github com mynyml watchr 它监视文件系统并在发生变化时运行回调 有纯Python 的等价物吗 最好可以 pip 安装 你可能应该看看看门狗 http packages pyth
  • 如何在这个系统内进行通信?

    我们打算设计一个具有三个 层 的系统 总部 只有一台服务器 区域上有很多 节点 使用 iPad 的用户 HQ 与节点进行 2 路通信 节点与用户进行 2 路通信 用户从不与总部沟通 反之亦然 权力机构规定总部的 Windows 应用程序 使