معماری MVP چیست؟

سطح مقاله: ساده
زمان مطالعه: 6 دقیقه
۱۰ مهر ۱۳۹۸

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

معماری نرم افزار چیست؟

معماری نرم افزار چیست؟

برنامه نویسان بهتر است وقت خود را روی حل مشکلات و چالش های جدید بگذارند. متاسفانه بسیاری از مسائل تکراری و غیرضروری در هنگام اجرای پروژه وقت برنامه نویسان را می گیرد. همینطور توسعه و نگهداری نرم افزارهایی که از یک الگو یا معماری خاص پیروی نمی کنند، مشکل است. وجود معماری های مختلفی مثل MVC، MVP یا MVVP کمک می کنند پیچیدگی های برنامه تا حد ممکن کم شوند و فرآیند توسعه نرم افزار افزایش پیدا کند.

معماری یک نرم افزار به تعریف ساختار بندی کلی سیستم و ارتباط آن با سایر بخش ها اشاره دارد. هر معماری شامل الگوهای (Pattern) مختلفی است که با توجه به نوع پیاده سازی نرم افزار انتخاب می شوند. پترن هایی مانند MVP به نوعی زیرشاخه معماری نرم افزار محسوب می شوند. این الگوها مانند یک نقشه راه برای توسعه دهنده عمل می کنند و اجازه نمی دهند که او گرفتار تکرار شود. انتخاب معماری نرم افزاری که قصد پیاده سازی آن را دارید باید به گونه ای باشد که نیازمندی های فنی و عملیاتی سیستم را به خوبی تامین کند.

الگوی معماری MVC چیست؟

معماری نرم افزاری MVC چیست؟

مدل MVC نوعی معماری نرم افزار است که از 3 بخش تشکیل شده است :

  • Model : این بخش رابط بین ویو و کنترلر است. مدل خود نیز شامل زیربخش های Data Model، Business Model و View Model است که وظایفی مانند دریافت و ذخیره اطلاعات، تعامل با داده ها، ارسال اطلاعات و شکل دهی منطق سیستمی را به عهده دارند.
  • View: ویو بخشی است که رابط بین کاربر و نرم افزار است و تعامل بین این دو بخش را کنترل می کند.
  • Controller: کنترلر رابط بین دو بخش گفته شده است و برای مدیریت درخواست ها و عملیات های مبتنی بر منطق به کار گرفته می شود.

در یک مثال ساده می توان کارکرد این معماری را به این شکل توضیح داد که شما آدرس وب سایتی را در مرورگر وارد می کنید. سرور کنترلر مناسب را فراخوانده و کنترلر نیز با هماهنگی ویو و مدل، پاسخ مناسب با درخواست شما را تحویل می دهد.

معماری نرم افزاری MVP چیست؟

معماری MVP چیست؟

معماری MVP الگوی معماری جداگانه ای برای پیاده سازی رابط کاربری نرم افزار دارد که مدل-ویو-پرزنتر (Model-View-Presenter) نام دارد. در این معماری، بخش ارائه دهنده (Presenter) مسئولیت ارائه منطق را به عهده دارد و به دلیل دخاالت داشتن در سازماندهی عملیات سطح بالای سیستمی، فارغ از یک الگوی طراحی، یک الگوی معماری محسوب می شود. به طور کلی این الگوی معماری به کاهش پیچیدگی های پیاده سازی بخش رابط کاربری نرم افزارها کمک زیادی می کند. مدل MVP به 3 بخش کلی زیر تقسیم می شود:

  • Model: در نقش یک واسط عمل می کند و داده هایی که باید در رابط کاربری نمایش داده شوند را تعریف می کند.
  • View: داده ها را نمایش می دهد و دستورات کاربر را به Presenter ارسال می کند.
  • Presenter: مثل یک پل بین Model و View است. Presenter داده های مختلف را از مخازن (Model) بازیابی می کند و آنها را برای نمایش در View آماده می کند.

3 بخش بالا به زبان ساده این کار را انجام می دهند:

  • Model: چه چیزی را نشان دهم؟
  • View: چطور آن را نمایش دهم؟
  • Presenter: به مدل چه فرمتی برای نمایش بدهم و رویدادهای کاربر مثل ورودی دادن را چطور مدیریت کنم؟

