У меня есть библиотека .NET, которая, как часть объектной модели, будет излучать уведомления о некоторых событиях.
Мне кажется, что основными плюсами событий являются доступность для новичков (и простота в определенных контекстах потребления) с основным отрицательным состоянием в том, что они не скомпонован и, следовательно, сразу же принудительно вставляются в Observable.FromEvent
*, если вы хотите сделать что-нибудь интересное, не пиши кусок кода.
Характер решаемой проблемы таков, что трафик событий не будет особенно частым или объемным (он определенно не кричит RX), но, безусловно, нет необходимости поддерживать версии .NET до 4.0 [и, следовательно, я может использовать встроенный интерфейс IObservable
в System.Reactive
без каких-либо существенных зависимостей от потребителей]. Я заинтересован в <общих > рекомендациях некоторых конкретных конкретных предпосылках, чтобы предпочесть IObservables
более event
с точки зрения дизайна API, хотя - независимо от того, где мой конкретный случай может стоять на event
- IObservable
.
Итак, вопрос:
Есть ли что-то конкретное, я делаю значительно сложнее или проблематично для потребителей API, если я иду с самой простой вещью и выставляю event
вместо IObservable
Или, пересчитано: помимо того, что пользователь должен сделать Observable.FromEvent
*, чтобы иметь возможность составлять события, действительно нет никакой причины предпочитать IObservable
над event
при экспонировании уведомления в API?
Цитаты проектов, использующих IObservable
для не-кричащих-RX файлов или руководств по кодированию, были бы идеальными, но не критичными.
NB, затронутый в комментариях с @Adam Houldsworth, меня интересуют конкретные вещи по поверхности API библиотеки .NET 4+, а не обзор мнений относительно того, что представляет собой лучшую "архитектуру по умолчанию" для наше время:)
NB этот вопрос был затронут в IObserver и IObservable в С# для Observer vs Delegates, Events и IObservable vs Plain События или почему я должен использовать IObservable?. Аспект вопроса, который я задаю, не рассматривался ни в одном из ответов из-за нарушений СРП. Еще один слегка перекрывающий вопрос - Преимущества .NET Rx над классическими событиями?. (Использование IObservable вместо событий) [Использование IObservable вместо событий относится к той же категории.