我最近决定着手开展一个庞大的软件工程项目,涉及开发基于客户端-服务器的应用程序。我的计划是尽可能地开发多个客户端,包括本机的iPhone、Android和Blackberry应用程序以及基于Web的应用程序。
对于我的服务器,我计划使用运行MySQL数据库的Linux系统的VPS(可能来自slicehost.com)。我的第一个问题是客户端与服务器接口的策略是什么。我的想法有:
基于HTTP-POST或GET的与PHP脚本通信。
这是我非常熟悉的领域——从表单中传递信息到PHP脚本中,处理它并返回输出。我假设我希望将输出返回给客户端作为某种基于XML或JSON的字符串。我还假设我希望为希望与我的服务器交互的客户端创建一个定义良好的API。基于套接字的与PHP脚本、Java程序或C++程序通信
我对此不太熟悉。我曾经使用过创建套接字、监听连接并返回数据的基本教程。我假设在这种方法中,通信数据开销要比基于HTTP的方法少得多。我的梦想是有很多并发客户端在使用,都与服务器/数据库交互。我不确定简单的基于HTTP/PHP脚本的通信设计能否有效地扩展以满足许多客户端的需求。此外,我可能最终需要由各种服务器事件触发的服务器推送到客户端的功能。我也不确定哪种编程语言最适合这种情况。如果效率是一个重要问题,我想PHP脚本可能不够高效?
是否有一种通常被接受的方法来处理这个问题?对我来说,这是试图弥合我的当前技能之间差距的尝试。我有很多PHP和与MySQL数据库交互以提供动态Web页面的经验。我还有很多开发本机iPhone应用程序的经验(但没有任何重要的基于服务器的通信)。此外,我曾经使用过Java/C++,并且开发了两种语言的应用程序,它们都与MySQL交互。
我预计我的客户不会向/从服务器发送/接收大量数据。与给定客户端事件相当的一组字符串。
另一个问题:使用VPS-好主意吗?我显然不想为完整专用服务器付费(slicehost提供从大约20美元/月开始的VPS),我认为VPS将能够满足几个最初客户的要求。随着越来越多的用户开始与我的服务器进行交互,我认为可以迁移到更大的“片”并可能最终移动到完整的专用服务器(如有必要)。
感谢您的建议! :)