نگار جوادزاده
نگار جوادزاده
خواندن ۱۱ دقیقه·۴ سال پیش

الگوی معماری نرم افزار و الگوی معماری فریم ورک Laravel

الگو ی معماری نرم افزار
الگو ی معماری نرم افزار


تا به حال به این فکر کرده اید که سیستم های بزرگ در مقیاس سازمانی چگونه طراحی می شوند؟

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

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

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

تفاوت بین الگوی معماری نرم افزار و الگوی طراحی نرم افزار چیست؟

معماری نرم‌افزار مسئول اسکلت‌بندی و زیرساخت کلی یک نرم‌افزار می‌باشد اما این در حالی است که طراحی نرم‌افزار (Software Design) مسئول طراحی در سطح کُد است بدین صورت که مشخص می‌شود وظایف هر یک از ماژول‌ها، اِسکوپ کلاس‌ها و اهداف هر یک از تابع ها چیست و ارتباط آن‌ها با یکدیگر چگونه باید باشد.

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

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

انواع الگو های معماری نرم افزار رایج

1)الگوی لایه ای (Layered pattern)

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

4 لایه سیستم اطلاعات عمومی که به طور معمول یافت می شود به شرح زیر است:

  • لایه ارائه (همچنین به عنوان لایه UI شناخته می شود)
  • لایه کاربرد (همچنین به عنوان لایه سرویس نیز شناخته می شود)
  • لایه منطق کسب و کار (همچنین به عنوان لایه دامنه نیز شناخته می شود)
  • لایه دسترسی به داده ها (همچنین به عنوان لایه ماندگاری شناخته می شود)
Layered pattern
Layered pattern

موارد استفاده:

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

2)الگوی مشتری-سرور(Client-server pattern)

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

Client-server pattern
Client-server pattern

موارد استفاده:

  • برنامه های آنلاین مانند ایمیل ، اشتراک اسناد و خدمات بانکی.

3)الگوی ارباب-برده(Master-slave pattern)

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

Master-slave pattern
Master-slave pattern

موارد استفاده:

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

4)الگوی فیلتر لوله(Pipe-filter pattern)

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

Pipe-filter pattern
Pipe-filter pattern

موارد استفاده:

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

5)الگوی کارگزار(Broker pattern)

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

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

Broker pattern
Broker pattern

موارد استفاده:

  • نرم افزار کارگزار پیام مانند Apache ActiveMQ ، Apache Kafka ، RabbitMQ و JBoss Messaging.

6)الگوی همتا به همتا(Peer-to-peer pattern)

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

Peer-to-peer pattern
Peer-to-peer pattern

موارد استفاده:

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

7) الگوی رویداد-گذرگاه(Event-bus pattern)

این الگو در درجه اول با رویدادها سروکار دارد و دارای 4 مولفه اصلی است.

  • منبع رویداد.
  • شنوندگان رویداد.
  • کانال.
  • گذرگاه رویداد.

منابع پیام ها را به کانال های خاص در گذرگاه رویداد منتشر می کنند. شنوندگان در کانال های خاصی مشترک می شوند. و از پیام های منتشر شده در کانالی که قبلاً در آن مشترک شده اند مطلع می شوند.

Event-bus pattern
Event-bus pattern

موارد استفاده:

  • توسعه اندروید
  • خدمات اطلاع رسانی

8)الگوی مدل-نمایش-کنترل کننده (Model-View-Controller pattern)

این الگو یک برنامه تعاملی را به 3قسمت تقسیم میکند:

  • مدل(Model) : شامل عملکرد و داده های اصلی است.
  • نمایش(View) : اطلاعات را به کاربر نمایش می دهد (ممکن است بیش از یک نمایش تعریف شود).
  • کنترل کننده(Controller) : ورودی کاربر را کنترل می کند.

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

Model-View-Controller pattern
Model-View-Controller pattern

موارد استفاده:

  • معماری برای برنامه های کاربردی شبکه جهانی وب به زبانهای اصلی برنامه نویسی.
  • چارچوب های وب مانند Django و Rails و Laravel.

