国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET中的Server push技術_.Net教程

2024-07-10 12:50:50
字體:
來源:轉載
供稿:網友

推薦:教你如何入門ASP.NET數據庫編程
因為Access并不真正為高性能應用程序服務,所以一個希望有多個同時連接用戶的站點必須部署一個比Access更適合的數據源。本文將講述如何從Microsoft SQL Server(一種企業級RDMS)中獲取數據。 SQL Server完全版包括了三個部分。第一個是引擎,用于實際組織數據

服務端內容有變化,如何引起客戶端的改變。一般來說方法有2種,一種就是客戶端用JS異步定時輪詢服務器端,這種是大部分人采用的方法,但是我在想到底可以不可以實現服務器端有改變時才會主動推送到客戶端呢?按理來說這種方式對于B/S是不可能實現的,因為B/S是無連接的,這種request/response的方式無法保持狀態。搜了一下,看到博客園有位朋友寫了篇文章是關于Server Push的,文章點這里看,我自己把它的代碼復制過來看了下效果,完整代碼如下:

前臺:

以下為引用的內容:

1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ServerPushDemo.aspx.cs" Inherits="WebDemo.ServerPush.ServerPushDemo" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>無標題頁</title>
8 <script type="text/javascript">
9 function SetValue(time)
10
{
11 document.getElementById("TbTime").value=
time;
12
}
13 </script>

14 </head>
15 <body>
16 <form id="form1" runat="server">
17 <div>
18 <input type="text" id="TbTime"/>
19 </div>
20 </form>
21 </body>
22 </html>
23

后臺代碼:

以下為引用的內容:

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(
"<script>SetValue('" DateTime.Now.ToString() "')/n </script> "
);
Response.Flush();
isOutput
= true
;
}
else

{
isOutput
= false;
}

}

}
}
}

這種方式的實現原理其實就是在OnRender事件里,用循環掛起連接,因為服務器端沒有response完畢,所以一直和客戶端保持連接,雖然這種方式能實現服務器端向客戶端的推送,但它的代價太大,因為web的優勢就是無連接。這樣每個客戶端都要占用服務器端的一個IIS連接,如果用戶超過百個,就會非常恐怖的。所以這種方式我覺得不可取,相比來說,還是用AJAX的方式定時輪詢更好。

真正意義上的Server Push好像我找了一些文章在Cgi里可以實現,點這里看。但在.net里的實現我就不得而知了,知道的高人請指點下,呵呵。

我還搜到一個關于.net推技術的就是Comet框架,可以實現長連接的,具體文章請點這里。改天我會把相關Demo發出來.

分享:解析.NET中的XmlReader與XmlWriter
XML在.NET Framework 中有著重要的作用。如:.NET Framwork 本身的配置文件和源代碼文檔中使用XML,SOAP、WEB服務和ADO.NET也使用XML。 為了擴展XML,.NET Framwork包含了System.Xml命名空間。這個命名空間帶有許多處理XML的類。如,XmlDocument(這是DOM實

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙岩市| 毕节市| 重庆市| 曲周县| 龙岩市| 刚察县| 马龙县| 西贡区| 湘乡市| 洛川县| 五大连池市| 竹北市| 丹棱县| 革吉县| 崇州市| 江北区| 乳山市| 盐山县| 信宜市| 望城县| 康保县| 天峻县| 治县。| 乃东县| 苏尼特左旗| 芜湖县| 牟定县| 句容市| 百色市| 甘孜县| 德阳市| 嵊泗县| 北海市| 张家界市| 普定县| 徐汇区| 德昌县| 高邑县| 阿鲁科尔沁旗| 万安县| 贡嘎县|