中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 異步編程與響應(yīng)式框架
PHP校驗ISBN碼的函數(shù) 回到列表 GraphDatabase在關(guān)系數(shù)據(jù)庫中的實現(xiàn)
 異步編程與響應(yīng)式框架

作者:老趙 時間: 2010-09-25 文檔類型:轉(zhuǎn)載 來自:老趙點滴

第 1 頁 異步編程與響應(yīng)式框架 [1]
第 2 頁 異步編程與響應(yīng)式框架 [2]
第 3 頁 異步編程與響應(yīng)式框架 [3]
第 4 頁 異步編程與響應(yīng)式框架 [4]

為了更好地說明問題,這里我們將標準的foreach操作展開為傳統(tǒng)的迭代器使用形式,并省略了using語句。在使用時,我們先調(diào)用一個IEnumerable對象的GetEnumerator方法,獲得一個迭代器,再根據(jù)MoveNext及Current進行遍歷。在調(diào)用MoveNext時,迭代器會去“準備”下一個元素,并根據(jù)存在與否返回true或者false。試想,如果其中某個MoveNext的“準備”工作涉及到一個耗時較長的操作,則迭代器的使用者也必須眼巴巴地等待其返回。

這是一種“拉(Pull)”模型,數(shù)據(jù)由消費者(Consumer)從生產(chǎn)者(Producer)那里主動“拉”來。這是一種同步的交互方式,數(shù)據(jù)消費者會依賴于數(shù)據(jù)生產(chǎn)者的表現(xiàn)。這就好比我們?nèi)ナ程贸燥垥r必須主動去取餐,此時則必須從隊伍的最后排起,我們什么時候能結(jié)束等待并進行下一步操作(即“吃飯”),則要看食堂的生產(chǎn)速度如何。很顯然,有些時候這種交互方式是不可接受的,例如我們在實現(xiàn)一個搜索引擎的“關(guān)鍵字提示”功能時,不可能讓用戶在輸入一個字符后,必須等待遠程的提示請求返回才能繼續(xù)輸入下一個字符。

而與交互式編程對應(yīng)的便是“響應(yīng)式(Reactive)”編程。響應(yīng)式編程是一種基于“改變”的編程方式。例如在交互式編程中,A = B + C這樣的表達式意味著將B與C之和賦給A,而此后B與C的改變都與A無關(guān)。而在響應(yīng)式編程中,A會去“響應(yīng)”B或C的變化,即一旦B或C改變之后,A的值也會隨之變化。響應(yīng)式編程的一個典型應(yīng)用便是GoF23中的觀察者(Observer)模式。與迭代器的IEnumerable/IEnumerator不同,在之前的.NET框架中并沒有對這樣一種編程模型指定“標準化(Formallized)”接口,不過在.NET 4.0的基礎(chǔ)類庫中增加了IObservable及IObserver接口,簽名如下:

public interface IObservable<out T>
{
    IDisposable Subscribe(IObserver<T> observer);
}
public interface IObserver<in T>
{
    void OnCompleted();
    void OnError(Exception error);
    void OnNext(T value);
}

如果我們仔細比較“迭代器”與“觀察者”的標準化接口,則會發(fā)現(xiàn)它們是完全“對偶(dual)”的:

IEnumerable.GetEnumerator方法“輸出”一個IEnumerater對象;IObservable.Subscribe方法“輸入”一個IObserver對象。

在遍歷元素用盡時,IEnumerator.MoveNext方法返回false;在響應(yīng)內(nèi)容用盡時,IObserver.OnCompleted方法被調(diào)用。

在有新元素需要遍歷時,IEnumerator.MoveNext方法返回true,并通過Current屬性“輸出”;在有新元素需要響應(yīng)時,IObserver.OnNext方法被調(diào)用,并通過參數(shù)“輸入”。

在出現(xiàn)錯誤時,IEnumerator.MoveNext方法會“拋出”一個異常;在出現(xiàn)錯誤時,IObserver.OnError方法會被調(diào)用,并通過參數(shù)“接受”異常信息。

至于IObservable.Subscribe方法返回的IDisposable對象,則用于“退定”操作,即讓輸入的IObserver對象再也不需要繼續(xù)響應(yīng)IObservable對象的新元素了。

從比較中可以看出,如果說IEnumerator對象是由數(shù)據(jù)消費者使用的話,那么IObserver對象則是由數(shù)據(jù)的生產(chǎn)者,即IObservable對象使用的。

換句話說,數(shù)據(jù)是由數(shù)據(jù)的生產(chǎn)者“推”給數(shù)據(jù)消費者的,是一種“推(Push)”模型。在這種異步的交互方式中,數(shù)據(jù)消費者不必依賴于數(shù)據(jù)生產(chǎn)者的表現(xiàn)。這就好比我們?nèi)ワ埖瓿燥,點菜后便可坐下和同伴聊聊天或是用手機上上網(wǎng),而作為菜品的生產(chǎn)者,飯店,則會在產(chǎn)出之后主動端上桌來。這么做無疑解放了數(shù)據(jù)的消費者,例如用戶可以在文本框里不斷地輸入字符,而只需等遠程服務(wù)器將提示結(jié)果“推”給客戶端后再顯示即可。

出處:老趙點滴
責任編輯:bluehearts

上一頁 異步編程與響應(yīng)式框架 [1] 下一頁 異步編程與響應(yīng)式框架 [3]

◎進入論壇網(wǎng)絡(luò)編程版塊參加討論

作者文章
使用OpenOffice.org將各類文檔轉(zhuǎn)為PDF
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標準 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大福“敬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻,送禮標配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:2/41個記錄/頁 轉(zhuǎn)到 頁 共4個記錄

藍色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2