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

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

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

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

許多模型都可以統(tǒng)一至標(biāo)準(zhǔn)的生產(chǎn)者接口IObservable上,如MouseMove事件便可以認(rèn)做是“永不停止的MouseEventArgs對象的生產(chǎn)者”。而另一方面,單個(gè)異步操作則可以被視為“只產(chǎn)出單個(gè)數(shù)據(jù)便結(jié)束的生產(chǎn)者”。

LINQ to Observable

在許多人眼中,C# 3.0中新增的LINQ特性只是一種用于操作數(shù)據(jù)的DSL,它的主要作用也僅僅是針對IEnumerable或是IQueryable的數(shù)據(jù)操作。

事實(shí)上,LINQ本身的能力遠(yuǎn)不止此。LINQ是一種非常簡單的語言特性,編譯器只是將LINQ查詢語句轉(zhuǎn)化為“字面等價(jià)”的“LINQ標(biāo)準(zhǔn)方法”調(diào)用(如Where,Select等等)和“和Lambda表達(dá)式”參數(shù)(如x => x > 0)而已。但是這里的關(guān)鍵便是“字面等價(jià)”四個(gè)字,LINQ本身并不規(guī)定“LINQ標(biāo)準(zhǔn)方法”是對象的實(shí)例方法還是擴(kuò)展方法,“Lambda表達(dá)式”是構(gòu)造出一個(gè)匿名函數(shù)還是表達(dá)式樹,這一切都是由利用LINQ的類庫來決定的。因此,微軟能夠基于LINQ實(shí)現(xiàn)了PLINQ這樣的并行類庫。直到最近的訪談中,LINQ的設(shè)計(jì)者Erik Meijer依舊認(rèn)為LINQ還是被低估了,他們自己也還在繼續(xù)挖掘LINQ的更多能力。

雖然LINQ本身在語法上只是一些方法調(diào)用,但是它在語義上是針對數(shù)據(jù)流的一系列操作,因此LINQ to Object,LINQ to SQL以及PLINQ可以認(rèn)為是最自然,最符合LINQ語義的應(yīng)用。如今,微軟的“云編程能力團(tuán)隊(duì)(Cloud Programmability Team)”在其“響應(yīng)式框架(Reactive Framework,簡稱Rx)”提供了LINQ to Observable,這又是另一個(gè)LINQ的經(jīng)典使用案例。IObservable本身可以被認(rèn)為是一股“推送數(shù)據(jù)”的數(shù)據(jù)流,因此也可以對其進(jìn)行“過濾”或是“投影”等操作,這便是LINQ的應(yīng)用場景,LINQ to Observable是對IObservable接口實(shí)現(xiàn)的一系列LINQ標(biāo)準(zhǔn)方法。因此,我們可以認(rèn)為,LINQ to Observable是一套與LINQ to Object對偶的類庫,事實(shí)上在響應(yīng)式框架中,還有一套與LINQ to Queryable對偶的LINQ to Qbservable,請注意第一個(gè)字母是Q,我們可以把它看作是LINQ to Observable的“遠(yuǎn)程查詢”版本。

利用LINQ to Object可以編寫出聲明式(表示“做什么”)的代碼,其可讀性往往遠(yuǎn)高于等價(jià)的命令式(表示“怎么做”)代碼。LINQ to Observable也有類似的效果。假設(shè)現(xiàn)在有一個(gè)需求:利用ADWS鍵控制小球的位置。傳統(tǒng)的寫法可能是這樣的:

void OnKeyPress(object sender, KeyPressEventArgs e)
{
    // 如果游戲已經(jīng)開始
    if (isPlaying)
    {
        // 向左且小球沒有超出邊界
        if (e.KeyChar == 'a' && ball.Left > 0)
        {
            ball.Left -= 5;
        }
        // 向上且小球沒有超出邊界
        else if (e.KeyChar == 'w' && ball.Top > 0)
        {
            ball.Top -= 5;
        }
        else ...
    }
    else ...
}

由于KeyPress事件總是不斷觸發(fā),因此我們只能它的事件處理器中進(jìn)行判斷各種狀態(tài),采取不同措施。而如果我們利用LINQ to Observable,則幾乎是另外一種思維方式:

// 過濾出isPlaying時(shí)的keyPress事件
var keyPress = GetKeyPress().Where(_ => isPlaying);
// 過濾出向左移動(dòng)的事件
var moveLeft = from ev in keyPress
               where ev.EventArgs.KeyChar == 'a'
               where ball.Left > 0
               select ev;
moveLeft.Subscribe(_ => ball.Left -= 5);
// 過濾出向上移動(dòng)的事件
var moveTop = from ev in keyPress
              where ev.EventArgs.KeyChar == 'w'
              where ball.Top > 0
              select ev;
moveTop.Subscribe(_ => ball.Top -= 5);

我們可以將“KeyPress事件”視為“推送KeyPressEventArgs對象”這一數(shù)據(jù)流的數(shù)據(jù)源(由GetKeyPress方法返回),那么如今的代碼便是使用LINQ過濾出“需要”的數(shù)據(jù),并針對真正需要的那部分進(jìn)行響應(yīng)。這么做,便將“條件”與“操作”解耦,顯著增強(qiáng)了代碼的語義表達(dá)能力。事實(shí)上,只要補(bǔ)充一些輔助方法,可以利用LINQ表示更為完整復(fù)雜的邏輯。例如,微軟咨詢師Matthew Podwysocki便在博客中展示過一段代碼,基于LINQ to Observable實(shí)現(xiàn)了創(chuàng)建一個(gè)WebRequest對象,設(shè)置屬性,異步發(fā)送及下載數(shù)據(jù)的一系列操作。

出處:老趙點(diǎn)滴
責(zé)任編輯:bluehearts

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

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

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

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

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

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

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

雜⑦雜⑧ Gold NORMANA V2