tgoop.com/CScience1/2870
Last Update:
Реактивное программирование — способ написания программ, который фокусируется на потоках данных и автоматическом обновлении программы при изменении этих данных. Вместо того чтобы программист должен был вручную отслеживать и обновлять данные, реактивная система сама следит за данными и распространяет изменения там, где это необходимо.
Основные идеи на примере:
Observables: Представьте, что у вас есть источник данных, например, лента новостей в социальной сети. В реактивном программировании этот источник данных — это наблюдаемый, то есть поток, который может эмитировать (отправлять) новые данные (например, новые посты).
Subscribers: Представьте, что вы — подписчик этой ленты новостей. Когда вы подписываетесь на наблюдаемый, вы получаете обновления каждый раз, когда появляется новый пост. Ваш телефон автоматически отображает новые новости, как только они появляются.
Operators: Допустим, вы хотите видеть только новости от ваших друзей. В реактивном программировании вы можете использовать операторы для фильтрации потока данных, чтобы получать только нужные вам сообщения.
Change Propagation: Когда в социальной сети публикуется новый пост, система автоматически уведомляет всех подписчиков, и каждый получает обновление в реальном времени.
Non-blocking: Если вы ждете новые новости, вы не хотите, чтобы ваше приложение зависало и блокировало другие действия. Реактивные приложения обрабатывают данные асинхронно, что означает, что они не блокируют выполнение других задач.
Error Handling: Если что-то идет не так (например, проблемы с сетью), реактивная система может корректно обработать эту ошибку и сообщить вам о ней, не прерывая работы приложения.
Backpressure: Если новости появляются слишком быстро, и система не успевает их обрабатывать, механизм backpressure помогает управлять потоком данных, чтобы не потерять ни одного поста и не перегрузить систему.
Hot and Cold Observables: "Холодные" наблюдаемые начинают работать только тогда, когда кто-то подписывается на них. "Горячие" наблюдаемые вещают данные всем подписчикам, независимо от того, подписаны они сейчас или нет.
Сcheduler (Планировщик): Это как расписание для реактивной системы, которое определяет, когда и как часто система должна проверять данные и отправлять обновления.
Примеры библиотек и фреймворков, поддерживающих реактивное программирование:
• ReactiveX (Reactive Extensions): Набор библиотек для реактивного программирования, включающий RxJava, RxJS, RxSwift и другие.
• RxJava: Библиотека для реактивного программирования на Java, позволяющая работать с асинхронными потоками данных.
• RxJS: Версия ReactiveX для JavaScript, часто используется в сочетании с Angular и другими фронтенд-фреймворками.
• Project Reactor: Реализация реактивного программирования для Java, полностью поддерживающая новый стандарт потоков в Java 9 и выше.
• Kotlin Flow: Встроенная в Kotlin поддержка реактивного программирования, предназначенная для работы с асинхронными потоками данных в Kotlin.
BY Computer Science
Share with your friend now:
tgoop.com/CScience1/2870