معماری سه لایه در مهندسی نرم افزار چیست؟ | راهنمای جامع
معماری سه لایه (3-Tier Architecture) که برنامههای کاربردی را به سه لایه با ماهیت منطقی و فیزیکی تفکیک میکند، یک معماری نرمافزاری برجسته برای کاربردهای سنتی کلاینت-سروری به حساب میآید. معماری سه لایه یکی از رایجترین انواع معماری چند لایه در توسعه نرمافزار به شمار میرود. در این مطلب، سعی شده است به طور جامع و کامل تمامی مباحث پیرامون معماری سه لایه و چند لایه به بیانی ساده و ساختاریافته ارائه شود. همچنین، در این مقاله تفاوت معماری سه لایه و الگوی MVC شرح داده شده است. MVC در PHP چارچوبی رایج برای توسعه وب به شمار میرود.
محور اصلی این نوشته، معماری سه لایه است اما، پیش از پرداختن به آن، ابتدا به شرح و تعریف معماری چند لایه (N-Tier) پرداخته شده است.
معماری چند لایه چیست ؟
یک برنامه کاربردی یا اپلیکیشن چند لایه (N-Tier Application) برنامهای است که میان سه یا بیش از سه رایانه مجزا در یک شبکه توزیعی پخش شده باشد. واژه Tier به معنای رده، طبقه یا سطح است. اگرچه بیشتر از اصطلاح «لایه» (Layer) به جای «رده» (Tier) استفاده میشود.
رایجترین شکل اپلیکیشن یا معماری چند لایه، معماری سه لایه است که به سه مقوله طبقهبندی میشود:
- برنامهنویسی رابط کاربری (User Interface) در رایانه کاربر
- منطق کسبوکار (Business Logic) در یک رایانه متمرکز
- دادههای مورد نیاز در یک کامپیوتر که یک پایگاهداده را مدیریت میکنند.
معماری چند لایه (N-tier Architecture) به هر معماری برنامه کاربردی گفته میشود که دارای بیش از یک رده (Tier | لایه) باشد. اما، اپلیکیشنهایی با بیش از سه لایه، بسیار کمیاب هستند. زیرا لایههای بیشتر با وجود ارائه برخی مزیتها، ممکن است باعث کندی سرعت نرمافزار، دشواری در مدیریت و هزینه بیشتر اجرا شوند. بنابراین، معمولاً میتوان معماری چند لایه را مترادف با معماری سه لایه در نظر گرفت.
مدل معماری چند لایه و خصوصاً مدل معماری سه لایه، برای توسعهدهندگان نرمافزار، امکان ساخت و ایجاد اپلیکیشنها یا سامانههایی با انعطافپذیری بیشینه را فراهم میسازد. در معماری چند لایه N-tier، حرف N به تعداد سطوح یا لایههای استفاده شده در آن مدل اشاره دارد. به عنوان مثال، 2-tierبه معنی معماری دو لایه است. همچنین به مدل معماری چند لایه، Multi-Tier Architecture نیز گفته میشود.
مدل چند لایه به عنوان یک مدل معماری اثبات شده در صنعت نرمافزار شناخته میشود. مدل معماری نرمافزار چند لایه برای پشتیبانی از اپلیکیشنهای کلاینت سروری سطح سازمانی به وسیله فراهمسازی راهکارهایی برای گسترشپذیری، امنیت، تحمل خطا، استفاده مجدد و نگهداشتپذیری مناسب است. مدل معماری چند لایه به توسعهدهندگان کمک میکند تا اپلیکیشنهای انعطافپذیر و قابل استفاده مجدد بسازند.
تفاوت لایه و رده چیست ؟
در مباحث معماری سه لایه (3-Tier)، اغلب از واژه لایه (Layer) اشتباهاً به جای واژه رده (Tier) استفاده میشود. مثلاً به ردههای این معماری، «لایه نمایش» (Presentation Layer) یا «لایه منطق کسبوکار» (Business Layer) گفته میشود. این دو واژه یکسان نیستند. یک «لایه» به تقسیمبندی عملکردی یک نرمافزار اطلاق میشود اما، یک «رده» به تقسیمبندی عملکردی نرمافزار اجرا شده روی زیرساختهای مجزا از سایر بخشها اطلاق میشود.
به عنوان مثال، اپلیکیشن مخاطبین در گوشی موبایل، یک برنامه سه لایه اما تک رده است چرا که، هر سه لایه روی همان دستگاه تلفن همراه اجرا میشوند. این تفاوت مهمی است، زیرا لایهها نمیتوانند تسهیلات یکسانی را نسبت به ردهها ارائه دهند. با این وجود، با توجه به اینکه اصطلاح لایه بسیار رایج است و اکثراً از این عبارت برای اشاره به معماریهای N-Tier استفاده میشود، در این مطلب نیز از کلمه لایه استفاده شده است.
معماری چند لایه
نمایش نموداری از یک سامانه چند لایه به صورت زیر است:
- نمایش (Presentation)
- کاربرد (Application)
- پایگاهداده (Database)
این سه لایه را میتوان بسته به نیاز، به زیر لایههای بیشتری تقسیمبندی کرد. در ادامه، برخی از وبسایتهایی که این معماری را به کار بردهاند فهرست شده است:
- MakeMyTrip.com
- کاربردهای سازمانی Sales Force
- راه آهن هند - IRCTC
- سایت آمازون
اصطلاحات رایج در خصوص معماری چند لایه
در این بخش، برخی از اصطلاحات و عبارات رایج برای درک بهتر مفهوم معماری چند لایه و همچنین معماری سه لایه در ادامه شرح داده شده است.
شبکه توزیع شده
شبکه توزیعی یا شبکه توزیع شده (Distributed Network) یک معماری شبکه است که در آن اجزاء و قطعات (Components) واقع شده در رایانههای شبکه، فعالیتهای خود را تنها از طریق ارسال پیام با یکدیگر هماهنگ میکنند. شبکه توزیعی مجموعهای از چند سیستم است که در گرههای (Nodes) مختلفی قرار دارند، اما از دید کاربر به صورت یک سیستم یکپارچه ظاهر میشوند. شبکه توزیع شده، یک شبکه ارتباطی یکپارچه را فراهم میکند که این شبکه، میتواند توسط شبکههای مختلف به صورت مجزا مدیریت شود.
مثالی از یک شبکه توزیعی
در حالتی که کلاینتهای مختلف در یک طرف از طریق معماری LAN (شبکه محلی) به هم متصل هستند و در سمت دیگر، کلاینتها به سوئیچهای پرسرعت به همراه یک رک (Rack) از سرورهای دارای گرههای خدماتی متصل هستند.
معماری کلاینت سرور
معماری کلاینت سرور (client Server Architecture)، یک مدل معماری است که در آن کلاینت یا مشتری (یک برنامه) از یک سرور (برنامهای دیگر) درخواست خدمت میکند. یعنی این یک خدمت درخواست و پاسخ است که از طریق اینترنت یا اینترانت فراهم میشود. در چنین مدلی، کلاینت به عنوان یک مجموعه برنامه یا کُد عمل میکند که مجموعهای از فعالیتها را از طریق شبکه اجرا میکند.
از طرف دیگر، سرور مجموعهای در قالب یک برنامه دیگر است که نتایج را مطابق درخواست به کلاینت ارسال میکند. در معماری کلاینت سرور، کامپیوتر کلاینت یک رابط را برای کاربر نهایی جهت درخواست خدمت یا ذخایر دیگر از سرور فراهم میکند. از طرف دیگر، سرور درخواست را پردازش میکند و نتیجه را به کاربر نهایی نشان میدهد.
مثالی از مدل کلاینت سرور: دستگاه خودپرداز
یک بانک میتواند دارای سروری برای پردازش اپلیکیشن (Application Processing) در پایگاهدادههای بزرگ مشتریان باشد و دستگاه خودپرداز (ATM) کلاینتی با یک رابط کاربری و مقداری عملیات ساده پردازش اپلیکیشن است.
پلتفرم
در علوم کامپیوتر یا صنعت نرمافزار، یک پلتفُرم (بستر | Platform) سامانهای است که برنامه کاربردی روی آن اجرا میشود. این بستر با ترکیبی از سختافزار و نرمافزار تشکیل میشود. این ترکیب، دارای یک دستورالعمل درونساخته برای پردازنده یا ریزپردازندهها جهت اجرای عملیاتی مشخص است. به بیان سادهتر، پلتفرم سیستم یا مرکزی است که هر برنامهای برای دستیابی به یک هدف خاص میتواند روی آن اجرا شود.
مثالی از یک پلتفرم
برای مثال، در خصوص یک رایانه شخصی که دارای سیستم عامل ویندوز ۲۰۰۰ یا مک OS X است، میتوان هر یک از این سیستم عاملها را به عنوان یک پلتفرم در نظر گرفت.
پایگاه داده
پایگاهداده (Database) مجموعهای از اطلاعات سازمانیافته و به نوعی منظم است که به راحتی در دسترس هستند و میتوان آنها را مدیریت و بهروزرسانی کرد.
بابا بنازم به این آموزش
خدا وکیلی آدم آموزشم میذاره یا به کسی آموزش میده اینجوری کار کنه
دمت گرم استاد خدا قوت
در بحث معماری سیستم(system architecture) معماری ترکیبی به چه معناست؟با ذکر مثال توضیح دهید
خیلی عالی بود ممنون
با سلام و احترام؛
صمیمانه از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم.
برای شما آرزوی سلامتی و موفقیت داریم.