مقدمه‌ای بر معماری سه لایه نرم افزاری


Model-View-Controller که به اختصار MVC خوانده می‌شود به عنوان یکی از محبوب‌ترین الگوهای کدنویسی وب اپلیکیشن ها در سال‌های اخیر مبدل شده است که به همین خاطر، توصیه می‌کنیم افراد تازه کار یک آشنایی نسبی با این الگو داشته باشند خواه تمایل به برنامه نویسی وب داشته باشند خواه علاقمند به کدنویسی در سایر حوزه ها باشند.

پیش از هر چیز، نیاز به رفع ابهام در رابطه با یکسری باورهای نادرست در رابطه با الگوی برنامه نویسی سه لایه یا MVC داریم. خیلی‌ها بر این باورند که ام وی سی یک دیزاین پترن است که این کاملاً اشتباه است! در واقع، ام وی سی یک الگوی معماری طراحی اپلیکیشن است که با دنبال کردن این الگو، به سادگی می‌توان ساختار یک اپلیکیشن، وظایف تک تک بخش‌ها و نحوه ی تعامل بخش‌های مختلف اپلیکیشن را مشخص نمود.

این الگو ابتدا در سال 1979 معرفی شد اما در آن سال‌ها ام وی سی با آنچه امروزه می‌بینیم کاملاً متفاوت بود و مفهوم امروزی ام وی سی اقتباسی است از آنچه در دهه ی هشتاد میلادی وجود داشت. شاید یکی از دلایل محبوبیت این الگوی معماری طراحی سایت را بتوان به دو فریم ورک Struts و Ruby on Rails نسبت داد. این دو فریم ورک بر پایه ی ام وی سی طراحی شده و راه را برای بسیاری از دیگر فریم ورک های زبان‌های برنامه نویسی مختلف باز کردند.

نکته
در دنیای کامپیوتر و نرم افزار، به طور کلی منظور از Framework (فریم ورک به معنی چارچوب) یک زیرساخت برنامه نویسی است که توسط شرکت های بزرگی همچون مایکروسافت، آی بی ام، گوگل و … برای زبان‌های برنامه نویسی مختلف توسعه داده می‌شود که با استفاده از آن می‌توان اقدام به ساخت و توسعه ی اپلیکیشن ها و سرویس های نرم افزاری مختلفی همچون نرم افزارهای دسکتاپ، وب اپلیکیشن، اپلیکیشن موبایل، وب سرویس و … نمود. فریم ورک ها مجموعه‌ای از Class ها و Library هایی هستند که کاملاً انتزاعی بوده و برنامه نویسان بسته به نیاز خود، اقدام به استفاده از آن‌ها می‌کنند و نرم افزارهایی واقعی با آن‌ها می نویسند.

ایده ی پشت الگوی معماری ام وی سی بسیار ساده بوده و می‌توان آن را در قالب موارد زیر بیان نمود:

Model: مدل مسئول مدیریت Business Logic اپلیکیشن است. به طور کلی، منظور از Business Logic کاری است که اپلیکیشن مد نظر ما به آن خاطر طراحی شده است که به نوعی مهم‌ترین بخش از نرم‌افزار است.

View: ویو یا «نمای» اپلیکیشن جایی است که دیتای مختلف در معرض دید کاربران اپلیکیشن قرار می گیرد. به طور مثال، این صفحه از سکان آکادمی که شما ملاحظه می نمایید، بخشی از ویوی وب اپلیکیشن سکان آکادمی است.

Controller: کنترلر همان‌طور که از نامش پیدا است، مسئول کنترل است. به عبارت دیگر، کنترلر درخواست های کاربران را گرفته و بررسی می‌کند ببیند که مسئول پاسخگویی به این درخواست ها کدام بخش از اپلیکیشن است سپس وظیفه ی هر بخش را به آن تفویض می‌کند که یکی از این بخش ها، همواره مدل ها هستند. به طور مثال، مدل هم به بررسی درخواست پرداخته و در صورتی که درخواست درست بود و جوابی داشت، آن جواب را تحویل کنترلر داده و کنترلر هم پاسخ را در اختیار ویو می گذارد.

امروزه اکثر وب اپلیکیشن هایی که با فریم ورک های استاندارد طراحی می‌شوند از این سه لایه برخوردارند لذا آشنایی مفصل با ساختار هر کدام از این لایه ها نیاز به آموزش‌های جداگانه ای دارد که در ادامه ی این فصل، به هر کدام از لایه‌های MVC یک آموزش جداگانه اختصاص خواهیم داد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمان
به نظرم وظیفه مدل و کنترلر رو در پاراگراف آخر جابجا نوشتید. بد نیست تحقیق جامعی در این باره انجام بشه که به طور واضح مشخص بکنه که این مدل هست که رابط بین کنترلر و نمایش هست یا کنترلر! تشکر
کاربر میهمان
کاربر میهمان
نوشتید که الگوی برنامه نویسی سه لایه یا MVC ، ولی این استدلال یک اشتباه فراگیر است
معماری سه لایه که حالت خاصی از معماری n لایه است با MVC تفاوت دارد و تلقی کردن MVC به عنوان معماری سه لایه تقریبا در بسیاری جاها مشاهده می شود اما :

Comparison with the MVC architecture

At first glance, the three tiers may seem similar to the model-view-controller (MVC) concept; however, topologically they are different. A fundamental rule in a three tier architecture is the client tier never communicates directly with the data tier; in a three-tier model all communication must pass through the middle tier. Conceptually the three-tier architecture is linear. However, the [model-view-controller] MVC architecture is triangular: the view sends updates to the controller, the controller updates the model, and the view gets updated directly from the model.

Source: http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture
محمد مهدی  رفیعی
محمد مهدی رفیعی
درود بر شما . سپاس از آموزش خوبتان .
کاربر میهمان
کاربر میهمان
احسنت بر شما ، فوق العاده است.