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

淺析.NET中的Server push技術(shù)

開發(fā)
本文介紹了.NET中的Server push技術(shù)。作者通過實(shí)例簡單分析了實(shí)現(xiàn)服務(wù)器端有改變時(shí)主動(dòng)推送到客戶端的原理。

今天突發(fā)奇想,想研究一下服務(wù)端內(nèi)容有變化,如何引起客戶端的改變。

一般來說方法有2種,一種就是客戶端用JS異步定時(shí)輪詢服務(wù)器端,這種是大部分人采用的方法,但是我在想到底可以不可以實(shí)現(xiàn)服務(wù)器端有改變時(shí)才會(huì)主動(dòng)推送到客戶端呢?按理來說這種方式對于B/S是不可能實(shí)現(xiàn)的,因?yàn)锽/S是無連接的,這種request/response的方式無法保持狀態(tài)。搜了一下,看到博客園有位朋友寫了篇文章是關(guān)于Server Push的,文章點(diǎn)這里看,我自己把它的代碼復(fù)制過來看了下效果,完整代碼如下:

前臺(tái):

后臺(tái)代碼:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Threading;

namespace WebDemo.ServerPush
{
    public partial class ServerPushDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
            Response.Buffer = true;
            bool isOutput = false;
            Response.Write("");

            Response.Flush();
            int lastsecond = 0;
            while (Response.IsClientConnected)
            {
                Thread.Sleep(300);
                if (DateTime.Now.Second != lastsecond && !isOutput)
                {

                    lastsecond = DateTime.Now.Second;
                    Response.Write(" ");
                    Response.Flush();
                    isOutput = true;
                }
                else
                {
                    isOutput = false;
                }

            }

        }
    }
}

這種方式的實(shí)現(xiàn)原理其實(shí)就是在OnRender事件里,用循環(huán)掛起連接,因?yàn)榉?wù)器端沒有response完畢,所以一直和客戶端保持連接,雖然這種方式能實(shí)現(xiàn)服務(wù)器端向客戶端的推送,但它的代價(jià)太大,因?yàn)閣eb的優(yōu)勢就是無連接。這樣每個(gè)客戶端都要占用服務(wù)器端的一個(gè)IIS連接,如果用戶超過百個(gè),就會(huì)非??植赖摹K赃@種方式我覺得不可取,相比來說,還是用AJAX的方式定時(shí)輪詢更好。

真正意義上的Server Push好像我找了一些文章在Cgi里可以實(shí)現(xiàn)。但在.NET里的實(shí)現(xiàn)我就不得而知了,知道的高人請指點(diǎn)下,呵呵。

【編輯推薦】

  1. ASP.Net MVC框架配置與分析
  2. 詳解Ajax在ASP.NET中的實(shí)現(xiàn)方式
  3. .Net整合其他平臺(tái)的一些探討
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2011-07-28 13:08:51

2011-04-13 15:03:25

NATlP

2009-08-05 15:01:04

ASP.NET應(yīng)用Vi

2011-04-22 10:36:09

Server Push推送技術(shù)

2009-07-28 16:31:03

Windows 200

2009-08-05 09:38:28

SQL Server數(shù)

2012-07-11 14:31:16

SpringAop

2024-03-25 03:00:00

.NET 6await編程

2009-12-24 14:30:56

VB.NET

2009-07-22 14:23:39

URL RewriteASP.NET

2020-07-23 15:40:54

Linux零拷貝文件

2020-07-06 15:10:05

Linux拷貝代碼

2009-04-08 09:58:07

ASP.NET MVCTempData框架

2009-07-27 09:29:38

ASP.NET中Jav

2009-07-27 10:22:16

ASP.NET中Coo

2009-07-27 16:43:31

2009-08-04 15:02:18

ASP.NET數(shù)據(jù)驗(yàn)證

2009-07-20 14:56:18

iBATIS.NET動(dòng)態(tài)選擇DAO

2009-07-21 10:05:10

ASP.NET配置文件

2018-03-29 06:55:12

物聯(lián)網(wǎng)串口通信技術(shù)
點(diǎn)贊
收藏

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