معماری ۳ لایه

بندانگشتی|معماری چند لایه
در مهندسی نرم افزار، سیستم‌های نرم افزاری را به دلیل کاهش پیچیدگی و ساده‌تر شدن آن‌ها و همچنین به خاطر تسهیل در امر نگــهداری و اعمال تغییرات در آنها، به چـند زیر سیستم تقسیم کـرده و قسمت‌های مستقل سیستم را به صورت لایه‌های جداگانه و مستقل از هم طراحی می‌کنند. هر کدام از این لایه‌ها ضمن اینکه وظیفه خاص خود را دارند، با هم در ارتباط بوده به‌طوری‌که هر لایه به لایه‌های بالایی و پایینی خود سرویس داده و از آن‌ها سرویس می‌گیرد. انتقال اطلاعات و داده‌ها در بین این لایه‌ها از طریق Objectهایی که اصطلاحا DTO نامـیده می‌شوند، انجام می‌گیرد و کاربر نهایی فقط با لایه بیرونی  در ارتباط بوده و کاری با لایه‌های دیگر ندارد. به این روش طراحی سیستم‌های نرم افزاری، معماری چندلایه یا N-Tier گفته می‌شود.

## معماری ۳ لایه یا 3-Tier
چپ|ارتباط لایه‌ها در معماری سه لایه طراحی سیستم‌های نرم افزاری
معماری ۳ لایه حالت خاصی از معماری چند لایه می‌باشد که سیستم‌ها بر اساس این معماری به ۳ لایه جداگانه تقسیم می‌شوند. این لایه‌ها عبارتنداز:
# Presentation Layer (لایه نمایش): این لایه که به آن لایه Interface نیز گفته می‌شود شامل تمام عناصر قابل رویت مربوط به رابط گـرافیکی کاربر می‌باشد و در واقع هــر آنچه را که کاربر نهایی استفاده‌کننده از سیستم مشاهـده می‌کند از قبیل فرم‌ها، کنترل‌های روی فرم‌ها، تصاویر، منوهای برنامه و... در این لایه قرار می‌گیرند. کاربر سیستم فقط با این لایه در ارتباط بوده و هیچ ارتباطی با دیگر لایه‌ها ندارد و در واقع درخواست خود را از طریق لایه نمایش به لایه‌های زیرین انتقال می‌دهد. وظیفه لایه نمایش این است که اطلاعات لازم را از کاربر گرفته و در صورت لزوم برخی Validation یا اعتبار سنجی‌هایی که باید در این لایه انجام گیرد مثل: کنترل طول فیلدها، کنترل اجباری بودن بعضی فیلدها و... را انجام می‌دهد و این اطلاعات را برای هر گونه پردازش لازم دیگری به لایه بعدی ارسال می‌نماید و در واقع هیچ اثری از منطق اصلی برنامه و اتصال به بانک اطلاعاتی در این لایه دید نمی‌شود.
# Business Logic Layer (لایه منطق تجاری): این لایه که به آن لایه میانی (Middle Tier) نیز گفته می‌شود حاوی منطق اصلی برنامه بوده و وظیفه ارتباط بین لایه نمایش و لایه داده را بر عهده دارد. در واقع کلیه درخواست‌هایی که در اثر تعامل کاربر با لایه نمایش ایجاد شده‌است به این لایه منتقل شده و تمام پردازش‌های لازم بر اساس منطق اصلی برنامه در این لایه انجام شده و نتیجه این پردازش مجدداً به لایه نمایش منتقل شده و برای کاربر به نمایش درمی آید. گاهی اوقات درخواست کاربر به گونه‌ای است که لایه منطق تجاری برای انجام آن نیاز دارد که با لایه داده یعنی لایه زیرین خود ارتباط داشته باشد مثلاً کاربر ممکن است عملیات جستجو در محصولات یک شرکتی را بخواهد انجام دهد به این صورت که از طریق لایه نمایش لیست محصولات شرکت را درخواست می‌نماید، لایه نمایش درخواست کاربر را به لایه منطق تجاری ارسال می‌کند و این لایه نیز به دلیل اینکه انجام درخواست کاربر نیاز به برقراری ارتباط با لایه داده دارد، درخواست کاربر را به لایه داده ارسال می‌کند، لایه داده نیز درخواست کاربر را انجام داده و لیست محصولات شرکت را از بانک اطلاعاتی دریافت کرده و به لایه بالایی خود یعنی لایه منطق برنامه انتقاال داده و لایه منطق برنامه نیز این لیست را عینا با لایه بالایی خود یعنی لایه نمایش انتقال داده و در نهایت لایه نمایش این لیست را به کاربر نمایش می‌دهد. بنابراین وظیفه اصلی لایه منطق برنامه اعمال منطق اصلی برنامه بر روی درخواست کاربران و نیز برقراری ارتباط بین لایه نمایش و لایه داده می‌باشد.
# Data Access Layer (لایه دسترسی به داده): این لایه که به آن لایه بانک اطلاعاتی نیز گفته می‌شود وظیفه مدیریت اطلاعات موجود در بانک اطلاعاتی یا همان Database را بر عهده دارد و بر اساس درخواست‌هایی که از لایه بالایی خود دریافت می‌کند عملیاتی از قبیل: حذف، اضافه، اصلاح، خواندن اطلاعات و... را بر روی بانک اطلاعاتی انجام داده و نتیجه عمل را به لایه بالایی خود ارسال می‌کند. باید توجه داشت که ارتباط با بانک اطلاعاتی فقط از طریق لایه داده انجام می‌گیرد.

## مزایا و معایب معماری ۳ لایه
از مزایای معماری ۳ لایه یا چند لایه می‌توان به عدم وابستگی لایه‌ها به همدیگر اشاره نمود. مثلاً لایه داده مستقل از لایه‌های دیگر عمل کرده و در صورت لزوم می‌توان با سرعت بالا و هزینه پایین این لایه را تغییر داد. به عنوان مثال در برنامه‌ای که از بانک اطلاعاتی SQL Server استفاده می‌شود به راحتی می‌توان بانک اطلاعاتی را به اوراکل (کمیک) یا هر بانک اطلاعاتی دیگر تغییر داد یا مثلاً منطق اصلی برنامه را با کمترین هزینه می‌توان با تغییر لایه منطق تجاری تغییر داد. اما معماری ۳ لایه یا چند لایه همیشه راه حل مناسبی برای طراحــی سیستم‌ها نیست به عبارت دیگر برای طــراحی هر سیستمی به دلیل مـقرون به صــرفه نبودن نمی‌توان از این معماری استفاده کرد. مثلاً برای سیستم‌های کوچک استفاده از معماری ۳ لایه زمان بر و هزینه بر می‌باشد و در واقع هزینه Develope و نگهداری سیستم بالا می‌رود.

## پانویس

## پیوند به بیرون
معماری سه لایه در مهندسی نرم افزار

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

رده:معماری نرم‌افزار