**معماری چندلایه** (در مهندسی نرم‌افزار) برای آسانتر نمودن پردازش رایانه‌ای بکار می‌رود. این گونه معماری برای توصیف و تشریح فرایندی بکار می‌رود که در آن درجه‌ای از تفکیک میان اجزای گسسته بدست آمده باشد. این تفکیک توسط یک یا چند پیشکار نرم‌افزاری اعمال می‌شود. مثالی از آن کاربرد میان افزار برای افزایش بهره‌وری خدمات داده‌ای میان یک کاربر و یک پایگاه داده‌ها می‌باشد. همچنین ممکن است از این عبارت با عنوان معماری 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 جریان داده‌ها در یک معماری چند لایه یک چالش مهم است که هرچه اندازه سامانه سامانه بزرگتر باشد، بیشتر اهمیت خود را نشان می‌دهد. اندازه‌گیری پاسخ برنامه مفاهیمی برای اندازه‌گیری کارایی تراکنش‌ها بین لایه‌های مختلف بیان می‌کند.

جستارهای وابسته
---------------

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

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «Multitier architecture». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ژانویه ۲۰۱۶.

| * ن
* ب
* و
الگوهای طراحی |
| --- |
| الگوهای طراحی GO4 | 

|  |  |
| --- | --- |
| ایجاد | 
* الگوی کارخانه انتزاعی
* الگوی سازنده
* الگوی متد کارخانه شیء
* الگوی نمونه اولیه
* الگوی یگانه

 |
| ساختاری | 
* آداپتور
* پل
* کامپوزیت
* آذینگر
* نما
* مگس وزن
* وکالت

 |
| رفتاری | 
* زنجیره مسئولیت
* الگوی فرمان
* مفسر
* الگوی تکرار
* میانجی
* یادگاری
* ناظر
* وضعیت
* استراتژی
* متد الگو
* بازدیدگر

 |

 |
| Concurrencypatterns | 
* Active object
* Balking
* Binding properties
* Double-checked locking
* Event-based asynchronous
* Guarded suspension
* Join
* قفل
* مانیتور
* Proactor
* Reactor
* Read write lock
* زمان‌بندی
* الگوی مخزن نخ
* Thread-local storage

 |
| الگوهایمعماری | 
* Front controller
* مفسر
* مدل-نما-کنترل‌گر
* ADR
* Entity-component-system
* چندلایه
* Specification
* Publish–subscribe
* اشیای لخت
* Service locator
* ثبت کنشور
* Identity map
* شی دسترسی به داده
* شی انتقال داده
* وارونگی کنترل
* Model 2

 |
| دیگرالگوها | 
* Blackboard
* Business delegate
* Composite entity
* تزریق نیازمندی
* Intercepting filter
* بارگیری تنبلانه
* شیء ساختگی
* Null object
* استخر اشیاء
* Servant
* Twin
* Type tunnel
* Method chaining

 |
| کتاب‌ها | 
* *الگوهای طراحی*
* *Enterprise Integration Patterns*
* *Patterns of Enterprise Application Architecture*
* *Analysis patterns*

 |
| افراد | 
* کریستوفر الکساندر
* Erich Gamma
* Ralph Johnson
* John Vlissides
* گریدی بوچ
* کنت بک
* وارد کانینگهام
* مارتین فولر
* رابرت سسیل مارتین
* Jim Coplien
* Douglas Schmidt
* Linda Rising

 |
| جوامع | 
* The Hillside Group
* The Portland Pattern Repository

 |