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

标签 sockets client-server communication

我最近决定承担一个相当大的软件工程项目,该项目将涉及开发基于客户端-服务器的应用程序。我的计划是开发尽可能多的客户端:包括原生 iPhone、Android 和黑莓应用程序以及基于 Web 的应用程序。

对于我的服务器,我计划使用 VPS(可能来自 slicehost.com)来运行带有 MySQL 数据库的 Linux 风格。我的第一个问题是我的客户端与服务器交互的策略应该是什么。我的想法是:

  • 与 PHP 脚本的基于 HTTP-POST 或 GET 的通信。
    这是我非常熟悉的——将信息从表单传递到 PHP 脚本,使用它并返回输出。我假设我想将输出作为某种基于 XML 或 JSON 的字符串返回给客户端。我还假设我想为想要与我的服务器交互的客户端创建一个定义良好的 API。
  • 与 PHP 脚本、Java 程序或 C++ 程序的基于套接字的通信
    这个我不太熟悉。我使用过有关创建脚本或创建套接字、监听连接并返回数据的简单应用程序的基本教程。我假设与基于 HTTP 的方法相比,这种方法的通信数据开销要少得多。我的梦想是使用大量并发客户端,所有客户端都与服务器/数据库一起工作。我不确定一个简单的基于 HTTP/PHP 脚本的通信设计是否可以有效地扩展以满足许多客户的需求。此外,我最终可能想要由各种服务器事件触发的向客户端推送服务器的功能。我也不确定哪种编程语言最适合这个。如果效率是一个大问题,我想 PHP 脚本可能不够高效?

  • 有没有一种普遍接受的方式来做到这一点?对我来说,这是试图弥合我目前的一些技能之间的差距。我在 PHP 和与 MySQl 数据库交互以提供动态网页方面有很多经验。我也有很多开发原生 iPhone 应用程序的经验(但是没有一个有任何重要的基于服务器的通信)。此外,我使用过 Java/C++,并且我开发了两种与 MySQL 交互的语言的应用程序。

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

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

    感谢您的建议! :)

    最佳答案

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

    为了低成本和可扩展性,您可能不会错用 Rackspace 或 Amazon 之类的云。但我才刚刚开始使用这些,我的服务器一直是 tektonic 的 VPS 直到现在。

    关于sockets - 用于移动客户端/服务器应用程序的基于套接字与 HTTP 的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334680/

    相关文章:

    python - 关于是否在 TCP 代理项目中使用 Twisted 的一般问题

    java - Netty - 客户端/服务器聊天

    ios - 不同组件如何在iOS的MVVM中通信

    c++ - 有没有与 C++/游戏开发人员交流的好地方?

    c++ - 使用 Websockets 在两个设备之间进行双向通信

    服务器地址为 FQDN 时无法打开 FTP 连接

    java - 让 PrintWriter 在 Servlet 执行后工作 - 当serversocket接受连接时由套接字客户端调用

    c++ - 端点、套接字、接受器之间的区别

    client-server - Unity3d 服务器自动发现,仅限局域网

    connect() 或accept() 的客户端服务器问题