基于套接字与HTTP的通信,用于移动客户端/服务器应用程序

时间:2011-03-17 03:52:46

标签: sockets client-server communication

我最近决定参与一个非常重要的软件工程项目,该项目将涉及开发基于客户端服务器的应用程序。我的计划是开发尽可能多的客户端:包括原生iPhone,Android和Blackberry应用程序以及基于Web的应用程序。

对于我的服务器,我打算使用运行Linux数据库的VPS(可能来自slicehost.com)。我的第一个问题是客户端与服务器接口的策略应该是什么。我的想法是:

  1. 使用PHP脚本进行HTTP-POST或基于GET的通信。
    这是我非常熟悉的 - 从表单传递信息到PHP脚本,使用它并返回输出。我假设我想要将输出作为某种基于XML或JSON的字符串返回给客户端。我还假设我想为想要与我的服务器连接的客户创建一个定义良好的API。

  2. 基于套接字的与PHP脚本,Java程序或C ++程序的通信
    这个我不太熟悉。我使用过基本教程来创建脚本或创建套接字的简单应用程序,监听连接并返回数据。我假设使用此方法的通信数据开销远远少于基于HTTP的方法。我的梦想是有大量并发客户端在使用,所有客户端都在使用服务器/数据库。我不确定基于HTTP / PHP脚本的简单通信设计是否可以有效扩展以满足许多客户的需求。此外,我最终可能希望将服务器推送功能发送给由各种服务器事件触发的客户端。我也不确定哪种编程语言最适合这种情况。如果效率是一个大问题,我认为PHP脚本可能效率不高?

  3. 是否有一种普遍接受的方法?对我而言,这是尝试弥合我目前的一些技能之间的差距。我在PHP方面有很多经验,并且与MySQl数据库连接以提供动态网页。我也有很多开发本机iPhone应用程序的经验(但是没有任何基于服务器的重要通信)。我也使用过Java / C ++,并且开发了两种与MySQL接口的语言的应用程序。

    我预计我的客户端不会向/从服务器发送/接收大量数据。与给定客户端事件的一组字符串相同的东西。

    另一个问题:使用VPS - 好主意?我显然不想支付一个完全专用的服务器(slicehost提供的VPS起价为每月20美元左右),而且我假设一个VPS能够满足一些初始客户端的要求。随着越来越多的用户开始与我的服务器接口,我假设它可以迁移到越来越大的“切片”,并可能在必要时最终转移到完全专用的服务器。

    感谢您的建议! :)

1 个答案:

答案 0 :(得分:5)

我想说的是简单的HTTP,至少在你的需求超出它的能力之前。 (应用程序需要的状态越多,HTTP适合的越少)。

对于低成本和可扩展性,您可能不会出现像Rackspace或Amazon这样的云。但我刚刚开始使用这些服务器,我的服务器一直是tektonic的VPS,直到现在。