Используя Reactive Extensions, я могу придумать несколько способов моделирования операции с побочными эффектами /IO - скажем, подписаться на сообщения из чата. Я мог бы либо принимать параметры (например, чат-комнату), так и Наблюдатель, возвращая одноразовый, т.е.
Disposable SubscribeTo(string chatRoom, Observer<ChatMessage> observer)
или вернуть наблюдаемый параметр, т.е.
Observable<ChatMessage> GetObservableFor(string chatRoom)
При возврате Observable у меня есть выбор между тем, чтобы сделать его "горячим" или "холодным", т.е. выполнять фактическую подписку либо при вызове метода, либо при подписке на наблюдаемый. Кроме того, я мог бы сделать наблюдаемый мультиплексированный или нет, т.е. Использовать одну и ту же базовую подписку, когда есть несколько подписчиков Observable или инициировать новый запрос каждый раз, когда он подписан.
Существует ли передовой подход к этому с использованием RX для операций, которые подписываются на внешний источник событий с параметрами?