自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺入淺出 Server Push

開發(fā) 后端
Server Push,即是服務器推送技術(shù)。本文通過引入Threading的類庫,淺談Server Push,一起來看。

推送技術(shù)Server Push的基礎(chǔ)思想是將瀏覽器主動查詢信息改為服務器主動發(fā)送信息。服務器發(fā)送一批數(shù)據(jù),瀏覽器顯示這些數(shù)據(jù),同時保證與服務器的連接。當服務器需要再次發(fā)送一批數(shù)據(jù)時,瀏覽器顯示數(shù)據(jù)并保持連接。以后,服務器仍然可以發(fā)送批量數(shù)據(jù),瀏覽器繼續(xù)顯示數(shù)據(jù),依次類推。

最近在做一個即時顯示的面板頁面。

需求:

1.即時顯示;

2.無刷新。

做Web的話,一聽到無刷新,馬上想到的就會是Ajax,我第一版的實現(xiàn)方法是Ajax的Updatepanel+Timer控件,定時向服務器發(fā)出Request。實現(xiàn)是沒有問題,但是對于資源的消耗非??植?,可以這么說。打開進程管理器,可以看到數(shù)據(jù)庫和瀏覽器(因為是在本機上做)的CPU占用比較高,并且瀏覽器的內(nèi)存占用一直在上升。。。囧——不用再多解釋了,你懂的。。。

資料到處找,各種找,從Fighting Team.SDF那里,了解到了Server Push——服務器推送技術(shù)??戳艘粌蓚€不怎么完整的Demo(網(wǎng)上這方面的資料,真不多,要不就是各種哥各種轉(zhuǎn)載的)后,開始實施。來,直接貼代碼:

這里要引入Threading的類庫:

  1. using System.Threading;  
  2. ///后臺程序段:  
  3. /// <summary>  
  4. /// 以發(fā)送服務端控制信息的方式提供HtmlTextWriter對象   
  5. /// </summary>   
  6. /// <param name="writer"></param>   
  7. protected override void Render(HtmlTextWriter writer)   
  8. {   
  9. base.Render(writer);   
  10. while (Response.IsClientConnected)   
  11. {   
  12. Response.Write("<script>Display('" + SQLHelper.select().ToString() + "')\n </script> ");   
  13. Response.Flush();   
  14. Thread.Sleep(41);   
  15. }   

可以看到,其實代碼非常簡單,就是重寫了Rander方法。方法里,做一個死循環(huán),將后臺數(shù)據(jù)庫里的數(shù)據(jù),不停地Response到前臺,展示給用戶。就實現(xiàn)了這么一個推送的動作。

小總結(jié)一下:這個方法因為只有一個推送,比之前用Timer定時發(fā)送Request,再接受Response的方法優(yōu)化許多,不僅減少了服務器的開銷,也降低了數(shù)據(jù)庫的負荷。再打開進程管理器看一下,CPU和內(nèi)存的占用都比較低。不過可以相對性既然存在,那么說明這個方法也有不利的一方面:ClientConnected意思是,客戶端連入,就是說客戶端沒有斷開與服務端的連接。我們知道服務器的連入數(shù)是有限制的,如果一直保持連接狀態(tài)不斷開連接的話,那么連入數(shù)一多,這個資源的消耗又是很可怕的。所以權(quán)衡完Server Push技術(shù),比較適合用在連入數(shù)少的場合,比如像信息顯示面板之類的,連入數(shù)都不較少,比較單一,則不會占用太多的資源。

【編輯推薦】

  1. 淺析.NET中的Server push技術(shù)
  2. 2011年移動用戶體驗趨勢:信息推送技術(shù)
  3. 詳解ASP.NET自定義控件開發(fā)實例
  4. 詳解ASP.NET MVC 3新的Layout布局系統(tǒng)
責任編輯:于鐵 來源: 博客園
相關(guān)推薦

2021-02-07 08:02:33

Linux內(nèi)核開源

2021-05-17 09:58:00

MySQL索引數(shù)據(jù)庫

2017-09-07 15:43:24

數(shù)據(jù)庫MongoDBMySQL

2022-01-06 07:59:32

WebGPUOpenGL引擎

2020-03-06 10:16:55

Spring數(shù)據(jù)庫框架

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2021-06-21 08:58:14

MySQL數(shù)據(jù)庫Pages

2012-05-21 10:06:26

FrameworkCocoa

2021-07-20 15:20:02

FlatBuffers阿里云Java

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2022-09-26 09:01:15

語言數(shù)據(jù)JavaScript

2022-01-11 07:52:22

CSS 技巧代碼重構(gòu)

2019-12-04 10:13:58

Kubernetes存儲Docker

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2022-11-09 08:06:15

GreatSQLMGR模式

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計算云系統(tǒng)

2009-11-18 13:30:37

Oracle Sequ
點贊
收藏

51CTO技術(shù)棧公眾號