我想编写一个库,它可以与 Web 服务器通信,并将其中的数据公开给世界其他地方。Web 服务器没有什么特别之处,它公开了几种 REST 方法,主要是 GET 和 POST。
由于我对 Reactive Extensions 比较陌生(但我已经喜欢它了),所以我寻求建议。我决定图书馆的接口将公开 IObservables。但我不知道如何准确地实现这一点。我想我有几个选择:
1)暴露IObservable<IEnumerable<T>>
。有道理,REST 服务一次返回所有请求的数据。用户调用Subscribe(),只推送一个IEnumerable,调用OnDone。所以 Subscribe() 需要被调用多次。
2)暴露IObservable<T>
。我猜在某些情况下可能是一个不错的选择。Subscribe() 只会被调用一次,为了获取其他数据,会有方法 Refresh() 或 NextPage() (...) 来获取更多数据到流中。(那么IObservable<T> GetResource...
它可能是一个属性,IObservable<T> Resource { get; }
3)忘记Rx,通过事件以老式方式进行(IMO最糟糕的事情)
4)其他方式?
有这方面经验的人吗?我关心的是刷新(请求新数据)、分页、组合结果以及通常具有良好的可维护设计。
谢谢任何建议