我最近决定承担一个相当大的软件工程项目,其中涉及开发基于客户端-服务器的应用程序。我的计划是开发尽可能多的客户端:包括原生 iPhone、Android 和 Blackberry 应用程序以及基于 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)