成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET2.0中的callback實現機制

開發 后端
本文介紹ASP.NET2.0中的callback實現機制,以及介紹Teddy將和您一起解析callback的整個調用、反饋機制,相信對于幫助您更好的使用callback,將能有一定的益處。

ASP.NET2.0中的callback實現機制

看到不少朋友最近在寫使用callback的文章,也有點手癢,也來涂鴉一下,挖掘挖掘callback的潛力。callback的一般使用方法還算簡單,直接參照msdn的幫助和范例就足夠了。但是想要真正用好、用精,或者想開發一些基于callback機制的WEB組件,那么,就要先深入了解callback實現機制了。在本文中,Teddy將和您一起解析callback的整個調用、反饋機制,相信對于幫助您更好的使用callback,將能有一定的益處。

Callback vs Atlas

首先,談談Atlas。很多朋友可能會覺得奇怪,已經有了Callback,為什么又要出Atlas呢?關于這個問題,Atlas的作者怎么解釋,我倒沒有去調查。只不過從我個人對callback和atlas的使用感受來講,覺得,callback作為一個接口和postback非常類似的實現,肯定是為了讓用戶類似使用postback來使用它。但是,它的這個類似postback的機制,應該說使用上還不是特別方便,也不易擴展,當然這是相比于其他的AJAX框架實現來說的。因此,微軟方面借鑒了許多的已有的AJAX實現,如 Prototype,Backbase以及AJAX.NET,并結合ASP.NET2.0 的部分特有功能,發明了這樣一個博采眾長的AJAX框架。基于Atlas來開發AJAX應用有多好,很難量化的來說,但至少不比其他的這些AJAX框架來的差是肯定的,加上微軟這個后臺,以及像live.com這樣的重量級站點的應用推廣,其影響當然是值得期待的。

不過,這也不是說callback實現沒一無是處了,作為程序員,我們需要有正確的態度,在正確的使用情形,使用最正確的技術。沒有哪一個框架是萬能的,是適合任何使用環境的;就像大家都在爭論那個軟件開發方法最好,CMMi,RUP,XP,AGILE~~,其實,沒有最好,最合適的才是最好的。我們最應該做的,是了解各種方案的原理和優缺點,從而,合理的使用正確的工具來解決實際問題。

Begin from Client Script

我們都知道,凡是AJAX,從底層來講,無外乎兩種實現機制:XMLHTTP以及IFRAME。在AJAX這個詞獲得廣泛關注之前,其實,基于這兩種底層實現的功能框架,或者基于這兩種技術的無刷新效果實現就已經被廣泛的使用了。當然,發展到今天,在使用接口方面,這些底層機制的細節往往被框架給隱藏了,使用接口變得越來越簡單,用戶只要調用這些簡單接口,沒有必要知道具體是怎么實現效果的了。

不過,這里我們既然是要解析callback實現機制,那還是讓我們從一個callback調用的客戶端腳本調用開始,看看,微軟是怎么實現這個callback機制的。

1、ClientScript.GetCallbackEventReference(...)

要激發一個callback,首先,當然需要在客戶端本中發出一個調用。一個典型的調用語法如下:

  1. <script language="javascript" type="text/javascript"> 
  2. function any_script_function(arg, context)  
  3. {  
  4. <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;      
  5. }  
  6. </script> 

ClientScript.GetCallbackEventReference(...)將根據傳入的參數返回實際的回調腳本。這個函數有多個重載版本,因此,這些參數的含義,大家可以參考MSDN。以具體的上面這段示例代碼中的參數來說:

◆this表示執行回調的的服務端控件是當前這個Page,當前的Page必須實現ICallbackEventHandler接口,包括必須實現string GetCallbackResult()和void RaiseCallbackEvent(eventArgument)這兩個接口函數,這個參數也可以是指向某個WEB控件的引用,當然,這個空間也必須實現ICallbackEventHandler接口;

◆"arg"是將被傳給RaiseCallbackEvent的參數eventArgument的值,可以使人以自定義格式的字符串;

◆"ReceiveServerData"是當回調成功之后,處理返回內容的客戶端腳本函數的名稱,這個函數必須存在于執行回調的頁面,并且這個函數可以包含兩個參數,例如:

  1. <script type="text/javascript">   
  2. function ReceiveServerData(result, context)   
  3. {   
  4.            
  5. }   
  6. </script> 

這兩個參數,分別是回調的返回數據result,和原封不動被返回的我們激發回調時的這個context參數,當然,這兩個參數都是字符串類型的。

