2010-10-31 7 views
38

Мне интересно, что означают новые асинхронные функции C# 5.0 для Rx - Reactive Extensions? Кажется, что это не замена, но они, похоже, перекрываются - Task и IObservable.C# 5.0 async/await feature и Rx - Reactive Extensions

EDIT: Task vs IObservable: when to use what?

+11

«Async/await» не является заменой для Rx больше, чем LINQ является заменой для SQL. Вы можете использовать LINQ для связи с SQL-концом; вы можете использовать асинхронность на основе задач с Rx для организации работы, инициируемой потоками событий. Эти технологии должны укреплять друг друга, а не конкурировать. –

ответ

18

Проверьте также: TPL Dataflow Overview о TDF и Rx:

Внимательные читатели могут заметить некоторое сходство между TPL DataFlow и Reactive Extensions (Rx), в настоящее время можно загрузить с сайта DevLabs прототипов. Rx преимущественно ориентирован на координацию и составление потоков событий с помощью API на основе LINQ, предоставляя богатый набор комбинаторов для управления IObservables данных. Напротив, поток данных TPL ориентирован на предоставление строительных блоков для передачи сообщений и параллелизации приложений с интенсивным использованием процессора и ввода/вывода с высокой пропускной способностью и низкой задержкой, а также предоставляет разработчикам явный контроль над тем, как данные буферизуются и перемещаются по системе , Таким образом, поток данных Rx и TPL, хотя потенциально рассматривается как похожий на уровне 30 000 футов, адресует различные потребности. Тем не менее, TPL Dataflow и Rx обеспечивают лучшую историю.

13

Джефф пишет на Rx forum, что Rx будет по-прежнему использоваться, чтобы организовать многократный Event Driven задачу, Rx имеет выпустить новую версию, которая включает в себя IAsyncEnumerable использовать новые функции асинхронных в Rx.

+1

+1 Кроме того, Барт Де Смит немного рассказал об асинхронном и Rx (упоминании об IAsyncEnumerable) в своем разговоре PDC «LINQ, Take Two» http://player.microsoftpdc.com/ –