۱۰ مورد از معماری های مشترک نرم افزار

255
software_architectural  | اُکسیما

تا کنون فکر کرده اید که چگونه سیستم های در مقیاس بزرگ سازمانی طراحی شده اند؟ قبل از شروع برنامه نویسی عمده، ما باید یک معماری مناسب را انتخاب کنیم که به ما قابلیت های دلخواه و ویژگی هایی باکیفیت را ارائه می دهد. از این رو، قبل ازشروع به طراحی و برنامه نویسی ما باید معماری های مختلف را درک کنیم.


الگوی معماری چیست؟


طبق گفته ویکی پدیا

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

در این مقاله شما را با ده مورد از معمارهای نرم افزار به صورت خلاصه آشنا خواهیم کرد.


  • 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


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

4 لایه بیشتر سیستم های اطلاعات عمومی به شرح زیر است.

  • Presentation layer یا UI layer
  • Application layer یا Service layer
  • Business logic layer یا Domain layer
  • Data access layer یا Persistence layer

موارد استفاده از این معماری عبارت اند از :
  • برنامه های کاربردی دسکتاپ.
  • برنامه های کاربردی تجارت الکترونیک.

۲) Client-server pattern


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

موارد استفاده از این معماری عبارت اند از :
  • برنامه های آنلاین مانند ایمیل، اشتراک سند و بانکداری.

۳) Master-slave pattern


این الگو شامل دو طرف است : Master و Slaves .

مولفه های Master کار را در میان اجزای یکپارچه Slaves توزیع می کند و نتیجه نهایی را از نتایجی که Slaves بر می گرداند محاسبه می کند.

موارد استفاده از این معماری عبارت اند از :
  • در تکرار پایگاه داده، پایگاه داده اصلی به عنوان منبع معتبر در نظر گرفته می شود، و پایگاه های فرعی به آن هماهنگ می شوند.
  • لوازم جانبی متصل به یک اتوبوس در یک سیستم کامپیوتری (درایوهای اصلی و فرعی).

۴) Pipe-filter pattern


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

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

۵) Broker pattern


این الگو برای ساخت سیستم های توزیع شده با اجزای جدا شده استفاده می شود. این اجزا می توانند با استفاده از سرویس های راه دور ارتباط برقرار کنند. جزء broker مسئول هماهنگی ارتباط بین اجزای سازنده است .

سرورها توانایی های خود را (خدمات و ویژگی ها) را به یک broker انتشار می دهند. مشتریان سرویس را از broker درخواست می کنند و سپس broker مشتری را به یک سرویس مناسب از رجیستری خود هدایت می کند.

موارد استفاده از این معماری عبارت اند از :
  • نرم افزار broker پیام مانند Apache ActiveMQ ، Apache Kafka ، RabbitMQ و JBoss Messaging .

۶) Peer-to-peer pattern


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

موارد استفاده از این معماری عبارت اند از :
  • شبکه های اشتراک فایل مانند Gnutella و G2
  • پروتکل های چندرسانه ای مانند P2PTV و PDTP

۷) Event-bus pattern


این الگو در ابتدا با event ها و چهار جزء اصلی مرتبط است. منبع event ، شنوندگان event ، کانال و event bus . منابع، پیام ها را به کانال های خاصی در یک event bus منتشر می کنند. شنوندگان به کانال های خاصی متصل می شوند شنوندگان به پیام هایی که به یک کانال که قبلا به آنها متصل شده اند، توجه دارند.

موارد استفاده از این معماری عبارت اند از :
  • توسعه اندروید
  • خدمات اطلاع رسانی

۸) Model-view-controller pattern


این الگو، همچنین به عنوان الگوی MVC شناخته می شود، یک برنامه تعاملی را به 3 قسمت تقسیم می کند،

  • مدل - حاوی قابلیت های اصلی و داده ها است
  • نمایش - نمایش اطلاعات به کاربر (بیش از یک دیدگاه ممکن است تعریف شده است)
  • کنترل کننده - ورودی را از کاربر کنترل می کند

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

موارد استفاده از این معماری عبارت اند از :
  • معماری برای برنامه های کاربردی جهانی وب در زبان های برنامه نویسی عمده.
  • چارچوب وب مانند Django و Rails .

۹) Blackboard pattern


این الگو برای مشکلاتی مفید است که هیچ استراتژی و راه حل قطعی شناخته شده ای ندارند. الگوی Blackboard شامل 3 جزء اصلی است.

  • blackboard - یک حافظه جهانی ساخت یافته که حاوی اشیا از فضای راه حل است
  • knowledge source - ماژول های تخصصی با نمایندگی خود
  • control component - ماژول ها را انتخاب می کند، پیکربندی و اجرا می کند.

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

موارد استفاده از این معماری عبارت اند از :
  • تشخیص گفتار
  • شناسایی خودرو و ردیابی
  • شناسایی ساختار پروتئین

۱۰) Interpreter pattern


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

موارد استفاده از این معماری عبارت اند از :
  • زبان query پایگاه داده مانند SQL.
  • زبان مورد استفاده برای توصیف پروتکل های ارتباطی

مقایسه معماری ها


جدول زیر نشان دهنده مزایا و معایب هر یک از الگوی معماری است.

software_architectural table-oxima

امیدواریم که این مقاله مفید بوده باشد . درصورتی که شما اطلاعات ویژه ای در خصوص هر یک از این الگوها معماری دارید در قسمت دیدگاه ها با ما درمیان بگذارید. با تشکر از زمانی که برای خواندن این مقاله گذاشتید.

پیوست ها :
  • این مقاله دارای پیوست نمی باشد.
loder | اُکسیما
»» نویسنده مقاله
حسین رئیسی | اُکسیما

حسین رئیسی
»» پشتیبانی مقاله

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


به اشتراک بگذارید ...

دوستان و همراهان گرامی : آیا تمایل دارید این مقاله را با دوستان و آشنایان خود در تلگرام به اشتراک بگذارید؟

مقاله های پیشنهادی

توسعه ی برنامه های هیبریدی باعث می شود که کار برای توسعه دهندگان وب بسیار ساده شود چرا که آن ها یک برنامه واحد ایجاد می کنند که کارآمد در سیستم عامل های متعدد مانند iOS، Android و windows می باشد بدون اینکه هیچ گونه تلاش اضافی انجام دهند. همچنین مزایای استفاده از برنامه Hybrid که شامل توسعه هزینه های مؤثر، دسترسی به طیف گسترده ای از قابلیت های سخت افزاری / نرم افزاری متعدد و ... می باشد. بنابراین، می توان آن را یک سرمایه گذاری سودآور برای مردم دانست .

حسین رئیسی

179

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

حسین رئیسی

138

سویفت یک زبان برنامه‌نویسی چند شیوه‌ای و از نوع کامپایلری است که برای توسعهٔ iOS، macOS، watchOS و tvOS توسط شرکت اپل ساخته‌شده‌است. سویفت برای کار با فریمورک‌های Cocoa و Cocoa Touch اپل و تعامل با حجم عظیمی از کدهای Objective-C نوشته شده برای محصولات اپل طراحی شده‌است. هیچ زمانی بهتر از الان برای برای کسب مهارت در زبان برنامه نویسی open source اپل یعنی زبان سویفت وجود نداشته است ! در این مقاله دلایلی را برای یادگیری این زبان برای شما آورده ایم که ما را نیز شگفت زده کرده است .

حسین رئیسی

234