我正在寻找建立我的第一个网络服务,我希望从一开始就指向正确的方向。
以下是必须进行的互动:
最大的问题是:为了实现这样的目的,我需要学习哪些基本的东西?
现在这里有一些小问题,我也在脑子里徘徊。如果您愿意,请随时回答这些问题。 (...也许可以考虑额外的功劳?)
可能有助于您了解我来自哪里的其他信息:
答案 0 :(得分:1)
对于编程之爱,请不要使用PHP,如果你已经熟悉Python了。后者使代码更清晰,更易于维护。并不是说在PHP中编写好的代码是不可能的,但这是相对罕见的。您可以将Python用于所有服务器端的东西,包括MySQL交互,以及MySQLdb模块。使用标准CGI,FCGI或mod_python。
对于数据库,使用事务将消除冲突。但是你通常可以设计一个不会发生冲突的系统。例如,在每个插入上使用自动递增的主键ID将确保每个条目都是唯一的。
您可以使用Javascript“拉”数据,也许可以使用AJAX方法,或使用短信或其他技术“推送”。
当回复需要一段时间进行计算时,您可以使用AJAX“轮询”。这是一种非常常见的技术。服务器只返回“我们正在处理这个”(或等效的)内置刷新,直到结果准备就绪。
我不是REST的专家,但是AJAX,特别是在使用轮询而不是简单地响应用户输入时,可以说违反了RESTful原则。但你可以是一个纯粹主义者,或者你可以做任何有用的事情。这取决于你。
我不相信我曾经使用过除SMS之外的任何“推送”技术,那是多年前很多公司都有免费的短信网关。因此,如果您想“推送”数据,最好希望其他人加入对话!
答案 1 :(得分:1)
语言:Python的易用性假设GIL并不是您需求的特别关注点(例如多线程)。它具有大多数数据库的驱动程序并支持多种协议。它有几个Web框架 - 最受欢迎的可能是Django。
协议:如果您是以HTTP为中心的学习SOAP和REST。注意,SOAP往往是冗长的,这会导致移动数据量的问题。另一方面,如果您正在查看其他选项,请研究socket programming以及某些二进制格式,例如Google的protocol buffers。 Flash也是一种可能性(参见:Flash Remoting)。请注意,二进制选项要求用户在其计算机上安装一些内容(例如applet或独立应用程序)。
回复:如果进程长时间运行,并且客户端应该在完成后收到通知,我建议为客户端开发应用程序。可以使用JavaScript对浏览器进行编程以定期轮询,或者可以将Flash电影嵌入到实时更新中,但这些是浏览器编程的一些棘手问题。如果您正在处理无线电话,请查看SMS。否则我只会为客户提供获取状态的方法,但不会发出通知(例如推送与拉动)。正如@jcomea_ictx所写,如果它是基于浏览器的解决方案,AJAX是一个选项 - 研究jQuery。
并发:了解ACID对数据库的意义。想想如果你收到多次写入同一数据会发生什么 - 数据库可能不一定按照你想要的方式解决这个问题。
答案 2 :(得分:0)
使用Java。最新版本的Java EE 6使编写RESTful和SOAP服务变得轻而易举,并且它也很容易与数据库互操作。
使用真正的语言而不是脚本的好处是:完整的服务器端状态,强类型,多线程以及无数可能会或可能不会派上用场的其他东西,但知道它们可用会使您的项目面向未来