Web services 构建web服务:我有什么选择?

Web services 构建web服务:我有什么选择?,web-services,rest,httpwebrequest,lamp,push-notification,Web Services,Rest,Httpwebrequest,Lamp,Push Notification,我希望构建我的第一个web服务,我希望从一开始就被指向正确的方向 以下是必须进行的互动: 首先,智能手机或计算机将向我的web服务发送一大块数据 web服务将把信息持久化到数据库中 算法将定期访问和修改数据库 该算法将定期捆绑数据并发送到智能手机或计算机(如何?) 最大的问题是:为了实现这样的功能,我需要学习哪些基本的东西? 下面是一些我脑子里反复出现的杂乱无章的小问题。如果您愿意,请随时回答这些问题。(……也许认为他们是额外的功劳?) 我听过很多关于RESTful服务的好消息,我读过w

我希望构建我的第一个web服务,我希望从一开始就被指向正确的方向

以下是必须进行的互动:

  • 首先,智能手机或计算机将向我的web服务发送一大块数据
  • web服务将把信息持久化到数据库中
  • 算法将定期访问和修改数据库
  • 该算法将定期捆绑数据并发送到智能手机或计算机(如何?)
最大的问题是:为了实现这样的功能,我需要学习哪些基本的东西?


下面是一些我脑子里反复出现的杂乱无章的小问题。如果您愿意,请随时回答这些问题。(……也许认为他们是额外的功劳?)
  • 我听过很多关于RESTful服务的好消息,我读过wiki文章,甚至还玩过Twitter的RESTful Web服务。这是显而易见的方式吗?还是应该考虑其他的事情?
  • 我使用什么编程语言将内容持久化到数据库?我认为php将是这方面的首选
  • 我使用什么编程语言与数据库交互?我想任何事情都是可以接受的,对吧
  • 我是否必须担心并发访问数据库,还是MySQL为我处理?(我对数据库也相当陌生。)
  • 我到底该如何发回信息?显然,如果它是对HTTP请求的回复,这是没有问题的,但是有时候这个回复可能需要相当长的时间来计算。在得到答案之前,我是否应该让HTTP请求保持未完成状态
  • 有时我需要向智能手机发送信息,而不管信息是否已发送给我。如何向用户推送信息
其他有助于您了解我的来历的信息:

    我很熟悉java、C++、C++和python。我使用过PHP、Javascript和Ruby
  • 我对数据库比较陌生,但我知道基本的想法
  • 我已经设置好了我的服务器,我正在使用一个基本的LAMP堆栈。我对L、A、M和P的理解还相当初级

    • 出于对编程的热爱,如果您已经熟悉Python,请不要使用PHP。后者使得代码更干净、更易于维护。并不是说用PHP编写好的代码是不可能的,而是相对来说比较少见。通过MySQLdb模块,您可以将Python用于所有服务器端的工作,包括MySQL交互。使用标准CGI、FCGI或mod_python

      至于数据库,使用事务将消除冲突。但是您通常可以设计一个不会发生冲突的系统。例如,在每次插入时使用自动递增的主键ID将确保每个条目都是唯一的

      您可以使用Javascript“拉”数据,可能使用AJAX方法,或者使用SMS或其他技术“推”数据

      当回复需要一段时间来计算时,您可以使用AJAX“轮询”。这是一种非常常见的技术。服务器只返回“we's working this”(或等效)并内置刷新,直到结果就绪

      我不是REST方面的专家,但AJAX,特别是在使用轮询而不是简单地响应用户输入时,可以说违反了RESTful原则。但你可以是一个纯粹主义者,也可以做任何有用的事。这取决于你


      我不相信我曾经使用过除了短信以外的任何“推送”技术,那是几年前,当时许多公司都有免费的短信网关。因此,如果你想“推送”数据,最好希望其他人加入到对话中来

      语言:Python的易用性假设您的需求(例如多线程)不是特别关注的。它具有大多数数据库的驱动程序,并支持多种协议。有几种用于it的web框架——最流行的可能是

      协议:如果您专注于HTTP,请进行学习。注意,SOAP往往是冗长的,这会导致移动大量数据时出现问题。另一方面,如果你正在研究其他选项,也许是某种二进制格式,比如谷歌的。闪存也是一种可能性(请参阅:)。注意,二进制选项要求用户在其机器上安装一些东西(例如小程序或独立应用程序)

      回复:如果进程长时间运行,并且完成后应通知客户端,我建议为客户端开发一个应用程序。浏览器可以用JavaScript编程定期轮询,也可以将Flash电影嵌入到实时更新中,但这些都是浏览器编程中比较棘手的部分。如果你正在处理无线电话,看看短信。否则,我只会为客户端提供一种获取状态的方法,而不会发送通知(例如推送与拉送)。正如@jcomea_ictx所写,如果AJAX是基于浏览器的解决方案研究,那么它就是一种选择


      并发性:了解数据库的含义。考虑一下,如果接收到对同一数据的多次写入,会发生什么情况—数据库可能不一定能以您希望的方式解决此问题

      使用Java。最新版本的使编写RESTful和SOAP服务成为一件轻而易举的事,并且它也非常容易与数据库进行互操作


      使用真正的语言而不是脚本的好处是:完整的服务器端状态、强类型、多线程和无数其他可能有用或不有用的东西,但是知道它们是可用的可以让你的项目成为未来的证明。

      考虑将你的大量问题分解成几个小问题。你正在一次啃掉很多东西,在这里——也许从小的开始,用小的问题。我认为主要的问题是黑体字的问题。因为