web數據交互方式


 

這里講的web數據交互主要是指前端,客戶端和服務器進行數據交互的方式。

現在流行的連接方式主要有三種:短連接輪巡,長連接,comet。

關於長連接與短連接的內容,主要引用自一下博文:http://jiangzhengjun.iteye.com/blog/502966

 

長連接與短連接

所謂長連接,指在一個TCP連接上可以連續發送多個數據包,在TCP連接保持期間,如果沒有數據包發送,需要雙方發檢測包以維持此連接,一般需要自己做在線維持。 
短連接是指通信雙方有數據交互時,就建立一個TCP連接,數據發送完成后,則斷開此TCP連接,一般銀行都使用短連接。  
比如http的,只是連接、請求、關閉,過程時間較短,服務器若是一段時間內沒有收到請求即可關閉連接。 
其實長連接是相對於通常的短連接而說的,也就是長時間保持客戶端與服務端的連接狀態。

長連接與短連接的操作過程

 

通常的短連接操作步驟是: 
連接→數據傳輸→關閉連接;


而長連接通常就是: 
連接→數據傳輸→保持連接(心跳)→數據傳輸→保持連接(心跳)→……→關閉連接; 
這就要求長連接在沒有數據通信時,定時發送數據包(心跳),以維持連接狀態,短連接在沒有數據傳輸時直接關閉就行了

什么時候用長連接,短連接?

長連接多用於操作頻繁,點對點的通訊,而且連接數不能太多情況,。每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,再操作的話那么處理速度會降低很多,所以每個操作完后都不斷開,次處理時直接發送數據包就OK了,不用建立TCP連接。例如:數據庫的連接用長連接, 如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創建也是對資源的浪費。

 


而像WEB網站的http服務一般都用短鏈接,因為長連接對於服務端來說會耗費一定的資源,而像WEB網站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。所以並發量大,但每個用戶無需頻繁操作情況下需用短連好。

 

總之,長連接和短連接的選擇要視情況而定。

 

關於comet的內容

Comet 指的是一種 Web 應用程序的架構。在這種架構中,客戶端程序(通常是瀏覽器)不需要顯式的向服務器端發出請求,服務器端會在其數據發生變化的時候主動的將數據異步的發送給客戶端,從而使得客戶端能夠及時的更新用戶界面以反映服務器端數據的變化。

這種架構既不同於傳統的 Web 應用,也不同於新興的 Ajax 應用。在傳統的 Web 應用中,通常是客戶端主動的發出請求,服務器端生成整個 HTML 頁面交給客戶端去處理。在 Ajax 應用中,同樣是客戶端主動的發出請求,只是服務器通常返回的是 XML 或是 JSON 格式的數據,然后客戶端使用這些數據來對頁面進行局部更新。Comet 架構非常適合事件驅動的 Web 應用和對交互性和實時性要求很強的應用。這樣的應用的例子包括股票交易行情分析、聊天室和 Web 版在線游戲等。

基於 Comet 架構的 Web 應用使用客戶端和服務器端之間的 HTTP 長連接來作為數據傳輸的通道。每當服務器端的數據因為外部的事件而發生改變時,服務器端就能夠及時把相關的數據推送給客戶端。

 

基於 Comet 架構的 Web 應用使用客戶端和服務器端之間的 HTTP 長連接來作為數據傳輸的通道。每當服務器端的數據因為外部的事件而發生改變時,服務器端就能夠及時把相關的數據推送給客戶端。通常來說,有兩種實現長連接的策略:

HTTP 流(HTTP Streaming)
這種情況下,客戶端打開一個單一的與服務器端的 HTTP 持久連接。服務器通過此連接把數據發送過來,客戶端增量的處理它們。
HTTP 長輪詢(HTTP Long Polling)
這種情況下,由客戶端向服務器端發出請求並打開一個連接。這個連接只有在收到服務器端的數據之后才會關閉。服務器端發送完數據之后,就立即關閉連接。客戶端則馬上再打開一個新的連接,等待下一次的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM