معماری سه لایه چیست؟
این معماری در اصل میتوان گفت برگرفته شده از ایده معماری چند لایه (Multi tire) میباشد. در معماری سه لایه پروژههای نرم افزاری بر خلاف مدل دو لایه که باعث افزایش ترافیک و کاهش شدید انعطاف پذیری میشود، در سه لایه اصلی طراحی و پیاده سازی میشوند.این سه لایه عبارت اند از:
۱) لایه نمایش (Presentation Layer)
۲) لایه ی منطقی (Business Logic Layer)
۳) لایه ی دسترسی به داده ها (Data Access Layer)
این سه لایه هر کدام وظایف جداگانه و خاص خود را دارند.ولی این لایه ها با یکدیگر در ارتباط هستند و لایه ی منطقی، واسط لایه ی “دسترسی به داده ها” و “لایه ی نمایش” می باشد. به عبارت دیگر، لایه ی نمایش نباید به صورت مستقیم با لایه ی دسترسی به داده ها ارتباط برقرار کند.
اکنون به صورت مختصر به شرح هر لایه می پردازیم:
لایه نمایش: این لایه در ارتباط با کاربر می باشد و شامل فرمها ، واسطها و منوها و هر چیزی است که برای کاربر قابل رویت می باشد. وظیفه این لایه اینست که با دو لایه دیگر بنابر نیاز ارتباط برقرار کرده و تقاضای کاربران را به آنها تحویل دهد یا نتیجه را از آنها بگیرد.
لایه منطقی: وظیفه این لایه گرفتن اطلاعات از لایه نمایش و کنترل آنها با قوانین (مثل قوانین کلید اصلی و خارجی و ...) یا اعمال قوانین بر روی آنها و تبدیل آنها به اطلاعات قابل فهم برای لایه دسترسی به داده ها جهت ذخیره و بازیابی در پایگاه داده میباشد. در واقع این لایه نقش یک لایه میانی را بازی میکند.
لایه دسترسی به داده ها: این لایه نقش ذخیره،حذف، بازیابی و بروزرسانی اطلاعات را برعهده دارد که دادهها را از لایه منطقی گرفته یا اطلاعات درخواستی را به آن تحویل میدهد. در عمل ثابت شده است که ارتباط مستقیم لایه دسترسی به داده ها با لایه نمایش در سیستم های بزرگ هم از جهت امنیت و هم کارآیی سیستم را دچار مشکل میکند. به همین دلیل است که از لایه ی منطقی (Business) در معماری سه لایه استفاده می کنیم.
نحوه همکاری و تعامل این سه لایه:
• کاربر برای داده های موجود در پایگاه داده درخواستی را ارسال می کند.
• لایه Data Access داده های درخواسای را بازیابی می کند و از طریق لایه Business آنها را برای مشاهده کاربر به لایه Presentation می فرستد.(البته برای بازیابی اطلاعات می توان اطلاعات را مستقیمآ از لایه Data Access به لایه Presentation نیز فرستاد.)
• در این مرحله لایه Presentation اطلاعاتی که از لایه Business (و یا مستقیمآ از پایگاه داده) گرفته است را نشان می دهد.
• اکنون کاربر می تواند داده های نمایش داده شده را با توجه به نیاز خود پردازش کند.(کارهایی از قبیل درج، حذف، ویرایش و ...)
• لایه Business صحت و درستی داده هایی که کاربر برای پردارش اطلاعات وارد نموده است را بررسی می کند.
• اگر اطلاعات درست باشند لایه Business آنها را برای ثبت در پایگاه داده به لایه Data Access می فرستد.
چرا از معماری سه لایه استفاده می کنیم؟
مهمترین دستاورد معماری سه لایه استقلال قسمتهای مختلف پروژه با یکدیگر می باشد. به عنوان نمونه یک سیستم شلوغ با تعداد زیاد کاربر و پایگاه داده بزرگ را در نظر بگیرید.اگر اطلاعاتی که کاربران به طور همزمان وارد می کنند در پایگاه داده اعتبارسنجی شوند باعث ترافیک زیادی در سیستم می شود و کارایی پایین می آید.ولی در معماری سه لایه،اطلاعات وارد شده توسط هر کاربر در لایه Business همان برنامه ای که کاربر با آن کار می کند اعتبارسنجی می شود و در نتیجه از به وجود آمدن این مشکل بزرگ تا مقدار زیادی جلوگیری می شود.
ویژگی دیگر معماری سه لایه امکان گسترش آن میباشد.در این معماری برنامه نویسان میتوانند در صورت تغییرات که میتواند کوچک یا بزرگ باشد در هر لایه این تغییرات را اعمال نمایند بدون اینکه نیاز به تغییر در لایههای دیگر باشد یا کمترین تغییرات متوجه لایه دیگر میشود. بعنوان مثال امروزه در سیستمهای مدرن بانکی قوانین تغییرات زیادی را دارند که اگر از معماری دو لایه استفاده شود جهت اعمال این تغییرات نیاز به تغییرات فراوانی در فایلهای اجرایی یا بانک اطلاعاتی و نصب مجدد آنها برای تمامی کاربران میباشد ولی در معماری سه لایه اگر به فرض فرمول محاسبه سود تغییر کند با اعمال تغییر در لایه Business و عوض کردن این لایه با ویرایش جدید، تمامی سیستمها بدون آنکه متوجه تغییر شوند و یا نیاز به نصب مجدد داشته باشند میتواند با سیستم جدید ارتباط برقرار کنند.همچنین پایگاه داده (DataBase) برنامه را می توان به راحتی تغییر داد .
* البته باید به این نکته توجه نمود که در معماری سه لایه برنامه از تعداد زیادی بخش ها، کلاس ها و ... تشکیل می شود که برای پروژه های خیلی کوچک کاربردی (نه آموزشی) استفاده از آن درست به نظر نمی رسد.ولی در حالت کلی مزایای معماری سه لایه خیلی بیشتر از معایب آن می باشد.