برنامه نویسی واکنش گرا (Reactive)

دسته بندی: مباحث عمومی

برنامه نویسی واکنش گرا

آنچه در این صفحه می خوانید:

برنامه نویسی واکنش گرا (Reactive) چیست؟

در محاسبات، برنامه نویسی واکنش گرا الگوی برنامه نویسی اعلانی است که مربوط به جریان داده ها و انتشار تغییر است. با استفاده از این الگوریتم، می توانید جریان داده های استاتیک (به عنوان مثال، آرایه ها) یا پویا (به عنوان مثال، فرستنده رویداد) را به راحتی بیان کنید و همچنین وابستگی استنباطی در مدل اجرای همراه وجود دارد که باعث تسهیل انتشار خودکار تغییر گردش داده ها می شود، ارتباط برقرار کنید. مثال دیگر زبان توصیف سخت افزاری مانند Verilog است، که در آن برنامه نویسی واکنش گرا امکان تغییر مدل ها را از طریق انتشار مدارها فراهم می کند. برنامه نویسی واکنش گرا به عنوان راهی برای ساده سازی ایجاد رابط های کاربر تعاملی و انیمیشن سیستم در real-time پیشنهاد شده است. در معماری مدل MVC، برنامه نویسی واکنش گرا می تواند تغییراتی را در مدل اساسی ایجاد کند که به طور خودکار در نمای مرتبط منعکس می شود.

برنامه نویسی واکنش گرا پارادایم برنامه نویسی غیر همزمان است که در اطراف stream یا جریان های داده ساخته شده است. رویدادها، درخواست های سرور، پیام ها و حتی مقادیر همگی از طریق جریان ها منتقل می شوند. برنامه ریزی واکنش گرا سبکی از micro-architecture است که شامل مسیریابی هوشمند و مصرف رویدادها است. واکنش گرایی به این معنا است که شما می توانید با less بیشتر کار کنید، به ویژه می توانید فرآیند بارگذاری بیشتری با threads کمتری انجام دهید.

ویژگی های برنامه نویسی واکنش گرا (Reactive)

استفاده از برنامه نویسی واکنش گرا، سیستم واکنش گرا ایجاد نمی کند. سیستم های واکنش گرا همانطور که در بنیاد مانیفست واکنش نشان داده شده است، سبک معماری برای ساخت سیستم های توزیع پذیر پاسخگو هستند. سیستم های واکنش گرا را می توان دید که سیستم های توزیع شده به درستی انجام می شوند. سیستم واکنش گرا با چهار ویژگی مشخص می شود:

  • واکنش گرا (Responsive): سیستم واکنش پذیر باید در زمان معقول رسیدگی به درخواست ها را انجام دهد.
  • انعطاف پذیر: سیستم واکنش گرا باید در مواجهه با خرابی، پاسخگو بماند، بنابراین باید برای خرابی ها برنامه ریزی شود و به طور مناسب با آن ها برخورد کند.
  • ارتجاعی: سیستم واکنش پذیر باید تحت بارهای مختلف پاسخگو باشد. در نتیجه باید مقیاس بالا و پایین باشد و بتواند بار را با حداقل منابع تحمل کند.
  • پیام محور: مولفه های سیستم واکنش پذیر با استفاده از ارسال پیام ناهمزمان تعامل دارند.
  • تاب آوری: سیستم ها باید در صورت عدم موفقیت بعضی از اجزا پاسخگو باشند.

با وجود سادگی این اصول اساسی سیستم های واکنش گرا، ساختن نوع از آن ها مشکل است. به طور معمول، هر گره باید مدل توسعه غیر مسدود کننده ناهمزمان، مدل دستیابی هم زمان به تسک را در بر بگیرد و از I/O بدون انسداد استفاده کند. اگر در ابتدا به این نکات فکر نکنید، به سرعت شبیه به بشقاب اسپاگتی خواهد شد. با استفاده از آن، کد شما قابل خواندن و قابل درک خواهد ماند. با این وجود، استفاده از برنامه نویسی واکنش گرا سیستم شما را به  سیستم واکنش گرا تبدیل نمی کند. سیستم های واکنش پذیر سطح بعدی هستند.

مزایای برنامه نویسی واکنش گرا (Reactive)

