یکی از معماریهای مهم نرم افزاری معماری MVC یا مدل-ویو-کنترلر (Model-View-Controller) است که در طراحی و ساخت اپلیکیشنها و سرویسهای مختلف مورد استفاده قرار میگیرد. یکی از شاخههای دیگر این سبک معماری MVP یا مدل-ویو-پرزنتر (Model-View-Presenter) که بیشتر برای ساخت رابط کاربری (UI) مورد استفاده قرار میگیرد. در این مدل Presenter به عنوان “مرد میانی” حساب شده و تمام منطق برنامه به Presenter ارسال میشود. در این مطلب قصد داریم شما را با معماری نرم افزاری MVP آشنا کنیم و تفاوت آن را با MVC بیان کنیم، همراه ما باشید.
برنامه نویسان بهتر است وقت خود را روی حل مشکلات و چالشهای جدید بگذارند. متاسفانه بسیاری از مسائل تکراری و غیرضروری در هنگام اجرای پروژه وقت برنامه نویسان را میگیرد. همینطور توسعه و نگهداری نرم افزارهایی که از یک الگو یا معماری خاص پیروی نمیکنند، مشکل است. وجود معماریهای مختلفی مثل MVC، MVP یا MVVP کمک میکنند پیچیدگیهای برنامه تا حد ممکن کم شوند و فرآیند توسعه نرم افزار افزایش پیدا کند.
معماری یک نرم افزار به تعریف ساختار بندی کلی سیستم و ارتباط آن با سایر بخشها اشاره دارد. هر معماری شامل الگوهای (Pattern) مختلفی است که با توجه به نوع پیاده سازی نرم افزار انتخاب میشوند. پترن هایی مانند MVP به نوعی زیرشاخه معماری نرم افزار محسوب میشوند. این الگوها مانند یک نقشه راه برای توسعه دهنده عمل میکنند و اجازه نمیدهند که او گرفتار تکرار شود. انتخاب معماری نرم افزاری که قصد پیاده سازی آن را دارید باید به گونه ای باشد که نیازمندیهای فنی و عملیاتی سیستم را به خوبی تامین کند.
مدل MVC نوعی معماری نرم افزار است که از 3 بخش تشکیل شده است :
در یک مثال ساده میتوان کارکرد این معماری را به این شکل توضیح داد که شما آدرس وب سایتی را در مرورگر وارد میکنید. سرور کنترلر مناسب را فراخوانده و کنترلر نیز با هماهنگی ویو و مدل، پاسخ مناسب با درخواست شما را تحویل میدهد.
معماری MVP الگوی معماری جداگانه ای برای پیاده سازی رابط کاربری نرم افزار دارد که مدل-ویو-پرزنتر (Model-View-Presenter) نام دارد. در این معماری، بخش ارائه دهنده (Presenter) مسئولیت ارائه منطق را به عهده دارد و به دلیل دخاالت داشتن در سازماندهی عملیات سطح بالای سیستمی، فارغ از یک الگوی طراحی، یک الگوی معماری محسوب میشود. به طور کلی این الگوی معماری به کاهش پیچیدگیهای پیاده سازی بخش رابط کاربری نرم افزارها کمک زیادی میکند. مدل MVP به 3 بخش کلی زیر تقسیم میشود:
3 بخش بالا به زبان ساده این کار را انجام میدهند:
برای توسعه اپلیکیشنهای مبتنی بر اندروید امکان استفاده از معماری و الگوهای زیادی وجود دارد اما MVP کمک میکند پروژههای بزرگتر را با دردسر کمتری به اتمام برسانید. در این معماری بخش Model وظیفه مدیریت منطق برنامه و کار با داده را به عهده دارد. این بخش در اپلیکیشنهای اندروید توسط لایه دسترسی به داده مانند APIهای پایگاه داده اجرا میشود.
View نیز رابط اتصالی یبن کاربران و Presenter است. بخش P که عامل متمایز کننده این معماری از معماری MVC است رابطی بین بخش ویو و کاربر میباشد. این قسمت وظیفه دارد با دریافت درخواست کاربر و ارائه آن به بخش مدل، قسمت ویو را آپدیت کرده و نتایج درخواست را به کاربر نشان بدهد.
این معماری در نرم افزارهای اندروید قابلیت نگهداری و تست پذیری را فراهم میکند. همچنین این امکان را برای توسعه دهندگان فراهم میکند که با جداسازی بخش ویو بتوانند تست واحد (Unit Testing) را به آسانی انجام دهند. پیشنهاد میکنیم برای آشنایی بیشتر به مقاله Unit Testing چیست مراجعه کنید.
زبانهای مختلفی وجود دارند که به شما اجازه میدهند معماری MVP را در برنامههای خود استفاده کنید. برای مثال در زبان PHP، فریم ورک Nette از معماری MVP پشتیبانی میکند. در جاوا هم فریم ورک هایی مثل JFace و Vaadin این قابلیت را دارند. همینطور در تکنولوژی دات نت، میتوان معماری MVP را به کار گرفت. MVP محبوبیت زیادی در اندروید دارد و بسیاری از برنامه نویسان اندروید از این الگو استفاده میکنند.
MVP یک Pattern یا الگو از معماری MVC بوده و تفاوت اصلی آن در نحوه کار Controller و Presenter است. زمانی که به کمک یک معماری مثل MVC یا MVP منطق و نمایش برنامه را از هم جدا میکنیم، تمرکز ما روی اجزای مختلف پروژه بیشتر میشود. شاید در پروژههای کوچک استفاده از ساختاری مثل MVP چندان به صرفه نباشد اما وقتی پروژه ما بزرگتر شده و اعضای تیم، قابلیتهای محصول، حجم کدها و غیره بیشتر میشوند منطقی است از یک معماری مثل MVP استفاده کنیم. با این کار زمان زیادی برای خود و اعضای تیم میخریم و فرآیند توسعه، خطایابی و حل مشکلات پروژه کاهش مییابد. اگر تجربه کار با الگو MVP را دارید در بخش نظرات تجربیات خود را با ما و تیم سون لرن در میان بگذارید.
بله در معماری ری اکت فهمش کمی سخته اما شدنی هست. میتونید این مقاله رو مطالعه کنید.