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

在.NET反應性框架中實現LINQ

開發 后端
Erik Meijer和Wes Dyer創建了.NET反應性框架(Reactive Framework, Rx),即利用LINQ to Object的數學對偶性,允許程序員在事件使用LINQ。Erik和Brian Beckman證實了IObservable是連續的Monad。

反應性編程和.NET反應性框架并不是新事物。它早已經為Cells(一種Common Lisp的數據流擴展),和支持高階反應性編程的Python擴展Trellis所應用。在C#中,程序員在指定異步操作指定回調,或事件處理程序的時候使用反應性編程。在異步操作完成或者事件觸發的時候,就會調用方法并作為對該事件的反應。

在.NET反應性框架中,LINQ to Object使用IEnumerable和IEnumerator兩個接口來迭代數據集。枚舉器的MoveNext()方法用于從前一個元素枚舉到下一個元素,而Current屬性則用于檢索個別的元素。這種機制采取廣泛使用的簡潔易懂的“拉(pull)”過程。Erik還發現IEnumerable有對偶特性:一個是可以從集合中提取數據,同時可以把數據推進同樣的集合。這意味著另一種反應性編程的方式。

理論上來說,IEnumerable接口可對集合添加對象,但是由于它的阻塞性所以不能在異步操作中進行。那就是為什么該團隊引入了兩個新的接口:IObservable和IObserver。人們可以把IObserver賦給數據集并把它作為IObservable訂閱。當一項新的數據可用時,就可以通過傳遞IObservable來把它壓進集合,接著再傳給IObserver。微軟展示平臺控件小組的開發人員Jafar Husain解釋IObserver模式的使用方法如下:

要遍歷IObservable,你需要做的就是執行與IEnumerable相反的操作。創建IObserver,把它賦給IObservable,接著IObservable通過調用自身的方法來把數據壓進IObserver。在IObservable對Observer調用OnUpdate方法的時候,就相當于IEnumerable方法使用關鍵字yield向IEnumerable傳遞信息。類似地,在IObservable對Observer調用OnCompleted方法的時候,就相當于IEnumerable使用關鍵字break來表示沒有數據一樣。

這樣做的好處是什么呢?這種方法在處理事件的時候有著極大的優勢。我們可以把IObserver附加到鼠標事件并對這些事件異步記錄到一個集合當中。接著就可以使用LINQ來迭代數據,并進行相應的處理。要說明它在處理GUI事件的威力,Rx框架已經在Silverlight Toolkit單元測試中使用,并包含源代碼,封裝在System.Reactive.dll中。這也將會包含在.NET 4.0。

軟件架構師和天文物理學家Brian Beckman在視頻采訪Erik Meijer時,證實了IObservable是連續的Monad,即IEnumerable Monad的對偶性。Erik也介紹了如何通過二元化IEnumerable來構建IObservable 接口。

在.NET反應性框架中實現LINQ就介紹到這里。

【編輯推薦】

  1. 使用LINQ查詢泛型字典Dictionary
  2. 淺析Linq to SQL更新數據時容易忽略的問題
  3. 淺談LINQ to SQL集成數據庫語言優劣
  4. LINQ橫向對比foreach方法
  5. 淺談LINQ如何插入刪除和更新數據庫記錄備注
責任編輯:彭凡 來源: InfoQ
相關推薦

2024-06-18 13:17:02

數據庫框架

2009-04-09 14:42:19

ASP.NETLINQ數據庫

2009-07-29 08:58:20

NHibernate ORM框架

2010-09-01 15:30:24

SQL刪除

2009-09-14 16:46:15

LINQ to XML

2009-09-10 14:02:08

LINQ ASP.NE

2009-09-10 14:47:53

Linq .NET查詢

2009-09-14 13:37:25

LINQ ADO.NE

2010-01-19 15:21:55

VB.NET區域性

2009-09-16 17:07:00

linq實現Left

2025-06-04 08:10:00

發件箱模式.NET數據庫

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2009-08-13 11:22:59

LINQ和ADO.NE

2009-09-08 09:12:12

LINQ構建框架設計

2010-02-05 08:32:32

ASP.NET MVC

2009-09-08 16:55:01

Linq實現XML轉換

2009-09-15 16:44:44

Linq排序

2009-09-17 09:24:57

Linq實現分頁

2009-09-15 15:18:40

Linq連接查詢

2009-09-14 09:46:00

LINQ to SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 琪琪午夜伦伦电影福利片 | 精品国产一区二区三区久久 | 产真a观专区 | www.国产日本| 99精品一区二区 | 亚洲免费视频一区 | 亚洲一区在线播放 | 99精品视频在线观看 | 欧美亚洲视频在线观看 | www.色.com| 欧美极品在线观看 | 国产成人精品一区二区三区网站观看 | 97久久久| 国内自拍视频在线观看 | 日日干天天干 | 日韩在线不卡 | 国产精品久久久久久吹潮日韩动画 | 国产精品久久久久久久久免费相片 | 国产精品a久久久久 | 亚洲精品一区二区三区在线 | 一区二区三区在线播放 | 黄色免费在线网址 | av在线影院 | 华丽的挑战在线观看 | 欧美日韩一区二区三区不卡视频 | 国产午夜精品一区二区三区四区 | 日韩一区二区在线免费观看 | 视频一区二区中文字幕 | 精品久久久久久亚洲综合网站 | 91精品国产色综合久久不卡蜜臀 | 成人精品福利 | 人妖一区| 欧美综合国产精品久久丁香 | 日韩激情在线 | 天堂一区二区三区四区 | 欧美日韩一 | 91看国产 | 色狠狠一区 | 日韩欧美在线视频 | 久久精品一区二区三区四区 | 午夜一区二区三区在线观看 |