移动应用程序的最佳远程处理技术是什么?

What are the best remoting technologies for mobile applications?

提问人:Alexandre Victoor 提问时间:9/17/2008 最后编辑:rptwsthiAlexandre Victoor 更新时间:4/30/2013 访问量:1616

问:

我有一个 java 后端,需要向在以下环境中运行的客户端公开服务:

  • J2ME的
  • Windows 移动
  • 苹果手机

我正在寻找适合每个平台的最佳工具。
我不会搜索一种在任何地方都有效的技术。
我需要一些适应低速互联网接入的“轻量级”东西。

现在我正在使用 SOAP。它很冗长,不容易在移动设备上解析。问题是我没有看到任何真正的替代方案。

有没有一种格式可以“开箱即用”地与这些平台之一一起使用?
我宁愿不使用臃肿的库,这会大大增加应用程序的下载时间。

每个人似乎都同意 JSON。有没有人实现过基于 Objective-C、J2ME、Windows Mobile 运行的 JSON 的解决方案?

注意:到目前为止,最好的解决方案似乎是黑森州。它在 Windows Mobile 和 Objective-C/iPhone 上运行良好。最大的问题是 J2ME。Hessian 的 J2ME 实现具有严重的局限性。它不支持复杂对象。我写了另一个关于它的问题。

如果您有任何想法,非常欢迎。

java iphone windows-mobile java-me 移动

评论


答:

9赞 emk 9/17/2008 #1

JSON相当紧凑,大多数框架都支持。您可以使用标准 REST 技术通过 HTTP 传输数据。

有适用于 JavaObjective C许多其他语言的 JSON 库(向下滚动)。在服务器端查找框架支持应该没有问题,因为 JSON 用于 Web 应用程序。

较旧的替代方案包括纯 XML 和 XML-RPC(类似于 SOAP,但要简单得多,并且具有适用于大多数语言的库)。

评论

0赞 Alexandre Victoor 9/17/2008
哼。。。有没有一种简单的方法可以用J2ME / Windows Mobile / Cocoa解析JSON?
0赞 emk 9/17/2008
那么,Java 和 Object C 版本可以在 J2ME 和 Cocoa 上运行。您在 Windows Mobile 中使用什么语言?JSON站点上有六个基于C++的框架,列在页面底部。
2赞 Russell Leggett 9/17/2008 #2

REST + XML或JSON将是一个不错的选择。它在 RIA 世界中取得了长足的进步,它的美妙之处在于它的简单性。它非常易于使用,无需任何特殊工具。SOAP有其优点,但它在具有强大工具支持的环境中效果最好。我从你的问题中猜到情况并非如此。

1赞 Aristotle Pagaltzis 9/17/2008 #3

普通的旧 XML(有点不幸地称为 POX)怎么样?

另一个非常有用的选项是 JSON。每种编程语言都有库。

可能,由于您在计算和网络资源方面都受到限制的环境中工作,并且使用静态类型语言,因此 Google 的协议缓冲区对您来说更可取。(只需忽略其中的 RPC crud;RPC 是一种有吸引力的麻烦,而不是一种有用的技术。

你的问题的问题在于,你没有提供很多关于这是什么样的数据以及你的用例是什么的背景信息,所以除了非常模糊的概括之外,很难说什么。

5赞 Tyson Weihs 9/18/2008 #4

黑森州。http://hessian.caucho.com。多种语言(包括 ObjC)的实现,超轻量级,并且不需要依赖 dom/xml 解析器即可从线模型转换为对象模型。一旦我们找到了 Hessian,我们就忘记了我们曾经了解过 XML。

评论

0赞 Alexandre Victoor 9/18/2008
我同意 hession 是一款很棒的产品。然而,它真的适用于这里吗?你有没有在J2ME环境中尝试过hession?iPhone 还是 Windows Mobile?
0赞 Alexandre Victoor 9/24/2008
感谢您的回复,我刚刚看到 ObjectiveC 中有 iPhone 的实现,并且 hessian 在线文档中提到了 j2me
2赞 Carlos Carrasco 9/19/2008 #5

附议 JSON。我将 Stringtree JSON 读取器移植到 J2ME。它是一个单类 JSON 读取器,可编译成一个 5KB 的类文件,并直接将 JSON 结构映射到本机 CLDC 类型,如 Hashtable 和 Vector。现在,我可以对桌面浏览器 AJAX 前端和 J2ME 客户端使用同一台服务器。