◆"context"就不用多解釋了,記得這個參數會被原封不動的傳給指定的返回數據處理函數就行了。MSDN的官方文檔說,context一般可用來傳遞需要在客戶端的返回數據處理函數中用來調用的腳本代碼,不過實際上,你傳什么都可以,把它看成一種從客戶端回調的的激發端,到處理返回數據的接收段之間的參數傳遞通道就行了。

2、WebForm_DoCallback(...)

Ok,明白了以上代碼的含義,下面我們來看看,前面的這條“<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;”在運行時會被解析成什么樣子呢?我們只要在頁面運行時察看頁面源碼就可以看到,實際上服務器幫我們生成了下面這段 script代碼:

  1. <scriptlanguagescriptlanguage="javascript"type="text/javascript"> 
  2. functionany_script_function()  
  3. {  
  4. WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,false);  
  5. }  
  6. </script> 

這段代碼是什么意思呢?很顯然的他調用了一個系統與定義的script函數:WebForm_DoCallback。我們要把這個函數找出來看看它具體為我們干了什么。在運行時的頁面源碼中,我們很容易可以找到這段腳本的出處。我們注意到有一個script,src="/TestCallbackWeb/WebResource.axd?d=HEcYmh-7_szSIu1D_mHSEw2&amp;t=632661779991718750",這里就定義了WebForm_DoCallback。讓我們把它用flashget下載下來,將擴展名改為.js。看看源碼吧,沒有被混淆的,所以很容易看明白。以上介紹ASP.NET2.0中的callback實現機制

【編輯推薦】

  1. 微軟發布ASP.NET MVC 2預覽版 多項功能更新
  2. ASP.NET服務器自定義控件安全準則
  3. ASP.NET編程規范之編碼規范淺析
  4. 關于ASP.NET Session的一點認識
  5. ASP.NET編程工具ASP.NET Web Matrix詳細介紹
責任編輯:佚名 來源: 網易博客
相關推薦

2009-07-30 13:18:31

2009-07-29 14:59:26

asp.net1.1ASP.NET2.0

2010-09-06 13:51:38

CSS失效CSS

2009-07-29 15:17:42

驗證控件ASP.NET1.1ASP.NET2.0

2009-07-31 15:42:38

自定義providerASP.NET2.0

2009-08-05 17:43:48

ASP.NET 2.0

2010-06-02 16:49:24

MySQL存儲過程

2009-08-07 16:18:08

ASP.NET2.0數

2009-07-29 15:58:54

靜態文件處理ASP.NET

2009-07-29 11:29:16

ASP.NET1.1ASP.NET2.0

2009-12-14 10:03:16

ASP.NET 2.0

2009-12-14 17:50:45

ASP.NET 2.0

2009-07-29 15:06:16

asp.net1.1asp.net2.0

2009-07-21 15:34:32

ASP.NET 2.0

2009-08-05 18:14:52

ASP.NET 2.0

2009-07-23 13:47:46

ASP.NET數據緩存

2009-12-21 10:05:10

ASP.NET MVC

2009-07-29 11:46:22

asp.net1.1

2009-07-22 17:28:07

CSS文件ASP.NET 2.0

2009-07-23 16:28:20

URL映射ASP.NET 2.0
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久黄色网 | 久久久久国产一区二区三区 | 成人国产精品一级毛片视频毛片 | 久久精品国产v日韩v亚洲 | 孰女乱色一区二区三区 | 91在线免费视频 | 国产剧情一区二区三区 | 日本中文字幕一区 | 国产精品免费观看视频 | 91资源在线 | 中文字幕精品一区 | 亚洲国产欧美91 | 在线观看视频中文字幕 | 国产欧美日韩在线一区 | 婷婷久久网 | 成人h动漫精品一区二区器材 | 色网在线播放 | 91中文 | 日韩在线精品 | 成人小视频在线观看 | 色婷婷亚洲一区二区三区 | 亚洲三区视频 | 国产一区二区三区色淫影院 | 色橹橹欧美在线观看视频高清 | 亚洲综合视频一区 | 日韩免费一级 | 久久伊人青青草 | 久久一区二区av | 国产精品久久久久久久久久久久久久 | 亚洲精品电影网在线观看 | 久久99精品久久久久久国产越南 | 欧美成人精品欧美一级 | 一级免费黄色 | 久久国产激情视频 | 欧美综合一区二区 | 国产欧美在线播放 | 成人无遮挡毛片免费看 | 精品国产一区二区在线 | 人人干人人玩 | 日韩av成人 | 国产精品一区二区在线 |