من تا به حال برنامه نویسهای زیادی را دیدهام که میپرسند «چه تفاوتی بین الگوهای معماری MVC و Three-Tier وجود دارد؟» قصد من روشن کردن این سردرگمی، بوسیله مقایسه هردو، با کنار هم قرار دادن آنها میباشد. حداقل در این بخش، من اعتقاد دارم، منبع بیشتر این سردرگمیها در این است که هر دوی آنها، دارای سه لایه متمایز و گره، در دیاگرام مربوطهاشان هستند.
اگر شما به دقت به دیاگرام آنها نگاه کنید، پیوستگی را خواهید دید. بین گرهها و راه اندازی آنها، کمی تفاوت است.
معماری سه لایه
سیستمهای سه لایه، واقعاً لایهها را میسازند: لایه UI به
لایه Business logic دسترسی دارد و لایه Business logic به
لایه Data دسترسی دارد. اما لایه UI دسترسی مستقیمی
به لایه Data ندارد و باید از طریق لایه Business logic و روابط آنها
عمل کند. بنابراین میتوانید فکر کنید که هر لایه، بعنوان یک جزء،
آزاد است؛ همراه با قوانین محکم طراحی دسترسی بین لایه ها.
MVC
در مقابل، اینPattern ، لایههای سیستم را نگهداری نمیکند. کنترلر به
مدل و View (برای انتخاب یا ارسال مقادیر) دسترسی
دارد. View نیز دسترسی دارد به مدل . دقیقاً چطور کار میکند؟
کنترلر در نهایت نقطه تصمیم گیری منطقی است. چه نوع منطقی؟ نوعاً، کنترلر، ساخت و تغییر مدل را در اکشنهای مربوطه، کنترل
خواهد کرد. کنترلر سپس تصمیم گیری میکند که برای
منطق داخلیش، کدام View مناسب
است. در آن نقطه، کنترلر مدل را به View ارسال میکند. من در اینجا چون هدف بحث مورد دیگهای میباشد،
مختصر توضیح دادم.
چه موقع و چه طراحی را انتخاب کنم؟
اول از همه، هر دو طراحی قطعاً و متقابلاً منحصر بفرد
نیستند. در واقع طبق تجربهی من، هر دو آنها کاملاً هماهنگ هستند. اغلب ما از معماری چند
لایه استفاده میکنیم مانند معماری سه لایه، برای یک ساختار معماری کلی. سپس من در
داخل لایه UI، از MVC استفاده میکنم، که در زیر دیاگرام آن را آورده
ام.