آشنایی با معماری چند لایه نرم افزاری
آشنایی با معماری چند لایه نرم افزاری
امروزه معماری چند لایه یکی از بهترین انواع الگوهای معماری می باشد، معماری چند لایه افزایش پیچیدگی اپلیکیشن های مدرن را تعدیل می کند، همچنین این نوع معماری باعث می شود که کار شما بسیار سریع تر انجام شود. این نوع معماری زمانی اهمیت پیدا می کند که شما در حال غلبه بر DevOps و سایر روش های مشابه امروزی هستید. معماری چند لایه گاهی اوقات با نام معماری چندگانه یا معماری n لایه شناخته می شود.
یک معماری چند لایه نرم افزار از لایه های مختلفی به وجود آمده است که هر کدام از آنها در واقع یک سرویس جداگانه است و عملیات خاص خود را انجام می دهد. از آنجایی که هر لایه در معماری چند لایه به صورت جداگانه کار می کند، ایجاد تغییرات در هر لایه ساده تر است نسبت به زمانی که می خواهید تغییراتی را در کل معماری به وجود آورید، دلیل این اتفاق آن است که شما منطق برنامه را به چند قسمت کوچکتر تبدیل می کنید که هر یک از این قسمت ها به صورت جداگانه بر روی سرور اجرا می شوند و همین موضوع باعث می شود که شما به صورت جدا هر بخش را رسیدگی کنید و در پایان تمامی این بخش ها را به یکدیگر متصل کنید و بتوانید از اپلیکیشن خود به صورت کامل استفاده کنید. 
یک نرم افزار لایه لایه از چه چیزهایی تشکیل شده است و دارای چه بخش هایی است؟
قبل از این که بخواهیم به مبحث معماری چند لایه بپردازیم، باید با یک فرم ساده از معماری چند لایه کار خود را شروع کنیم ( یک معماری سه لایه). این نقطه محل خوبی برای شروع است چرا که تمامی نرم افزارهای معماری لایه لایه این سه عنصر را دارا می باشند. این سه عنصر عبارت اند از Presentation layer، Application layer، data layer. در ادامه به معرفی هر یک از این لایه ها خواهیم پرداخت و کارکرد آنها را بررسی خواهیم کرد.
آشنایی با Presentation layer
این لایه اولین و بالاترین لایه در معماری چند لایه می باشد که در برنامه موجود است، در واقع می توان گفت این لایه سطح ارائه نهایی خدمات است، در این جا منظور از ارائه یعنی به نمایش گذاشتن محتوای مورد نظر برنامه نویس به کاربر نهایی از طریق رابط های گرافیکی مختلف. این لایه را می توان از طریق هر نوع دستگاهی مانند دسکتاپ، لپ تاپ، تلفن همراه و تبلت به کاربر نمایش داد. برای این که محتوای مد نظر شما به نمایش کاربر در بیاید باید صفحات وب مربوطه توسط مرورگر و یا سایر کامپوننت های ارائه شده در دستگاه مشتری اجرا شوند. برای ارائه دادن محتوا این سطح از معماری چند لایه باید با سایر سطوحی که در این نوع معماری وجود دارد ارتباط برقرار کند.
آشنایی با Application layer  و data layer
Application layer
این لایه، در واقع لایه میانی در معماری چند لایه است، در این سطح است که برنامه ای که توسط برنامه نویس نوشته شده است اجرا می شود، منظور از منطق کسب و کار مجموعه ای از قوانین است که برای اجرای برنامه مورد نظر شما از دستورالعمل های خاصی پیروی می کند. کامپوننت های این سطح از معماری چند لایه معمولا در یک یا چند سرور اجرا می شوند.
Data layer
پایین ترین لایه در این نوع از معماری چند لایه عمدتا مربوط به ذخیره و بازیابی اطلاعات و داده های نرم افزاری است، داده های برنامه شما معمولا در یک سرور دیتابیس، سرور فایل و یا هر دستگاه یا رسانه دیگری که از منطق دسترسی به داده ها استفاده کند ذخیره و نگهداری می شوند و گام های لازم برای اطمینان از این که تنها داده ها مورد استفاده قرار خواهند گرفت بدون آن که به صورت مستقیم دسترسی داده شود انجام خواهد شد. این کار با استفاده از لایه دیتا انجام می شود که یک API برای لایه اپلیکیشن فراهم می کند. ارائه این API شما را مطمئن می کند که انتقال داده ها به صورت کامل بدون هیچ گونه دسترسی انجام شود، بدون آن که تاثیری بر روی لایه اپلیکیشن از معماری چند لایه بگذارد.. به عنوان مثال به روزرسانی و یا ارتقا در سیستم در این لایه هیچ گونه تاثیری بر لایه اپلیکیشن در معماری چند لایه نخواهد گذاشت.
معماری چند لایه نرم افزار
یک معماری چند لایه نرم افزاری حتما باید دارای دو لایه ارائه محتوا و لایه دیتا باشد، این دو لایه می توانند به سادگی لایه اپلیکیشن را در معماری چند لایه گسترش دهند. در واقع جنبه های اضافی که درون لایه اپلیکیشن وجود دارد در واقع سرویس های دیگری هستند. این به آن معنی است که نرم افزار شما در حال حاضر بیشتر مقیاس پذیر است و دارای ابعاد اضافی فانکشنال می باشند. البته توجه داشته باشید که توضیح کدهای لایه اپلیکیشن و فانکشن ها در لایه های مختلف با یک طراحی معماری برای دیگری دارای تفاوت هایی می باشد، اما مفهوم همان است که بیان شد.
مزایای معماری چند لایه نرم افزاری چیست؟
یک معماری نرم افزاری لایه لایه دارای مزایای زیادی می باشد ( به همین دلیل است که در سال های اخیر معماری چند لایه تبدیل به یک معماری محبوب شده است). از همه مهمتر اینکه جدا کردن لایه های مختلف به شما اجازه می دهد که هر لایه را به صورت جداگانه نگهداری و مدیریت کنید. به صورت نظری این کار باید کار مدیریت برنامه را برای برنامه نویس به میزان بسیار زیادی ساده تر کند. یک رویکرد چند لایه ای برای ساخت برنامه های کاربردی تحت وب و اپلیکیشن های کلود هاست بسیار مفید است چرا که علاوه بر افزایش سرعت دسترسی با اطلاعات ریسک هایی که برای دسترسی وجود دارند را نیز به میزان زیادی می کاهد. همچنین استفاده از معماری چند لایه به روزرسانی هر بخش را ساده تر می کند، زمانی که معماری شما به چند لایه تقسیم می شود تغییراتی که باید انجام دهید ساده تر و کمتر می شوند و در نتیجه کاری که ممکن است برای شما غیر ممکن به نظر برسد بسیار راحت تر می شود.
چه زمانی باید از معماری چند لایه نرم افزاری استفاده کنیم؟
موارد استفاده از معماری چند لایه نرم افزار کاملا واضح است ولی با این حال ما در ادامه این مطلب برخی از موارد استفاده از این نوع معماری را برای شما بیان خواهیم کرد:
اگر شما در حال ایجاد یک سیستم هستید که می توان منطق برنامه را به قسمت های کوچک تر جدا کرد، هر قسمت می تواند بر روی سرور گسترش یابد، این موضوع می تواند منجر به این شود که شما از معماری چند لایه نرم افزاری در برنامه و اپلیکیشن خود استفاده کنید.
اگر سیستم مورد نظر شما به ارتباط سریع تر شبکه، قابلیت اطمینان بالا و عملکرد فوق العاده می باشد معماری N لایه توانایی ارائه چنین سیستمی را به شما دارد چرا که این الگوی معماری برای کاهش هزینه های بالای ترافیک شبکه طراحی شده است.
یک مثال از معماری چند لایه نرم افزاری
ما می توانیم نحوه کار کردن یک معماری چند لایه نرم افزاری را با استفاده یک مثال از یک برنامه وب سبد خرید به شما توضیح دهیم که این مثال تقریبا در تمامی سایت های تجاری وجود دارد. نرم افزار سبد خرید توسط کاربران سایت های تجارت الکترونیک برای تکمیل خرید اقلام مختلف مورد استفاده قرار می گیرد. شما انتظار دارید که برنامه دارای ویژگی های متعددی باشد که به کاربر اجازه دهد:
-          موارد انتخاب شده را به سبد خرید اضافه کند
-          موارد مورد نظر را درون سبد خرید خود تغییر دهد
-          پرداخت ها را انجام دهد
لایه کلاینت که در برنامه سبد خرید وجود دارد با استفاده از رابط گرافیکی برنامه با کاربر نهایی برنامه شما ارتباط برقرار می کند و تعامل دارد. لایه کلاینت همچنین با اپلیکیشن در تعامل است و در برنامه درون لایه های مختلف سرور اجرا می شود.  از آنجایی که سبد خرید یک برنامه تحت وب محسوب می شود، لایه کلاینت شامل مرورگر وب نیز می باشد. لایه پرزنتیشن سبد خرید را ارائه می دهد و اطلاعات مربوط به سرویس ها مانند مرورگر محصولات، خرید آنها و اضافه کردن آنها به سبد خرید را ارائه می دهد. لایه پرزنتیشن با سایر لایه ها در تعامل است و با آنها ارتباط برقرار می کند و تلاش می کند که نتیجه را به لایه کلاینت و سایر لایه هایی که در شبکه وجود دارند ارسال کند.
ادامه مثال بالا
سطح ارائه یا همان سطح presentation با پایگاه داده و وب سرویس تماس برقرار می کند، تمامی این فعالیت ها با هدف ارائه یک پاسخ سریع به کاربر نهایی صورت می گیرد. سطح ارائه نقش حیاتی را در این فعالیت اجرا می کند و به عنوان یک چسب در این فعالیت تمامی قسمت های مختلف برنامه سبد خرید را به یکدیگر متصل می کند و  به توابع موجود در سطوح مختلف برای برقراری ارتباط با یکدیگر و نمایش خروجی به کاربر نهایی از طریق مرورگر وب اجازه می دهد.
در این معماری چند لایه، منطق کسب و کار مورد نیاز برای فعالیت های پردازش مانند محاسبه هزینه حمل و نقل از سطح اپلیکیشن به سطح ارائه کشیده شده است. در واقع در این برنامه سطح اپلیکیشن به عنوان یک لایه ادغام عمل می کند و به برنامه های کاربردی اجازه می دهد تا با هر دو سطح داده ها و سطح ارائه به صورت یکپارچه ارتباط برقرار کند. لایه آخر که با نام لایه دیتا شناخته می شود برای نگهداری داده ها مورد استفاده قرار می گیرد، این لایه معمولا شامل سرورهای پایگاه داده است. این لایه داده ها مستقل از سرور برنامه و منطق کسب و کار است.
 
  • logo-samandehi
  • logo-nezam-senfi
  • samane-tadarokat-electronic
  • logo-bakutel
  • انجمن صنفی کارفرمایی فروشگاه های اینترنتی شهر تهران
  • شورای عالی انفورماتیک کشور
  • اتحادیه صنف فناوران رایانه تهران
  • etehadieMajazi