معماری چندلایه

**معماری چندلایه** (در مهندسی نرم‌افزار) برای آسانتر نمودن پردازش رایانه‌ای بکار می‌رود. این گونه معماری برای توصیف و تشریح فرایندی بکار می‌رود که در آن درجه‌ای از تفکیک میان اجزای گسسته بدست آمده باشد. این تفکیک توسط یک یا چند پیشکار نرم‌افزاری اعمال می‌شود. مثالی از آن کاربرد میان افزار برای افزایش بهره‌وری خدمات داده‌ای میان یک کاربر و یک پایگاه داده‌ها می‌باشد. همچنین ممکن است از این عبارت با عنوان معماری n-لایه یاد شود. بیشترین شکل استفاده آن در حالت معماری سه-لایه می‌باشد.

## معماری سه لایه
معماری سه لایه، یک الگوی معماری مشتری خدمتگزار در مهندسی نرم‌افزار است که در آن سه واحد 'واسطه کاربری' (نمایش)، 'پردازش منطقی' (منطق) و 'دسترسی به داده' (داده) به صورت واحدهای مستقل و حتی بر روی پلت فرم‌های جداگانه، توسعه و نگهداری می‌شوند. برای اولین بار این معماری توسط آقای John J. Donovan در Open Environment Corporation به کار گرفته شد.

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

معمولاً لایه نمایش بر روی کامپیوتر شخصی یا workstation قرار گرفته می‌شود و دارای یک واسطه کاربری گرافیکی می‌باشد. لایه منطق خود از چندین ماجول جداگانه ساخته شده که معمولاً بر روی یک سرور برنامه به کار گرفته می‌شود. لایه داده نیز برای کار از یک سرور پایگاه داده کمک می‌گیرد. با توجه به حجم و پیچیدگی، معمولاً لایه منطق خود به چندین زیر لایه شکسته می‌شود که به چنین معماری ای، معماری چند صفحه‌ای (n-tier architecture) گفته می‌شود.

## لایه نمایش
این لایه بالایی‌ترین لایه یک برنامه نرم‌افزاری محسوب می‌شود که در واقع کاربر نهایی، تنها با این لایه در ارتباط می‌باشد. وظیفه این لایه این است که اطلاعاتی از لایه منطق دریافت کرده‌است را به شکل مناسبی مثلاً در قالب یک واسطه کاربری گرافیکی به کاربر نمایش دهد.

## لایه منطق (لایه میانی)
این لایه وظیفه این دارد که بر روی داده‌هایی که از لایه داده دریافت کرده پردازش‌های لازم را انجام داده و در اختیار لایه نمایش قرار گذارد. در واقع عملکرد اصلی برنامه در این لایه پیاده‌سازی می‌شود. هم چنین این لایه هیچ وقت به صورت مستقیم مثلاً با پایگاه داده صحبت نمی‌کند و به واسطه لایه داده این کار را انجام می‌دهد.

## لایه داده
لایه داده شامل ارتباط به پایگاه داده، فایل سرور و غیره و هم چنین لایه دسترسی به داده که عملیات‌های مانا بر روی داده‌ها انجام می‌شود، می‌باشد. این لایه وظیفه دارد یک واسطه برای لایه منطق فراهم آورد که از طریق آن لایه منطق بتواند بدون درگیر شدن در پیچیدگی‌های مربوط به ارتباط مستقیم با پایگاه داده و … بتواند عملیات لازم شامل ذخیره‌سازی، ویرایش، حذف و بازیابی داده‌ها را انجام دهد. اگر چه چنین معماری ای، ممکن است تأثیر منفی بر روی کارایی و سرعت برنامه نهایی بگذارد ولی باعث می‌شود که تأثیر به سزایی بر روی بهبود مقیاس‌پذیری و نگهداری برنامه بگذارد.

### استفاده در توسعه برنامه‌های تحت وب
استفاده اصلی معماری سه لایه در توسعه نرم‌افزارهای تحت وب می‌باشد.

### ملاحظات دیگر
نحوه انتقال داده بین لایه‌های مختلف، قسمتی از معماری می‌باشد که در این زمینه پروتکل‌های متعددی از جمله SNMP, CORBA, Java RMI, .Net Remoting, Windows Communication Foundation, sockets, UDP و … وجود دارند. لایه‌های جداگانه معمولاً (نه لزوماً) بر روی حتی سرورهای فیزیکی جداگانه اجرا می‌شوند و هر لایه نیز می‌تواند به صورت جداگانه به صورت خوشه‌ای در آید.

## قابلیت ردیابی
قابلیت ردیابی end-to-end جریان داده‌ها در یک معماری چند لایه یک چالش مهم است که هرچه اندازه سامانه سامانه بزرگتر باشد، بیشتر اهمیت خود را نشان می‌دهد. اندازه‌گیری پاسخ برنامه مفاهیمی برای اندازه‌گیری کارایی تراکنش‌ها بین لایه‌های مختلف بیان می‌کند.

## جستارهای وابسته
* مدل کارخواه-کارساز
* معماری سه-لایه
* منطق کاری

## منابع

* 

رده:اصطلاحات مهندسی نرم‌افزار
رده:الگوهای طراحی نرم‌افزار
رده:الگوی معماری (علم رایانه)
رده:طراحی نرم‌افزار
رده:معماری رایانش توزیع‌شده
رده:معماری نرم‌افزار