Реактивные расширения для разработчиков.NET
Я нашел некоторую информацию об этом, но у меня есть несколько путаницы по этому поводу. Поэтому, когда нам нужно использовать этот RX.NET.
Что важно использовать эти предметы? Когда мне нужно это использовать?
1 ответ
Как и в случае с любым набором инструментов, он может определять способ решения проблем. Учитывая молоток, все ваши проблемы могут стать гвоздями. То же самое и с 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)
Вы поняли идею.