کاربردهای معماری نرم افزاری MVP چیست؟

برای توسعه اپلیکیشن های مبتنی بر اندروید امکان استفاده از معماری و الگوهای زیادی وجود دارد اما MVP کمک می کند پروژه های بزرگتر را با دردسر کمتری به اتمام برسانید. در این معماری بخش Model وظیفه مدیریت منطق برنامه و کار با داده را به عهده دارد. این بخش در اپلیکیشن های اندروید توسط لایه دسترسی به داده مانند API های پایگاه داده اجرا می شود.

View نیز رابط اتصالی یبن کاربران و Presenter است. بخش P که عامل متمایز کننده این معماری از معماری MVC است رابطی بین بخش ویو و کاربر می باشد. این قسمت وظیفه دارد با دریافت درخواست کاربر و ارائه آن به بخش مدل، قسمت ویو را آپدیت کرده و نتایج درخواست را به کاربر نشان بدهد.

این معماری در نرم افزارهای اندروید قابلیت نگهداری و تست پذیری را فراهم می کند. همچنین این امکان را برای توسعه دهندگان فراهم می کند که با جداسازی بخش ویو بتوانند تست واحد (Unit Testing) را به آسانی انجام دهند. پیشنهاد می کنیم برای آشنایی بیشتر با Unit Testing به مطلب مربوطه در سایت مراجعه کنید.

پیاده سازی معماری MVP در زبان های برنامه نویسی مختلف

زبان های مختلفی وجود دارند که به شما اجازه می دهند معماری MVP را در برنامه های خود استفاده کنید. برای مثال در زبان PHP، فریم ورک Nette از معماری MVP پشتیبانی می کند. در جاوا هم فریم ورک هایی مثل JFace و Vaadin این قابلیت را دارند. همینطور در تکنولوژی دات نت، می توان معماری MVP را به کار گرفت. MVP محبوبیت زیادی در اندروید دارد و بسیاری از برنامه نویسان اندروید از این الگو استفاده می کنند.

نتیجه گیری

MVP یک Pattern یا الگو از معماری MVC بوده و تفاوت اصلی آن در نحوه کار Controller و Presenter است. زمانی که به کمک یک معماری مثل MVC یا MVP منطق و نمایش برنامه را از هم جدا می کنیم، تمرکز ما روی اجزای مختلف پروژه بیشتر می شود. شاید در پروژه های کوچک استفاده از ساختاری مثل MVP چندان به صرفه نباشد اما وقتی پروژه ما بزرگتر شده و اعضای تیم، قابلیت های محصول، حجم کدها و غیره بیشتر می شوند منطقی است از یک معماری مثل MVP استفاده کنیم. با این کار زمان زیادی برای خود و اعضای تیم می خریم و فرآیند توسعه، خطایابی و حل مشکلات پروژه کاهش می یابد. اگر تجربه کار با الگو MVP را دارید در بخش نظرات تجربیات خود را با ما و تیم سون لرن در میان بگذارید.

نویسنده
شاید به ساخت یک اثر هنری فکر کنیم و یا بخواهیم بلندترین قله ها را فتح کنیم؛ ما هنوز نمی دانیم از زندگی چه چیزی را بیشتر از همه می خواهیم. پس هر کاری که از دستتان بر می آید برای زندگی انجام دهید و سرانجام قلب تان، این انتخاب بزرگ را انجام خواهد داد...

نظرات کاربران

محم خان محمدی

در مبحث توسعه اندروید این معماری بدلیل تفکیک خوب بین لایه های ویو و دیتا بسیار از حجم مشکلات پر تکرار کم میکنه!بنظرم حتی در پروژهده های کوچک هم رعایت این معماری الزامیست! البته در دوره های آقای شاهینی از اهمیت انتخاب و اجرای مناسب الگوهای معماری به خوبی پدراخته شده که مطالعه اون ها رو پیشنهاد میکنم 👍

دانیال یوسفی فر

با تشکر از مطلب خوبتون.
با توجه به عکس که برای MVC Pattern گذاشتید. در این تصویر نشان داده می شود که ارتباطی بین Model و View هست. ولی در MVC واقعی ارتباطی بین Model و View نیست. و این Controller است که ارتباط این دو رو با هم برقرار می کند.

حمیدرضا

 

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 
گزارش مشکل