چندین روش محبوب در ایجاد زبان برنامه نویسی واکنش گرا به کار رفته است. مشخصات زبان های اختصاصی که مخصوص محدودیت های مختلف دامنه هستند. این محدودیت ها معمولاً در real-time، جاسازی یا سخت افزار مشخص می شوند. رویکرد دیگر شامل مشخصات زبان های عمومی است که شامل پشتیبانی از واکنش پذیری است. در تعریف دیگر رویکردهای دیگر بیان شده است و استفاده از کتابخانه های برنامه نویسی یا زبان های اختصاصی دامنه، که واکنش پذیری را در کنار یا بالای زبان برنامه نویسی امکان پذیر می سازند. مشخصات و استفاده از این رویکردهای مختلف منجر به تبادل توانایی در زبان می شود. به طور کلی، هرچه زبان محدودتر باشد، کامپایلرها و ابزارهای تجزیه و تحلیل آن قادر به آگاه ساختن توسعه دهندگان هستند (به عنوان مثال، در انجام تجزیه و تحلیل برای اینکه آیا برنامه ها می توانند در real-time اجرا شوند). مبادلات عملکردی در ویژگی ممکن است به وخیم تر بودن کاربرد عمومی زبان منجر شود. در زبان های برنامه نویسی جاوا، جاوااسکریپت، پایتون، اسکالا، GO و سی شارپ از برنامه نویسی واکنش گرا بهره خواهید برد.

از دیگر مزایای برنامه نویسی واکنش گرا می توان به موارد زیر اشاره کرد:

  • اجتناب از "callback hell"
  • دارای مکانیزم استاندارد برای ریکاوری خطا
  • دارای روش بسیار دقیق و روشنی برای ساخت عملیات غیرهمزمان
  • مدیریت راحت UI interactions/events
  • API هایی را برای دسترسی به پایگاه داده، UI، محاسبات، دسترسی به شبکه و همه چیزهایی که به آن نیاز دارید ارائه می دهد.
  • هماهنگ سازی کار به طور موازی و اجرای برخی از کد زمانی که همه چیز انجام شده است.
  • راه فوق العاده آسان برای UI thread
  • ایجاد هم زمانی
  • اپراتورها مقدار زیادی از کد تست شده را ارائه می دهند که می تواند به شما در حل وظایف کمک کند.

مثال برنامه نویسی واکنش گرا (Reactive)

اپراتور پایه فقط Observable تولید می کند که نمونه عمومی را قبل از اتمام، رشته "Hello" تولید می کند. هنگامی که می خواهیم اطلاعاتی را از ناظر دریافت کنیم، رابط Observable را پیاده سازی می کنیم و سپس در مورد Observer مورد نظر مشترک می شویم:

Observable<String> observable = Observable.just("Hello");
observable.subscribe(s -> result = s);
assertTrue(result.equals("Hello"));

آیا این نوشته را دوست داشتید؟
pluralsight-rxjs-in-angular-reactive-development

آموزش RxJS در Angular: توسعه واکنش گرا


در این دوره آموزشی RxJS در Angular، شما توانایی توسعه اپلیکیشن های خود با رویکردی واضح تر و واکنش پذیرتر با استفاده از RxJS را کسب خواهید کرد. در ابتد...

1400/01/29 853 بازدید
pluralsight-ng-conf-19-reactive-forms-demystified

کنفرانس ng-conf '19: ابهام زدایی Reactive Forms


فرم های واکنش گرا، یک پایه اصلی در اکوسیستم انگولار است. در این ورکشاپ، ما نحوه استفاده از قدرت فرم های واکنش گرا در ساخت راه حل های حالت محور را نشان...

1399/11/28 447 بازدید
pluralsight-swiftfest-boston-19-the-reactive-code-that-broke-my-brain-and-changed-my-mind-just-in-time-for-combine

کنفرانس SwiftFest Boston '19: کد واکنش گرایی که مغزم را متلاشی کرد و ذهنم را تغییر داد (حالا وقت Combine است)


Lou Franco ایده های اولیه RxSwift) Rx و Combine) را پوشش خواهد داد. این کنفرانس کمتر درباره عملگرهای Rx و بیشتر درباره نحوه استفاده از Rx برای ساخت یک...

1399/11/13 277 بازدید
pluralsight-unit-testing-rxjs-with-marble-diagrams

آموزش تست واحد RxJS با Marble Diagrams


کتابخانه RxJS یکی از محبوب ترین کتابخانه ها در دنیای جاوااسکریپت است. RxJS قابلیت برنامه نویسی واکنش گرا در اپلیکیشن شما را ارائه می کند. در این دوره،...

1399/11/12 508 بازدید
pluralsight-ng-conf-19-how-to-build-your-own-rxjs-operators

کنفرانس ng-conf '19: نحوه ساخت RxJS Operators


با گذر از مبانی اپراتورهای کانال سازی با RxJSl، آماده اید تا قدرت کامل برنامه نویسی واکنش گرا را آزاد کنید! وقت آن رسیده به فکر ایجاد اپراتورهای شخصی ...

1399/11/08 316 بازدید
pluralsight-ng-conf-19-ngrx-a-reactive-state-of-mind-day-2

کنفرانس NgRx :ng-conf '19: یک حالت ذهنی واکنش گرا - روز دوم


بیایید NgRx را مستقیماً از تیم اصلی یاد بگیرید! Brandon Roberts و Mike Ryan یک راهکار اساسی برای ساخت اپلیکیشن های مقیاس پذیر را با استفاده از معماری ...

