Messages

PagesMy Pages

همین امروز فروشگاه آنلاین را بسازید

همین امروز فروشگاه آنلاین را بسازید

Create an Online Store Today!

Create an Online Store Today!

Viraweb123 Editor | Group Widget

Viraweb123 Editor | Group Widget

دامنه مشتری ها

دامنه مشتری ها

ViraWeb123 | Contact us

ViraWeb123 | Contact us

App Market by Viraweb123

App Market by Viraweb123

چگونه یک وبسایت ایجاد کنیم؟

چگونه یک وبسایت ایجاد کنیم؟

How To Create A Website

How To Create A Website

نمونه کاری های وب سایت

نمونه کاری های وب سایت

ویرا وب برنامه حرفه ای ها

ویرا وب برنامه حرفه ای ها

Website Examples

Website Examples

مشاغل

مشاغل

نظرات و پیشنهادات ویراوب

نظرات و پیشنهادات ویراوب

Viraweb Reviews and Testimonials

Viraweb Reviews and Testimonials

خطوط قرمز

خطوط قرمز

Viraweb Features

Viraweb Features

Abuse Reporting

Abuse Reporting

حریم شخصی

حریم شخصی

Viraweb123 | Search domain

Viraweb123 | Search domain

Viraweb123 Privacy

Viraweb123 Privacy

قوانین و مقررات ویراوب

قوانین و مقررات ویراوب

Terms Of Use

Terms Of Use

طراحی های برند ویراوب

طراحی های برند ویراوب

با اپلیکیشن viraweb123 درآمد کسب کنید

با اپلیکیشن viraweb123 درآمد کسب کنید

Viraweb123 Brand Design

Viraweb123 Brand Design

آموزش  ویراوب

آموزش ویراوب

viraweb123's Experts Program

viraweb123's Experts Program

Viraweb123 | Getting start

Viraweb123 | Getting start

الگوی مقاله‌های بلاگ

الگوی مقاله‌های بلاگ

seo-video

seo-video

تمام ویجت‌هایی که برای بلاگ استفاده شده، بر اساس تم سایت ۱۲۳

تمام ویجت‌هایی که برای بلاگ استفاده شده، بر اساس تم سایت ۱۲۳

seo-text

seo-text

seo-image

seo-image

تماس با ما

تماس با ما

template6

template6

ویراوب|آموزش ساخت صفحه جدید

ویراوب|آموزش ساخت صفحه جدید

دامنه

دامنه

template3

template3

template2

template2

template5

template5

template4

template4

template7

template7

template1

template1

website-template

website-template

seo-education

seo-education

editor-widget-slider

editor-widget-slider

seo-page

seo-page

شروع کار با گوگل انالاتیک

شروع کار با گوگل انالاتیک

editor-wedget-text

editor-wedget-text

صفحه اصلی سایت

صفحه اصلی سایت

editor-widget-link

editor-widget-link

editor-widget-image

editor-widget-image

widget-group

widget-group

seo-widget-image

seo-widget-image

حریم خصوصی

حریم خصوصی

ساخت سایت معرفی

ساخت سایت معرفی

خرید و جستجوی دامنه

خرید و جستجوی دامنه

راه اندازی سایت‌های تجاری

راه اندازی سایت‌های تجاری

Home Login Logout

زمانی که برنامه نویسی واکنش‌گرا (Reactive programming - RP) به عنوان یک ابزار وارد محیط‌های توسعه شد، یک مفهوم جدید و یا لبه علم به حساب نمی‌آمد. این مفهوم در سال ۱۹۶۰ میلادی به بازار IT جهان وارد شد و از آن زمان تا کنون کارهای زیادی بر اساس آن به بازار معرفی شده است. اما متاسفانه مانند بسیاری از مفاهیم علمی دیگر، این مفهوم نیز از زمان ورود به بازار به بروز برداشت‌های نادرست منجر شده که تا کنون این برداشت‌ها از این نوع مدل توسعه نیز وجود دارد. این فضا تا جایی پیش رفته که حتی برخی از کارشناسان بر این باور هستند که اصول چهارگانه‌ای که در بیانیه واکنشگرا معرفی شده نیز حتی به این برداشت‌های اشتباه دامن زده.

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

فهرست موارد

  • در یک جمله کوتاه، برنامه نویسی واکنش‌گرا چیست؟
  • دقیقا انتشار تغییرات و رویدادها در برنامه نویسی واکنش‌گرا چیست؟
  • آیا برنامه نویسی و سیستم‌های واکنش‌گرا یکی هستند؟
  • چرا به واکنش‌گرایی در برنامه نویسی نیاز داریم؟
  • چطور شروع به برنامه نویسی واکنش‌گرا در جاوا کنیم؟
  • با برنامه نویسی واکنش‌گرا در دنیای واقعی به چه چیزی دست خواهیم یافت؟
  • چطور یک سیستم موجود رو با مدل برنامه نویسی واکنش‌گرا تبدیل کنیم؟
  • چه زمانی نباد از برنامه نویسی واکنش‌گرا استفاده کرد؟