9)الگوی تخته سیاه (Blackboard pattern)

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

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

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

Blackboard pattern
Blackboard pattern

موارد استفاده:

  • تشخیص گفتار
  • شناسایی و ردیابی خودرو
  • شناسایی ساختار پروتئین
  • سونار تفسیر سیگنال ها

10) الگوی مفسر (Interpreter pattern)

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

Interpreter pattern
Interpreter pattern

موارد استفاده:

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



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




الگوی معماری فریم ورک Laravel

MVC pattern
MVC pattern


لاراول یک چارچوب وب مبتنی بر PHP است که عمدتا بر اساس معماری MVC ساخته شده است. لاراول برای سهولت شروع کار پروژه های PHP برای توسعه دهندگان ایجاد شده است. با لاراول ، شما کمتر به تنظیمات ، معماری و وابستگی های یک پروژه فکر می کنید و مستقیماً وارد پروژه می شوید.

هنگامی که شما یک پروژه جدید Laravel ایجاد می کنید ،این پروژه دارای ساختار زیر است:

ساختار پروژه لاراول
ساختار پروژه لاراول


نحوه اجرای MVC در برنامه های لاراول

الگوی Model view controller) MVC) امکان تعامل با پایگاه داده را فراهم می کند و بدون شک نیازی به پایگاه داده نیست. و ممکن است یک فایل JSON یا منبع دیگری باشد. Model view controller شامل منطق است. به عنوان مثال راهی که می تواند داده های فرم را تأیید کند و با تعامل با مدل ، یک منبع را در پایگاه داده ذخیره کند. رابط کاربر برنامه ها (UI) به عنوان نمایی فراخوانی می شود که شامل HTML یا نشانه گذاری ارائه نیز می باشد. علاوه بر این ، همچنین می تواند دارای یک حلقه و منطق شرطی باشد. از موتورهای الگو برای درج منطق در نماها استفاده می شود و لاراول دارای موتورهای الگوی Blade برای افزودن منطق به درون نماها است.

مسیرها (Routes):

2 پرونده مسیر وجود دارد که در لاراول موجود است یکی از آنها web.php و دیگری api.php است. همه مسیرهای وب در پرونده های web.php مانند mywebsite.com/about یا mywebsite.com/contact ثبت شده اند. و مسیرهای مربوط به API در api.php ثبت شده اند.

کنترل کننده ها و مدل ها(Controllers and Models):

همه مدل ها در فهرست برنامه ها ذخیره می شوند و برای احراز هویت ، یک مدل کاربر پیش فرض با لاراول ارائه می شود. app\Http\controllers همه کنترل کننده ها را دارد و همچنین کنترلرهای پیش فرض دیگری نیز برای احراز هویت وجود دارد.

نمایش (Views):

نمایش ها را می توان در resources/views یافت. لاراول نمای پیش فرض مانند welcome.blade.php را فراهم کرده است. نماهای Laravel دارای پسوندی به نام پسوند blade.php. هستند بنابراین در زمان ایجاد نمایش ، باید پسوند blade را اضافه کنید.

سایر دایرکتوری ها:

لاراول دایرکتوری public را برای قرار دادن CSS ، js و سایر دارایی های ثابت شما فراهم کرده است. از طرف دیگر دایرکتوری Configuration شامل تمام فایل های پیکربندی است که به برنامه ما مربوط می شوند مانند session ، پایگاه داده و سایر تنظیمات.


نحوه برسی درخواست در لاراول
نحوه برسی درخواست در لاراول


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

از طرف دیگر ، اگر یک رابط برنامه نویسی برنامه (API) باشد ، خروجی معمولاً از طریق فرم JSON است و با استفاده از بسته های مربوطه ، XML نیز پشتیبانی می شود.


مراجع: wikipedia.org | sokanacademy.com | towardsdatascience.com | blog.pusher.com | medium.com



معماری نرم افزارطراحی نرم افزارالگو های معماری نرم افزارlaravelmvc
backend developer( PHP + Laravel)
شاید از این پست‌ها خوشتان بیاید