1399/11/06 370 بازدید
pluralsight-ng-conf-19-ngrx-a-reactive-state-of-mind-day-1

کنفرانس NgRx :ng-conf '19: یک حالت ذهنی واکنش گرا - روز اول


بیایید NgRx را مستقیماً از تیم اصلی یاد بگیرید! در روز اول، اصول NgRx را با مباحثه عمیق، تمرینات، و لابراتوارهای کد بررسی خواهید کرد. سپس نوشتن اکشن ه...

1399/11/06 380 بازدید
pluralsight-reactive-programming-in-java-12-with-rxjava-2

برنامه نویسی واکنش گرا در Java 12 با RxJava 2


در این دوره، شما توانایی پیاده سازی تکنیک های برنامه نویسی واکنش گرا برای استفاده کامل تر از پردازنده چند هسته ای کامپیوتر مدرن را کسب خواهید کرد. در ...

1399/09/19 1112 بازدید
pluralsight-droidcon-boston-19-achieving-fully-reactive-code-using-both-livedata-and-rxjava

دوره Droidcon Boston '19: دستیابی به کد کاملا واکنشگرا با LiveData و RxJava


در این سخنرانی، بررسی خواهیم کرد که برنامه نویسی واکنشگرا و تاریخچه آن چیست. سپس به روش هایی که جامعه Android از تکنولوژی های واکنشی استفاده کرده است ...

1399/08/12 705 بازدید
linkedin-building-a-reactive-app-with-angular-and-spring-boot-2

ساخت برنامه های واکنشگرا با Angular و Spring Boot 2


Angular به دلیل ایجاد برنامه های تک صفحه ای غنی و داده محور (SPA) معروف است، در حالی که Spring Boot یک فریمورک محبوب و قدرتمند برای توسعه بک اند است. ...

1399/01/11 3111 بازدید
linkedin-rxjava-design-patterns-for-android-developers

آموزش RxJava: الگوهای طراحی برای توسعه دهندگان اندروید


در این دوره ی پروژه محور، مدرس دوره به شما درباره ابعاد مهم RxJava آموزش می دهد تا از الگوهای طراحی ساده در برنامه نویسی واکنش گرا استفاده کند. همچنین...

1398/12/26 5425 بازدید زیرنویس دارد
packtpub-hands-on-reactive-programming-with-java-12

آموزش کاربردی برنامه نویسی واکنش گرا با Java 12


این دوره یک راهنمای گام به گام برای ایجاد اپلیکیشن با Java 12 با استفاده از برنامه نویسی واکنش گرا می باشد. شما تجربه کارآمدی خواهید داشت. می توانید ب...

1398/12/13 1801 بازدید
udemy-pre-programming-everything-you-need-to-know-before-you-code

دوره پیش از برنامه نویسی: همه چیزهایی که قبل از برنامه نویسی باید بدانید


درک بهتر اصول اولیه عملکرد برنامه نویسی . درک اصول نحوه کارکرد کامپیوترها و نحوه ارتباط آن با تکنولوژی مدرن وب . انتخاب زبان برنامه نویسی و مسیر ادامه...

1398/12/05 3540 بازدید
packtpub-hands-on-reactive-microservices-in-net-core

آموزش میکروسرویس های واکنش گرا در NET Core.


در این دوره یک سیستم میکروسرویس واکنش گرای توزیع شده اولیه با استفاده از  .NET Core و Apache Kafka برای ارسال پیام از طریق میکروسرویس ها ایجاد می کنید...

1398/05/21 7959 بازدید
linkedin-reactive-spring

آموزش Spring واکنش گرا


آموزش ویدئویی رایگان ساخت اپلیکیشن واکنش گرا با Spring 5 و تست واحد اپلیکیشن...

1398/01/07 2538 بازدید
packtpub-reactive-programming-in-python-video

آموزش برنامه نویسی واکنش گرا در پایتون


این ویدیو راهنمای شما برای شروع برنامه نویسی Reactive در پایتون خواهد بود. شما با مفاهیم کلی برنامه نویسی Reactive شروع خواهید کرد و سپس به تدریج با ج...

1397/09/27 1858 بازدید
technics-publications-android-reactive-programming-with-rxjava

آموزش برنامه نویسی واکنش گرا در اندروید با RxJava


RxJava تبدیل به مهم ترین مهارت برای توسعه اندروید است. RxJava، ماشین مجازی جاوا Reactive Extension را پیاده سازی می کند. در این مجموعه ویدیویی چهار کل...

1397/07/19 4155 بازدید
packtpub-getting-started-with-reactive-programming-with-kotlin

آموزش برنامه نویسی واکنش گرا با Kotlin


برنامه نویسی واکنش گرا به یک گرایش برای شرکت های نرم افزاری تبدیل شده است، به خصوص اگر سرویس های مورد استفاده هزاران کاربر در ابر باشد. استفاده از محا...

1397/04/01 2033 بازدید