我使用的API公开具有不同特征的数据:
从语义的角度来看,这些字段是同一个,只有消费模式不同。参考数据可视为常数函数,随时间产生相同的结果。历史数据只是过去发生的流数据。
我正在尝试找到一个统一的模型来对我的查询的所有语义进行编程,并将其与其消费模式区分开来。
这意味着,相同的报价可以以“实时”的方式进行评估,这种方式可以将字段转换为适当的IObservable形式(如果可用),或者以“历史”方式,将“时钟”作为参数并且勾选时的产量值,或“引用”方式,它只产生1个值(仍由查询运行的历史日期装饰..)
我不确定F#中哪些编程工具最适合这个目的,但我想的是引用,我从来没有真正使用过。 它是否适合完成这项任务?
答案 0 :(得分:0)
你自己说:只需使用IObservable
答案 1 :(得分:0)
我做了一些非常相似的事情(不是静态情况,而是流媒体和历史案例),IObservable
绝对是工作的正确工具。实际上,IEnumerable
和IObservable
是双重的,大多数事情你可以写一个,你也可以为另一个写。但是,基于推送的模型(IObservable
)更灵活,作为Rx
的一部分获得的运算符比作为常规IEnumerable
LINQ的一部分的运算符更完整和合适。
使用引文意味着您需要从头开始构建上述内容。
您会发现以下内容有用:
Observable.Return(value)
表示单个静态值list.ToObservable()
用于将历史可枚举变为可观察的IObservable
以便将值流式传输到IObservable 另请注意,如果这有帮助,您可以使用虚拟调度程序勾选observable(上述大多数接受调度程序)。我想这就是你想要的历史案例。
http://channel9.msdn.com/Series/Rx-Workshop/Rx-Workshop-Schedulers