就我而言,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