• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - IOS/Linux 应用程序中的通信架构选择?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:36:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个软件架构问题。 我必须设计一个 IOS 应用程序,它将与 Linux 应用程序通信以获取传感器的状态,并发布执行器命令。这两个应用程序在 IOS 设备和 Linux 计算机之间使用 Ad-Hoc WiFi 连接的本地网络中运行。

所以我必须在两个应用程序之间同步两个值(如图 1 所示)。在 Linux/Linux 系统中,我通过任何发布者/订阅者中间件解决了此类问题。 但是在 IOS/Linux 世界中我该如何解决这个问题

Figure 1 : my synchronization problem

其实Linux应用程序内嵌了一个异步TCP Server,而IOS应用程序是一个异步TCP客户端。两个应用程序都通过 TCP 套接字进行通信。我认为这种方法是一种低级方法,我想将通信层迁移到更高级别的基于服务的通信框架。

经过一些书目研究后,我发现了三种解决问题的方法:

  1. REST 方式:

    我可以创建一个 RESTful Web 服务,它对传感器状态进行建模,并且能够向执行器发送命令。 IOS 有一个 RESTful Web 服务客户端的实现,即“RESTKit”,我想我可以在服务器端使用 Apache/Axis2。

  2. RPC 方式:

    多亏了 libmaia,我可以在我的 Linux 计算机上创建一个 RPC 服务提供程序。在 IOS 端,我可以使用 xmlrpc ( https://github.com/eczarny/xmlrpc )。我的两个程序将通过下图描述的服务进行通信。

  3. ZeroConf 方式:

    我没有详细介绍这种方法,但我想我可以在 IOS 端使用 Bonjour,在 linux 端使用 AVAHI。然后像在双方的 RPC 中一样创建自定义服务。

The RPC Solution

关于这些方法的讨论:

REST 方式似乎不是好方法,因为:“REST 接口(interface)旨在高效地进行大粒度超媒体数据传输”(来自 Fielding 论文的第 5 章)。我的数据是非常精细的数据,因为我的命令只是一个 float ,而且我的传感器状态也是。

我认为 ZeroConf 方式和 RPC 方式没有太大区别。 ZeroConf“只”提供服务发现机制,我不需要这种机制,因为我的应用程序是一个刚性应用程序。双方都知道存在哪些服务。

所以我的问题是:

  • 基于 XML RPC 的方法是解决我的 iPhone 和计算机之间的变量同步问题的好选择吗?
  • 是否存在其他方法?



Best Answer-推荐答案


我实际上建议您为您的应用程序使用“tcp socket + protobuf”。

Socket 在将消息推送到您的 ios 应用程序方面非常有效,而 protobuf 可以节省您传递消息而不是字符字节的时间。您的另一个高级提案实际上引入了更多复杂性...

关于ios - IOS/Linux 应用程序中的通信架构选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606488/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap