برنامه نویسی واکنش گرا (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"));

آیا این نوشته را دوست داشتید؟
linkedin-building-a-reactive-app-with-angular-and-spring-boot-2

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

1397/04/01 1575 بازدید
learning-responsive-web-design-in-one-video

آموزش کامل طراحی وب واکنش گرا در یک ویدئو


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

1397/02/06 1208 بازدید