对HTTP协议感到困惑

对HTTP协议感到困惑,http,web-applications,client-server,protocols,Http,Web Applications,Client Server,Protocols,我对HTTP协议有点困惑,据我所知,HTTP是用来传递网页的,主要用于在web服务器和浏览器之间发送消息。 但HTTP似乎在许多应用程序中随处可见,这些应用程序确实使用互联网进行通信,但不是web应用程序(“使用web浏览器作为客户端的应用程序”) 我问这个问题是因为我开始开发iPhone应用程序(一种导航应用程序),我需要在iPhone客户端和我的服务器之间发送消息。现在人们一直告诉我使用HTTP协议,但这真的是一条路吗?是的,这是一条路。你还想怎么做 Web Server <-----

我对HTTP协议有点困惑,据我所知,HTTP是用来传递网页的,主要用于在web服务器和浏览器之间发送消息。 但HTTP似乎在许多应用程序中随处可见,这些应用程序确实使用互联网进行通信,但不是web应用程序(“使用web浏览器作为客户端的应用程序”)


我问这个问题是因为我开始开发iPhone应用程序(一种导航应用程序),我需要在iPhone客户端和我的服务器之间发送消息。现在人们一直告诉我使用HTTP协议,但这真的是一条路吗?

是的,这是一条路。你还想怎么做

Web Server <-------HTTP-------> Client
Web服务器客户端

客户端可以是浏览器、手机、xbox。服务器请求的接收端上的任何东西都是客户端。

如果我可以重申的话,您的问题是有效的,为什么我们在每个服务器-客户端通信中都使用HTTP,而它通常用于浏览器web服务器用例,并且与直接TCP通信相比效率更低。我的理由如下:

  • HTTP协议非常简单,就像技术中的许多东西一样,简单胜过复杂,即使复杂的解决方案更高效(除非有巨大的优势)
  • HTTP协议是无状态的,通过添加更多的机器和通过简单的负载平衡技术(如循环)平衡负载,可以更简单地进行水平扩展
  • 很容易找到一个合理且免费的HTTP服务器,让您的应用程序尽快启动并运行,而不是实施您自己的协议、服务器,并将您的注意力从您想要解决的真正问题上移开
  • 与许多方使用的任何简单技术一样,它会随着时间的推移而变得更好,并具有保持活力、分块传输、管道等现代功能,您可以克服连接开销的一些缺点

    • 同意从SOAP迁移到REST和查询是一件好事。 我们目前正在实现一个系统,该系统将使用HTTP作为双向传输机制。 返回上传到服务器的响应是一个标准的HTTP响应,例如200=success无正文。 对查询的响应是一个以答案为主体的ASCII文本页面。然后,我们只需将ASCII转换回二进制即可使用数据。 这种方法的优点是,您只需提供正确的URL和参数,就可以处理所有事情。 除非您的协议栈知道如何格式化post和get请求,否则您将需要自己进行格式化。虽然这是乏味的,它是很好的记录,但它是一个有点乏味,必须通过它自己。因此,如果你不得不这样做,那么我建议你买一本电子书来帮助整理细节。例如:

      是的,HTTP是网络化客户端/服务器通信的方式。我们现在(终于)看到了从SOAP狂热到HTTP的巨大转变@Eyal:如果您对分散网络系统背后的迷人问题感兴趣,请务必查看REST(以及REST与2001-2010年的SOAP战争)。感谢您的回复,我从使用HTTP中获得了好处,但是如果我需要从服务器向客户端发送消息,该怎么办?如何使用无状态协议?服务器没有保持开放的套接字,那么它如何向客户端发送消息呢?这取决于,无状态协议有它的优点,只要您能够围绕它设计您的需求,并获得服务器无状态的好处。但这并不意味着所有的应用程序都可以被推到那个用例中。在http中维护状态的典型方法是在客户端使用cookie。现在有很多解决方法可以满足您的使用需求,比如“挂接GET/COMET”或更新的WebSocket。另一个原因是它在Internet上被广泛使用,并且对防火墙友好。