Jas*_*son 8 linq system.reactive
在System.Reactive库未来在.NET 4.0中新的IObservable/IObserver框架是非常令人兴奋的(见本和本链接).
现在推测可能为时尚早,但是还会有一个(缺乏更好的术语)为这些新接口构建的类似IQueryable的框架吗?
一个特定的用例是协助在源处预处理事件,而不是在接收呼叫的链中.例如,如果你有一个非常'chatty'的事件接口,使用Subscribe().Where(...)它将通过管道接收所有事件,客户端进行过滤.
我想知道的是,是否会有类似于IQueryableObservable的东西,这些LINQ方法将被"编译"为Subscribe源中的某些"智能" 实现.我可以想象某些可以使用这种框架的网络服务器架构.或者SQL Server(或任何RDBMS)的附加组件如何允许.NET代码接收新的数据通知(代码中的触发器),并且需要在服务器端过滤这些通知.
小智 9
好吧,你在最新版本的Rx中得到了它,它是一个名为IQbservable的接口(发音为IQueryableObservable).请继续关注有关该主题的第9频道视频,该视频将于下周初发布.
为了稍微调整这个特征,人们应该意识到概念上有三个正交轴到Rx/Ix拼图:
所有IQbservable接口(对于IQueryable的双重接口和IObservable查询的表达式树表示)都是最后一点.有时候人们会混淆查询翻译的行为("如何"运行)与远程方面("运行的地方").虽然通常你翻译查询到一些目标语言(如WQL,PowerShell中,DSQLs云通知服务等)以及远程他们到一些目标系统中,这两个问题可以分离.例如,您可以使用表达式树表示来执行本地查询优化.
关于可能的安全问题,这与IQueryable功能没有什么不同.通常只会远程使用表达式语言,而不是任何"真正的副作用"运算符(无论对于除了原教旨主义功能的语言以外的其他语言).特别是,订阅和运行操作保持在本地并将您带出可查询的monad(因此触发转换,就像GetEnumerator在IQueryable的世界中所做的那样).如何远程订阅行为是我留给读者想象的东西.
今天开始玩最新的一些,让我们知道你的想法.同时请继续关注即将推出的关于这一新功能的第9频道视频,包括对其部分设计理念的讨论.