با سلام، تو این مقاله قصد دارم ده تا از الکوهای معماری نرم افزاری (Software Architectural Patterns) که رایج هستند رو خدمتتون معرفی کنم، باشد که استفاده کنید 🙂
تا حالا شده فکر کنید سیستم های در مقیاس بزرگ چطور طراحی می شوند؟ قبل از شروع به توسعه در قدم او.ل باید معماری مناسب طراحی را انتخاب کنیم تا بتواند ویژگی های مورد نظرمان را فراهم کند. پس باید قبل از اینکه از یک معماری در طراحی خود استفاده کنیم، با معماری های مختلف آشنایی داشته باشیم.
الگوی معماری چیست؟
الگوی معماری رویکردی استفاده پذیر و عمومی برای مشکلات رایجی که در معماری نرم افزار در یک زمینه خاص رخ می دهد می باشد. الگوهای معماری مشابه الگوهای طراحی می باشند اما دارای دامنه مسیعتری هستند.
ویکی پدیا
در ادامه این مقاله، به طور خلاصه به معرفی ۱۰ الگوی معماری رایج نرم افزار، موارد استفاده شان، مزایا و معایب شان خواهم پرداخت:
- الگوی لایه ای (Layered pattern)
- الگوی مشتری-سرور (Client-server pattern)
- الگوی ارباب-برده ( Master-slave pattern)
- الگوی فیلتر-لوله (Pipe-filter pattern)
- الگوی کارگزار (Broker pattern)
- الگوی همتا به همتا (Peer-to-peer pattern)
- الگوی اتوبوس رویداد (Event-bus pattern)
- الگوی مدل- ویو-کنترلر (Model-view-controller pattern)
- الگوی تخته سیاه (Blackboard pattern)
- الگوی مفسر (Interpreter pattern)
۱- الگوی لایه ای (Layered pattern)
این الگو را می توان برای ساختار برنامه هایی که می توان به گروه هایی از وظایف جزیی تجزیه کرد، استفاده کرد. که هر کدام از آنها در سطح خاصی از انتزاع باشند. هر لایه به لایه بالاتر بعدی خدمت می دهد.
به طور عمومی چهار لایه از یک سیستم اطلاعاتی به شرح زیر است:
الف) لایه ارائه (Presentation layer)، همچنین لایه UI نامیده می شود.
ب) لایه برنامه (Application layer)، همچنین لایه خدمت (سرویس) نامیده می شود.
ج) لایه منطق تجاری (Business logic layer)، همچنین لایه دامنه شناخته می شود.
د) لایه دسترسی به داده (Data access layer)، همچنین لایه ماندگاری (persistence layer) نامیده می شود.
موارد استفاده:
- برنامه های عمومی دسکتاپ (General desktop applications)
- برنامه های تحت وب تجارت الکترونیکی (E commerce web applications)
۲- الگوی کلاینت-سرور (Client-server pattern)
این الگو شامل بر دو بخش می باشد: یک سرور و چند مشتری(کلاینت). مولفه سرور خدماتی را برای چندین مولفه مشتری فراهم خواهد کرد. مشتری ها از سرور درخواست سرویس ها را می کنند و سرور خدمات مربوطه را به آن مشتری ها ارائه می دهد. علاوه بر این، سرور همچنان به گوش دادن به درخواستهای مشتری ادامه می دهد.
موارد استفاده:
- برنامه های کاربردی برخط (آنلاین) مانند ایمیل، اشتراک گذاری اسناد و بانکداری.
۳- الگوی ارباب-برده (Master-slave pattern)
این الگر شامل بر دو بخش می باشد: ارباب (master) و برده (Slave). مولفه ارباب کار را میان مولفه های برده همسان توزیع می نماید و نتیجه نهایی را از نتایج حاصل از برده ها محاسبه می کند.
موارد استفاده:
- در تکثیر (رپلیکا) پایگاه داده ها، پایگاه داده اصلی (ارباب) به عنوان منبع معتبر در نظر گرفته می شود و پایگاه داده های برده با آن هماهنگ می شوند.
- ابزارهای جانبی متصل شده به یک باس – BUS در یک سیستم کامپیوتری (درایوهای ارباب و برده)
۴- الگوی لوله-فیلتر (Pipe-filter pattern):
این الگوی می تواند برای ساختار دادن به سیستم هایی که جریانی از داده را تولید یا پردازش می کنند استفاده شود. هر مرحله از پردازش محصور با یک مولفه فیلتر می باشد. داده ای که باید پردازش شود از طریق لوله منتقل می شود. از این لوله ها می توان برای بافر یا اهداف هماهنگ سازی استفاده کرد.
موارد استفاده:
- در کامپایلرها، فیلترهای متوالی به آنالیز واژگانی، تحلیل معنایی، پارزینگ (parsing) و تولید کد می پردازند.
- گردش کار در bioinformatics
۵- الگوی کارگزار (Broken Pattern):
این الگو استفاده می شود تا سیستم های توزیعی را با مولفه های جدا از هم ساختار دهد. این مولفه ها می توانند با یکدیگر توسط سرویس از راه دور ارتباط برقرا کنند. یک مولفه کارگزار مسئول هماهنگی ارتباط بین مولفه ها می باشد.
سرورها قابلیت های خود (خدمات و ویژگی ها) را برای یک گارگزار منتشر می کنند. کلایبنتها درخواست یک سرویس را از کارگزار می کنند و کارگزار کلاینت را به سمت سرویس مناسب از طریق رجیستری خودش هدایت می کند.
موارد استفاده:
- نرم افزار های کارگزار پیام مانند Apache ActiveMQ, Apache Kafka, RabbitMQ و JBoss Messaging.
الگوی همتا به همتا (Peer-to-peer pattern):
در این الگو، مولفه های منفرد به عنوان همتا (peer) شناخته می شوند. همتایان ممکن است به عنوان یک مشتری درخواست سرویس از دیگر همتا ها کنند یا به عنوان یک سرور سرویس را برای همتایان دیگر فراهم کنند. یک همتا ممکن است به عنوان کلاینت یا یک سوری یا هر دوی آنها عمل کند و می تواند نقش خود را در طول زمان به صورت پویا تغییر دهد.
موارد استفاده:
۷- الگوی رویداد-باس (Event-bus pattern)
این الگو در درجه اول با رویدادها سر و کار دارد و ۴ مولفه اصلی دارد، منبع رویداد (event source)، شنوندگان رویداد (event listener,)، کانال (channel) و باس رویداد (event bus). منابع پیامهایی را به کانالهای مشخصی روی یک باس رویداد منتشر می کنند. شنوندگان در کانالهای مشخصی مشترک می شوند. شنوندگان در مورد پیام هایی که در کانالی که قبلا مشترک آن شده اند، منشتر شده است، مطلع می شوند.
موارد استفاده:
- توسعه اندروید
- سرویس های اطلاع رسانی
۸- الگوی مدل-ویو-کنترلر (Model-view-controller pattern)
این الگو همچنین با نام مخفف MVC شناخته می شود و برنامه ها را به سه بخش تقیسم می کند:
۱- مدل (model)، شامل عملیان هسته و داده می باشد.
۲- نمایش (view)، اطلاعات را به کاربر نمایش می دهد (ممکن است بیش از یک view تعریف شود)
۳- کنترلر (controller)، مدیریت کردن ورودی از سمت کاربر
این کار برای تفکیک نمایش داخلی اطلاعات زوش های ارائه اطلاعت به کاربر و پذیریش آن از طرف کاربر انجام می شود. این کار مولفه ها را از هم دا کرده و استفاده مجدد کد را به شما می دهد.
موارد استفاده:
- معماری برای برنامه های کاربردی تحت وب در زبان های برنامه نویسی اصلی
- چارچوب های وب همچون Djnago و Rails .
۹- الگوی تخته سیاه (Blackboard pattern)
این الگو برای مسائلی که هیچ راهبرد قطعی برایشان شناخته نشده است، مناسب می باشد. الگوی تخته سیاه شامل بر ۳ مولفه اصلی می باشد:
- تخته سیاه، یک حافظه سراسری ساختار یافته شامل اشیایی از فضای راه حل
- منبع دانش – ماژولهای بخصوصی با ارائه ای از خودشان
- مولفه کنترل، ماژول ها را انتخاب، پیکربندی و اجرا می کند.
تمامی مولفه ها به تخته سیاه دسترسی دارند. مولفه ها ممکن است ايا داده جدیدی را بسازندکه به تخته ساه اضافه می شود. مولفه ها به دنبال انواع خاصی از داده رو تخته سیاه می گردند و ممکن است آنها را با استفاده از تطبیق الگو با منبع دانش پیدا کنند.
موارد استفاده:
- تشخیث گفتار
- شناسایی و ردیابی خودرو
- شناسایی ساختا پروتئین
- تفسیر سیگنال های سونار
۱۰ – الگوی مفسر (Interpreter pattern)
این الگو برای طراحی یک کامپوننت که برنامه های نوشته شده به یک زبان خاص را تفسیر کند استفاده می شود. این الکو اساسا مشخص می کند که چطور خطوط یک برنامه را ارزیابی کند، خطوطی که جملات یا عبارات نوسته شده در یک زبان خاص شناخته می شوند. ایده پایه این هست که یک کلاس برای هر نمادی از زبان داشت.
موارد استفاده:
- زبان های کوئری پالیگاه داده همچون SQL
- زبانهایی که برای توصیف پروتکل های ارتباطی استفاده می شوند.
مراجع:
- https://www.ou.nl/documents/40554/791670/IM0203_03.pdf/30dae517-691e-b3c7-22ed-a55ad27726d6
- https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
ارسال پاسخ