تا به حال به این فکر کرده اید که سیستم های بزرگ در مقیاس سازمانی چگونه طراحی می شوند؟
قبل از شروع تولید عمده نرم افزار ، ما باید معماری مناسبی را انتخاب کنیم که ویژگی های مطلوب را برای ما فراهم کند. از این رو ، ما باید معماری های مختلف را درک کنیم ، قبل از اینکه آنها را در طراحی خود اعمال کنیم.
یک راه حل کلی و قابل استفاده مجدد برای یک مشکل معمول در معماری نرم افزار در یک بافت خاص است. الگوهای معماری مشابه الگوی طراحی نرم افزار هستند اما دامنه وسیع تری دارند.
تفاوت بین الگوی معماری نرم افزار و الگوی طراحی نرم افزار چیست؟
معماری نرمافزار مسئول اسکلتبندی و زیرساخت کلی یک نرمافزار میباشد اما این در حالی است که طراحی نرمافزار (Software Design) مسئول طراحی در سطح کُد است بدین صورت که مشخص میشود وظایف هر یک از ماژولها، اِسکوپ کلاسها و اهداف هر یک از تابع ها چیست و ارتباط آنها با یکدیگر چگونه باید باشد.
الگوی طراحی مجموعهای از راهکارها و الگوها در برنامهنویسی هستند که توسط توسعه دهنده های باتجربه در زمینه شیٔگرایی پیادهسازی شدهاند و توسعهدهندگان میتوانند با بهکارگیری آنها دست به طراحی اپلیکیشنهایی انعطافپذیر، تغییرپذیر با قابلیت نگهداری بالا بزنند.
برای مطالعه بیشتر میتوانید به این لینک مراجعه کنید.
از این الگو می توان برای ساختار برنامه هایی استفاده کرد که می توانند به گروههایی از وظایف فرعی تجزیه شوند ، که هر کدام از آنها در سطح خاصی از انتزاع هستند. هر لایه خدمات را به لایه بالاتر بعدی ارائه می دهد.
4 لایه سیستم اطلاعات عمومی که به طور معمول یافت می شود به شرح زیر است:
موارد استفاده:
این الگو از دو قسمت تشکیل شده است. یک سرور و چندین مشتری. مولفه سرور به چندین مولفه سرویس گیرنده خدمات ارائه می دهد. مشتری ها از سرور خدمات می خواهند و سرور خدمات مربوطه را به آن مشتری ارائه می دهد. علاوه بر این ، سرور همچنان به درخواست های مشتری گوش می دهد.
موارد استفاده:
این الگو از دو قسمت تشکیل شده است. master و slaves. مولفه master کار را بین اجزای slave یکسان توزیع می کند و نتیجه نهایی نتایج حاصل از slave ها را محاسبه می کند.
موارد استفاده:
از این الگو می توان برای ساختار سیستم هایی استفاده کرد که جریان داده ای را تولید و پردازش می کنند. هر مرحله پردازش در یک جز فیلتر محصور شده است. داده هایی که باید پردازش شوند از طریق لوله ها منتقل می شوند. از این لوله ها می توان برای بافر یا اهداف هماهنگ سازی استفاده کرد.
موارد استفاده:
این الگو برای ساختار سیستم های توزیع شده با اجزای جدا شده استفاده می شود. این مولفه ها می توانند با فراخوانی سرویس از راه دور با یکدیگر ارتباط برقرار کنند. یک مولفه کارگزار مسئول هماهنگی ارتباط بین مولفه ها است.
سرورها قابلیت های خود (خدمات و ویژگی ها) را برای یک کارگزار منتشر می کنند. مشتری ها از کارگزار درخواست خدمات می کنند و سپس کارگزار، مشتری را به سرویس مناسب از رجیستری خود هدایت می کند.
موارد استفاده:
در این الگو ، اجزای منفرد به عنوان همکار (peer) شناخته می شوند. همکاران ممکن است هم به عنوان یک مشتری عمل کنند ، هم از سایر همکاران خود درخواست خدمات کنند و هم به عنوان یک سرور ، خدمات خود را به سایر همکاران ارائه دهند. یک همکار (peer) ممکن است به عنوان مشتری یا سرور یا هر دو عمل کند و با گذشت زمان می تواند نقش خود را به صورت پویا تغییر دهد.
موارد استفاده:
این الگو در درجه اول با رویدادها سروکار دارد و دارای 4 مولفه اصلی است.
منابع پیام ها را به کانال های خاص در گذرگاه رویداد منتشر می کنند. شنوندگان در کانال های خاصی مشترک می شوند. و از پیام های منتشر شده در کانالی که قبلاً در آن مشترک شده اند مطلع می شوند.
موارد استفاده:
این الگو یک برنامه تعاملی را به 3قسمت تقسیم میکند:
این کار برای تفکیک نمایش داخلی اطلاعات از روشهای ارائه اطلاعات به کاربر و پذیرش آن از طرف کاربر انجام می شود. این قطعات را از هم جدا کرده و امکان استفاده مجدد از کد را به شما می دهد.
موارد استفاده:
این الگو برای مشکلاتی مفید است که هیچ راهبرد قطعی برای آنها شناخته نشده است. الگوی تخته سیاه از 3 جز اصلی تشکیل شده است.
همه اجزا به تخته سیاه دسترسی دارند. مولفه ها ممکن است اشیا داده ای جدیدی تولید کنند که به تخته سیاه اضافه می شوند. مولفه ها به دنبال انواع خاصی از داده ها روی تخته سیاه هستند ، و ممکن است این موارد را با تطبیق الگو با منبع دانش موجود پیدا کنند.
موارد استفاده:
این الگو برای طراحی مولفه ای که برنامه های نوشته شده به زبان اختصاصی را تفسیر می کند ، استفاده می شود. این مقاله به طور عمده چگونگی ارزیابی خطوط برنامه ها را که به عنوان جملات یا اصطلاحات نوشته شده در یک زبان خاص شناخته می شوند ، مشخص می کند. ایده اصلی داشتن کلاس برای هر نماد زبان است.
موارد استفاده:
الگو های زیاد دیگر با ویژگی ها و کاربرد های دیگر نیز وجود دارند که میتوانید با استفاده از این لینک با آن ها نیز آشنا شده و استفاده کنید.
در این قسمت به توضیحات الگوی معماری نرم افزار و انواع رایج آن پرداختیم. در ادامه به توضیح الگوی معماری فریم ورک Laravel میپردازیم.
لاراول یک چارچوب وب مبتنی بر PHP است که عمدتا بر اساس معماری MVC ساخته شده است. لاراول برای سهولت شروع کار پروژه های PHP برای توسعه دهندگان ایجاد شده است. با لاراول ، شما کمتر به تنظیمات ، معماری و وابستگی های یک پروژه فکر می کنید و مستقیماً وارد پروژه می شوید.
هنگامی که شما یک پروژه جدید Laravel ایجاد می کنید ،این پروژه دارای ساختار زیر است:
الگوی 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