就我而言,Ajax提供了一种解决方案,可以像面向连接的HTTP协议一样提供行为方式。但为什么HTTP协议最初不是被设计为连接定义的呢?为什么HTTP协议最初设计为无连接?
回答
因为它旨在用于连接没有意义的事情。
它被设计成超文本传输协议,这意味着它的责任仅仅是允许发送“请发送给我文档X”格式的消息,并且“这里是文档X,如您所请求的”。
我应该这样的协议使用的持久连接?
可伸缩性原因。维护连接会占用资源。
AJAX不是面向连接的行为的解决方法。这是为了确保基于用户交互,您只需要更新客户端上的一部分内容,而不是从服务器再次获取完整标记。它不会建立浏览器和Web服务器之间的往返连接。
如果每个服务器曾与每一位客户的互联网规模会得到有限的一对夫妇的数百万用户的实时连接。
我认为原因很简单 - 创建HTTP时:
1)大多数/所有网页是静态 2)随着互联网上几乎没有商业存在,它被认为联系是可能象不要指向不同的网站。
所以,静态页面+非本地内容=无连接协议。
HTTP原是和仍然是 conectionless。 AJAX只是利用现代浏览器的JavaScript功能将XML(或者通常是JSON)发送到服务器,而无需重新加载页面。
如前所述,主要原因是可扩展性。为网站的每个浏览者维护一个活跃的连接将是非常耗费资源的。另外,事实上,HTTP的原始创建者没有设想任何需要维护连接的系统 - HTTP的想法仅仅是发送文本响应到请求,然后完成。
而且简单。
回想起来可能并不是一件坏事,因为这意味着HTTP很简单,这意味着它可以轻松用于简单的事情。 你可以将它用于更难/更复杂的东西,通过在其上构建图层来确实需要状态。
正是这种简单性让HTTP被广泛采用并使其具有吸引力。 如果不是那么简单,那它就会成为另一个复杂的协议,除非必须,否则n-one会使用它。 如果你不相信我,你能告诉我为什么你不写你的ajax应用程序使用RPC的通信和X11的显示/渲染? :D
请记住HTTP最初的目的是为了实现像读/写信息存储的维基,而不是网上商店,银行,文字处理器等。 我记得在阅读Tim Timiers-Lee的采访时,他很高兴看到维基正在获得广泛的接受度(解释)他是如何让网络发挥作用的。 在实践中,这并未发生在更广泛的网络上,并且大多数网站禁用旨在启用此功能的HTTP PUT方法。
- 1. 为什么HTTP被设计成拉协议?
- 2. 如何为需要持久连接的协议设计RESTful HTTP网关?
- 3. 为什么HTTP协议是以纯文本的方式设计的?
- 4. gitsharp克隆http协议失败,但git协议成功!为什么?
- 5. 协议设计
- 6. USART协议设备可以与UART协议设备连接吗?
- 7. 为什么Objective-c协议采用其他协议?
- 8. http协议句柄是什么?
- 9. REST和HTTP协议有什么区别?
- 10. 为什么NSFetchedResultsController不符合UITableViewDataSource协议?
- 11. 为什么MAVLink协议不安全?
- 12. 为什么类型不符合协议?
- 13. WebDav协议VS HTTP协议
- 14. 为什么要使用专门为在物联网中连接设备而创建的协议?
- 15. 使用Javascript通过HTTP协议以外的协议连接服务器
- 16. 为什么我不断收到“java.net.MalformedURLException:无协议”
- 17. django mysql db连接协议
- 18. 为什么BluetoothChat示例无法连接?
- 19. 协议设计小类
- 20. SOAP/HTTP协议中的频繁套接字/连接超时
- 21. 协会!为什么那么无?
- 22. 什么是设计和实现网络协议的最佳实践?
- 23. CustomNSError协议做了什么,我为什么要采用它?
- 24. 为什么有人愿意使用Tcp协议托管WCF而不是使用基本的Http协议?
- 25. Firebase XMPP协议与HTTP协议
- 26. uwsgi协议比http协议更快吗?
- 27. 为什么我得到协议Enumerable没有为#Ecto.Query实现?
- 28. 为什么我无法通过Android设备连接到IISExpress?
- 29. 设置为Apache流利执行人最大HTTP连接
- 30. c#和HTTP协议
+1为清晰度和历史的角度。我仍然怀疑使用Web作为应用程序平台的智慧。 – cheduardo 2009-06-21 12:14:08
如果你问我,整个网络的东西就是泛光灯。 – 2011-05-20 15:41:08