Мы использовали RX с большим успехом на двух проектах (Silverlight UI) уже. В начале было simplify the WCF access layer). Рациональным было то, что в худшем случае мы всегда можем вернуться к стандартным (обратным) способам делать вещи, не затрагивая более высокие уровни пользовательского интерфейса.
Мы мало знали, что RX похож на привыкание к наркотикам - как только вы начнете использовать его, просто нет возврата. Как и вирус, он быстро распространился с этого уровня связи на нижнем уровне вплоть до компонентов пользовательского интерфейса:
- мы начали с простого синтаксического сахара, чтобы упростить доступ к услугам WCF.
- оттуда это был естественный шаг для расширения RX на сервер-клиент асинхронной передачи сообщений
- после этого использовать RX, чтобы объединить оба этих способов для клиента общаться с сервером в один так ViewModels являются агностиками о том, как они получают сообщения по умолчанию.
И тогда это была полная капитуляция:
- нужно обрабатывать сообщения, приходящие из строя?
- необходимо, чтобы вспышка ячейки на сетке при изменении цены?
- имеют проблему с производительностью, поскольку клиент подвергается бомбардировке сообщениями с сервера?
- есть рудиментарная логика CEP?
Ну, угадайте, что есть оператор RX для этого;) (и если есть нет - вы можете легко просто написать один)
Самая трудная часть всего этого было преодолеть, что «моя-brain- болит-так плохо ", чувствуя, что все в нашей команде испытали вначале. Мозг простого смертного, обусловленного многолетним кодированием handle-my-event-by-this-callback, просто не связан с тем, как RX видит мир. В результате RX-код (особенно когда он постепенно становится все более плотным при обработке более сложных сценариев) для неподготовленного ума выглядит как полная абракадабра, которая забавно приводит к тому, что кролик вытащил из кажущейся пустой шляпы. К сожалению, реальность заключается в том, что в производстве нет места для магии в производственном коде, и поэтому вся команда должна быть на борту, а это означает, что всем придется пройти через этот болезненный процесс переделания их мозгов в то, что кажется сначала очень неестественным способом.
Я бы сказал, что это человеческий фактор, а не сам API RX, который является самым большим препятствием для эффективного внедрения RX. Но мальчик стоит того!
Я видел это сообщение в блоге Роджера Альсинга еще раз, используя Rx для реализации шины сообщений, которая, как я думал, была опрятной: http: // rogeralsing.com/2010/01/23/rx-framework-building-a-message-bus/ – theburningmonk
API постоянно колеблется, поэтому я не принял зависимость Rx от любого из моего производственного кода; и я не знаю, кто еще это делает. –
Согласны, имели ту же проблему с Pex, каждая новая версия имела так много изменений, и она прерывает мой код. – theburningmonk