Почему темы не рекомендуются в .NET Reactive Extensions?

В настоящее время я знакомлюсь с платформой Reactive Extensions для .NET и прорабатываю различные вводные ресурсы, которые янашел (в основномhttp://www.introtorx.com)

Наше приложение включает в себя несколько аппаратных интерфейсов, которые обнаруживают сетевые фреймы, это будут мои IObservables, тогда у меня будет множество компонентов, которые будут использовать эти фреймы или выполнять какое-то преобразование данных и создавать фреймы нового типа. Также будут другие компоненты, которые должны отображаться каждые n 'й кадр например. Я убежден, что Rx будет полезен для нашего приложения, однако я борюсь с деталями реализации интерфейса IObserver.

Большинство (если не все) из ресурсов, которые я читал, сказали, что я не должен сам реализовывать интерфейс IObservable, а использовать одну из предоставленных функций или классов. Из моего исследования видно, что созданиеSubject предоставил бы мне то, что мне нужно, у меня был бы мой единственный поток, который читает данные из аппаратного интерфейса и затем вызывает функцию OnNext моегоSubject пример. Различные компоненты IObserver будут получать свои уведомления от этого субъекта.

Мое замешательство исходит из совета, приведенного в приложении кэтот урок где сказано:

Избегайте использования типов предметов. Rx - фактически парадигма функционального программирования. Использование предметов означает, что мы теперь управляем государством, которое потенциально мутирует. Работать с изменяющимся состоянием и асинхронным программированием одновременно очень сложно. Кроме того, многие операторы (методы расширения) были тщательно написаны, чтобы обеспечить правильное и согласованное время жизни подписок и последовательностей; когда вы вводите предметы, вы можете сломать это. В будущих версиях также может наблюдаться значительное снижение производительности, если вы явно используете темы.

Мое приложение очень критично к производительности, и я собираюсь проверить производительность использования шаблонов Rx, прежде чем оно перейдет в рабочий код; однако меня беспокоит то, что я делаю что-то, что противоречит духу инфраструктуры Rx, используя класс Subject, и что будущая версия этой платформы может снизить производительность.

Есть ли лучший способ сделать то, что я хочу? Поток аппаратного опроса будет работать непрерывно независимо от того, есть ли наблюдатели или нет (HW-буфер будет резервировать в противном случае), так что это очень горячая последовательность. Затем мне нужно передать полученные кадры нескольким наблюдателям.

Любой совет будет принята с благодарностью.

Ответы на вопрос(5)

Ваш ответ на вопрос