معرفی Actor Based Programming و توسعه نرم افزار های مقیاس پذیر و دارای عملیات همزمان بسیار زیاد - قسمت دوم
نویسنده: ایمان رحیمی نیا
تاریخ: ۱۳۹۴/۰۵/۲۲ ۱۴:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
تصویر بالا یک خط لوله را با چهار اکتور، نشان میدهد. میتوان اینطور فرض نمود که هر اکتور یک mailbox دارد و اگر پیامی برای آن اکتور بفرستید، آن را پردازش نموده و کار مخصوص به خود را بر روی آن پیام انجام میدهد و سپس آن پیام را برای اکتور بعدی خود ارسال میکند. اکتور دوم نیز به همان ترتیب کار خود را انجام داده و پیام را به اکتور مابعد خود ارسال میکند و به این ترتیب، یک پیام در خط لوله حرکت نموده و فرآیند مربوطه انجام میشود. اگر دقت کنید یک فرق دیگر هم بین خط تولید کارخانه و این خط لوله وجود دارد و آن این است که این خط لوله به صورت گراف میباشد. یعنی اکتورها میتوانند در ارتباط خود یک حلقه را تشکیل دهند و یا یک اکتور با چندین اکتور ارتباط مستقیم داشته باشد (مثل اکتور سمت چپ تصویر که با دو اکتور دیگر در ارتباط است).
خوب حالا که با مفاهیم خط لوله و اکتور آشنا شدیم، یک مسئلهی بسیار ساده را در نظر میگیریم و آن را با این روش حل میکنیم. فرض کنید یک رشته (string) داریم و میخواهیم عملیات زیر را بر روی آن به ترتیب انجام دهیم:
1- فاصلههای اضافی ابتدا و انتهای رشته حذف شود.
2- اگر رشته یک کلمهای است lowerCase شود.
3- اگر رشته بیش از یک کلمه است، تمام کلمات، به جز کلمهی اول، حذف شوند و سپس مرحلهی 2 بر روی آن انجام شود.
4- نتیجهی کار در خروجی نمایش داده شود.
حالا میخواهیم انجام هر یک از عملیات فوق را به یک اکتور سپرده و یک خط لوله را برای حل این مسئله طراحی کنیم. در قسمت بعدی به صورت عملی و با TPL DataFlow مایکروسافت این کار را انجام میدهیم.