در یک جمله کوتاه، برنامه نویسی واکنش‌گرا چیست؟

برنامه نویسی واکنش‌گرا یک سبک و پارادایم از برنامه نویسی است که در آن به صورت غیر هم زمان (asynchoronous) به کار با داده‌ها و یا تغییرات آن می‌پردازد. این به آن معنی است که در این سبک برنامه نویسی سیستم‌ها با ترتیب خاص (بر اساس جریان ورودی، درجه اهمیت داده های ورودی و یا مدل کسب و کار) تغییر داده‌ها  و رویدادها  را پردازش می‌کند.

دقیقا انتشار تغییرات و رویدادها در برنامه نویسی واکنش‌گرا چیست؟

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

  1. با سرایدار هماهنگ کنم که اتاق جلسه را تمیز کند
  2. برای پذیرایی سفارش تنقلات بدم و آنها را روی میز بچینم
  3. تمام دوستان رو به اتقاق جلسه دعوت کنم
  4. و با دوستان در مورد این موضوع صحبت کنم

اولین روشی که من می‌توانم این کارها را انجام دهم روش همزمان است: اول با سرایدار اتاق را تمیز می‌کنیم و بعد از اینکه اتاق تمیز شد سفارش تنقلات رو بدهیم و منتظر رسیدن آنها شویم، بعد از آن به همه دوستان زنگ بزنم و زمانی که همه به اتاق جلسه آمدند جلسه رو شروع کنیم و در مورد موضوع صحبت کنیم.

اما به یه بهبود کم می‌توانم تمام این کارها را به صورت غیر همزمان انجام بدهم: سرایدار را به اتاق جلسه می‌برم و همزمان که سرایدار مشغول به تمیز کردن اتاق است سفارش تنقلات را بدم و به همه دوستان زنگ بزنم و در نهایت هرکس به اتاق جلسه رسید مشغول صحبت در رابطه با موضع برنامه نویسی واکنش‌گرا شوم. این روش یک روش کاملا غیر همزمان هست و بدیهی است که مشخص نیست کدام اتفاق در کدام زمان انجام خواهد شد. مثلا ممکن هست زمانی که جلسه تمام شد تنقلات به جلسه برسد.

بهتر هست که روش غیر همزمان را بهبود بدهیم. در این کارها یک دسته باید قبل از شروع جلسه انجام بشه. بنابر این بعد از اینکه سرایدار مشغول به تمیزکردن اتاق شد، سفارش تنقلات را می‌دهم و منتظر می‌شود که این دو کار تمام شود. زمانی که هر دو کار انجام شد به تمام دوستان اطلاع می‌دهم که برای جلسه به اتاق بیایند. این دقیقا چیزی است که در برنامه نویسی واکنش‌گرا انجام می‌شود. یعنی در مدل واکنش‌گرا کارهای به صورت غیر همزمان انجام می‌شود و ترکیب‌های جدیدی ایجاد می‌کند که در نهایت منجر به فعال شدن دسته‌ای دیگر از کارهای غیر همزمان می‌شود.

آیا برنامه نویسی و  سیستم‌های واکنش‌گرا یکی هستند؟

نه، این دو یکی نیستند. با وجود اینکه از این دو عبارت به عنوان جایگزین یکدیگر استفاده می‌شوند اما این دو به هیچ عنوان معادل هم نیستند و در عمل دو چیز کاملا جدا باید در نظر گرفته شوند.

سیستم‌های واکنش‌گرا یک مرحله بعد از برنامه نویسی واکنش‌گرا است. این مرحله از واکنش‌گرایی به طراحی و معماری گفته می‌شود که در آن امکان طراحی و راه اندازی سیستم‌ها انعطاف پذیر و واکنش‌گرا باشد.

برای طراحی یک سیستم واکنش‌گرا نیازی به استفاده از یک برنامه نویسی واکنش‌گرا نیست که البته استفاده از برنامه نویسی واکنش‌گرا در این نوع سیستم‌ها می‌تواند بسیار مفید باشد. این ترکیب می‌تواند منجر به یک سیستم کاملا منعطف و واکنش‌گرا شود که بسیار قابل توسعه بوده و از تمام منابع بهینه استفاده می‌کند.

چرا به واکنش‌گرایی در برنامه نویسی نیاز داریم؟

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

بنابر این برنامه نویسی واکنش‌گرا به صورت خاص به معنی ساده کردن کار با داده‌ها و رویدادها به صورت غیر همزمان که در مقابل روش‌های معمول در برنامه نویسی شئی‌گرایی مطرح می‌شود.

چطور شروع به برنامه نویسی واکنش‌گرا کنیم؟

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

