使用 Reactive Extensions,我可以想出多种方法来对具有副作用 / IO 的操作进行建模——比如订阅来自聊天室的消息。我可以接受参数(比如聊天室)和一个观察者,返回一个 Disposable,即
Disposable SubscribeTo(string chatRoom, Observer<ChatMessage> observer)
或者在给定参数的情况下返回一个 Observable,即
Observable<ChatMessage> GetObservableFor(string chatRoom)
当返回一个 Observable 时,我还可以选择让它“热”或“冷”,即在调用我的方法或订阅 observable 时执行实际订阅。此外,我可以使 observable 复用或不复用,即当 Observable 有多个订阅者时共享相同的底层订阅,或者每次订阅时发起一个新请求。
对于订阅带有参数的外部事件源的操作,是否有最佳实践方法?