Как и в любом наборе инструментов, он может формировать подход к решению проблем.Учитывая молоток, все ваши проблемы могут стать гвоздями.То же самое и с Rx.NET.Это дает вам новый подход.Решить, использовать ли этот подход для решения конкретной проблемы, зависит от вас, и, как и для любого инструмента или технологии, есть свои плюсы и минусы.Вам нужно будет учиться и приобретать опыт, чтобы составить такие сложные суждения для себя.
Для начала, Rx.NET позволяет вам развивать подход программирования «реактивно».Это сродни функциональному программированию в том смысле, что вы объявляете поведение составленным из базового поведения.Rx.NET позволяет вам определять функции над потоками, чтобы давать новые потоки.Этот мощный метод может быть применен практически к любой проблеме, которую вы можете себе представить.
Например, программа, использующая Linq и Rx.NET для рисования движений мыши в виде точек на экране внутри ограничительной рамки, хотела бы что-то вроде:
mouseMovements.Where(box.Contains(m)).Subscribe(DrawPoint)
где mouseMovements будет вашим событием мыши как наблюдаемое
Вы можете объявить
myPointsInBox = mouseMovements.Where(box.Contains(m))
как свою собственную наблюдаемую и иметь несколькоподписчики:
myPointsInBox.Subscribe(DrawPoint)
myPointsInBox.Subscribe(ConnectWithLines)
myPointsInBox.Subscribe(UpdatePointCounter)
вы можете создавать потоки из потоков
var everyThousandthPoint= myPointsInBox.Buffer(….).Select(…)
, а затем что-то делать с ними
everyThousandthPoint.Subscribe(FlashPointCounter)
Вы поймете идею.