جاوا در آخرین نسخه‌هایی که ارائه کرده (از نسخه ۱.۸ به بعد) تلاش زیادی برای حمایت از برنامه نویسی واکنش‌گرا به صورت داخلی کرده است اما تلاش‌ها هنوز منجر به یک ساختار مناسب و همه پسند در برنامه نویسی واکنش‌گرا نشده است. اما در کنار این تلاش‌ها بسته‌های متفاوتی از برنامه نویسی واکنش‌گرا ارائه شده است که بسیار محبوب هستند و در برنامه‌نویس‌های واکنش‌گرا استفاده می‌شوند.

بسته RxJava اولین بسته‌ای نرم افزاری است که API‌ برنامه نویسی واکنش‌گرا را در جاوا معرفی کرد. این بسته بر اساس ساختارهای Java6 معرفی شده و بنابر این برنامه سازی واکنش‌گرا و مبتنی و رویداد را برای محیط اندروید نیز فراهم می‌کند.

یکی دیگر از بسته‌های نرم افزاری Spring Reactor‌ است. این بسته نیز بسیار شبیه به API معرفی شده در RxJava طراحی شده و یک مفهوم انتزائی از برنامه نویسی واکنش‌گرا را ارائه می‌کند، اما بر خلاف آن بر اساس مدلهای معرفی شده در Java8 کار می‌کند.

با برنامه نویسی واکنش‌گرا، در دنیای واقعی به چی چیزی دست خواهیم یافت؟

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

  1. کارایی بهتر
  2. تجربه کاربری مناسب
  3. سادگی توسعه و به روز رسانی

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

از آنجا که برناهم نویسی واکنش‌گرا امکان به روز کردن روال‌های پردازشی را به سادگی فراهم می‌کند، لذا به سادگی می‌توان بر اساس نیازهای جدید کاربر UX را بهبود داد.

مهم‌ترین دلیلی (که ریشه تمام قابلیت‌های واکنش‌گرایی است) سادگی توسعه و به روز رسانی سیستم است. مدل برنامه نویسی به گونه است که خوانایی کد را در حالی بالا می‌برد که پردازش‌ها به صورت غیر همزمان پیاده سازی شده‌اند. و این شاهکار برنامه نویسی واکنش‌گرا است.

چگونه یک سیستم موجود را به برنامه نویسی واکنش‌گرا تبدیل کنیم؟

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

ماهی رو هرزمان که از آب بگیری تازه است. برای نمونه فرض کنید که شما یک سایت دارید که امکاناتی را به کاربران خود ارائه می‌کند. شما می‌خواهید یک کد رهگیری را به سیستم اضافه کنید. این بخش را می‌توانید به مدل واکنش‌گرا پیاده سازی کنید. 

کی از برنامه نویسی واکنش‌گرا استفاده کنیم؟

برنامه نویسی واکنش‌گرا زمانی که با تعداد کاربران زیادی روبرو هستید و یا اینکه حجم بالای از داده‌ها برای پردازش وجود دارد بسیار مفید است:

  • شبکه‌های اجتمائی، پت
  • بازی‌ها
  • برنامه‌های ویدیو و صوتی

ماژولهای زیر از هر نوع نرم افزاری که شما در نظر داشته باشید محل مناسبی برای پیاده سازی با استفاده از راهکارهای برنامه نویسی واکنش‌گرا است:

  • واسطه‌های کاربری که به شدت با کاربر در تامل هستند
  • پراکسی سرورها و لودبالانسر
  • یادگیری ماشین و هوش مصنوعی
  • تحلیل جریان‌های داده به صورت زمان حقیقی

چه زمانی نباید از برنامه نویسی واکنش‌گرا استفاده کنیم؟

به زبان ساده باید بگوم هرجا که لازم به استفاده از این مدل برنامه نویسی نبود از آن استفاده نکنید. دقیقا جایی که به صورت زمان حقیقی نیست، تعداد کاربران زیاد نیست، نیاز به قابلیت توسعه ندارید و یا حجم داده‌ها کم است.

چه چیز‌های برای شروع برنامه نویسی واکنش‌گرا لازم است؟

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

نتیجه گیری

برنامه نویسی واکنش‌گرا یک واژه نامعلوم و پیچیده نیست اما بسیاری از برداشت‌ها از ممکن است درست نباشد. من امیدوارم که بعد از این زمانی که شما با این واژه روبرو شدید دیگر دچار سردرگمی نشوید و این نکته را در ذهن داشته باشید که برنامه نویسی واکنش‌گرا یک مدل برنامه نویسی موثر برای نوشتن برنامه‌های غیر همزمان است. برنامه نویسی واکنش‌گرا، جایی که نیاز به نوشتن برنامه‌های غیر همزمان باشد بسیار مفیدتر از روش‌های دیگر مانند روش‌ها برنامه نویسی شئی گرایی است. زمانی که شما با داده‌های حجیم روبرو هستید و یا تعداد کاربران همزمان زیادی دارید از این مدل برناهم نویسی استفاده کنید. حتی زمانی که فرآیندها به صورت دوره‌ای تغییر می‌کند نیز این روش بسیار موثر است.


LocalTheme

Help