2011-10-09 173 views
1

我有點困惑的HTTP協議,從我知道HTTP是一個Web服務器與瀏覽器之間提供的網頁和主要發送消息做出。 但是,似乎HTTP在許多確實使用互聯網進行通信但不是Web應用程序(「使用Web瀏覽器作爲客戶端的應用程序」)的應用程序中的任何地方使用。困惑的HTTP協議

我問這個,因爲我開始開發(導航應用的一種)的iPhone應用程序,我需要iPhone客戶端和我的服務器之間發送消息。現在人們總是告訴我要使用HTTP協議,但這真的是一種方式嗎?

回答

1

你的問題是有效的,如果我可以重申,我們爲什麼要使用HTTP每一個服務器 - 客戶端通信,而它通常意味着瀏覽器的Web服務器的使用情況,並與直接TCP通信可以是低效率的。我的原因如下:

  • HTTP協議是非常簡單的,就像複雜解決方案更高效(除非是巨大的利潤率),技術簡單中的許多事情都會勝過複雜性。
  • HTTP協議是無狀態的,通過添加更多機器和通過簡單負載平衡技術(例如輪循機制)來平衡負載,可以更加簡單地水平擴展。
  • 容易找到一個合理的免費HTTP服務器,讓您的應用程序即將啓動並運行,而不僅僅是實現自己的協議和服務器,並將您的注意力從您想要解決的實際問題中解放出來。
  • 像許多締約方使用的任何簡單的技術,它會隨着時間的推移和具有現代特色的喜歡保持活動好,分塊傳輸,流水線可以克服的連接費用的一些缺點。
+0

感謝您的回覆,我得到了使用HTTP的好處,但是如果我需要從服務器發送消息到客戶端呢?我如何使用無狀態協議來做到這一點?服務器不會保持打開的套接字,所以它如何將消息發送給客戶端? – Eyal

+0

視情況而定,無狀態協議有其長處,因爲您可以根據需要設計您的需求,並獲得無狀態服務器的好處。但這並不意味着所有的應用程序都可以被推送到那個用例中。在http中維護狀態的典型方法是在客戶端使用cookie。現在有很多解決方法可以滿足您的用例,如「掛起GET/COMET」或更新的WebSockets。 – jayadev

+0

另一個在互聯網上廣泛使用並且對防火牆友好的原因。 – Anderson

1

是的,這是要走的路。你還想怎麼去做呢?

Web Server <-------HTTP-------> Client 

客戶端可以是瀏覽器,手機,Xbox。服務器請求的接收端上的任何內容都是客戶端。

+1

是,HTTP是去聯網的客戶端/服務器通信的方式。我們現在(終於)看到了從SOAP瘋狂到HTTP的巨大轉變。 @Eyal:如果您對分散式網絡系統背後的迷人問題感興趣,請確保您查看REST(以及2001-2010的REST vs SOAP戰爭)。 –

0

同意,SOAP,此舉休息和QUERY是一件好事。 我們目前正在實現一個使用HTTP作爲雙向傳輸機制的系統。 返回上傳到服務器的響應是一個標準的HTTP響應,例如200 =沒有正文的成功。 對查詢的響應是一個ASCII文本頁面,其答案爲正文。然後,我們只需將ASCII碼恢復爲二進制即可使用這些數據。 這種方法的優點是你只需要提供正確的URL和參數,你可以處理所有事情。 除非你的協議棧知道如何格式化發佈和獲取請求,否則你將需要自己做。雖然這很乏味,但它在W3C Protocols有詳細記錄,但是要自己完成所有這一切有點繁瑣。所以,如果你不得不這樣做,那麼我建議購買一本電子書來幫助理清細節。一些例子是: HTTP