نویسنده پشتیبانی وب یار
امتیاز مطلب
تعداد بازدید 807
تاریخ بروزرسانی ۲۶ دی ۱۴۰۰

معماری MVI چیست

معماری ها به ما کمک میکند تا کدهایی بهینه تر تولید کنیم به طوری که سازماندهی ، توسعه و نگهداری این کدها در آینده ساده تر باشد.  در این مقاله قصد داریم با یکی از این معماری ها یعنی معماری MVI آشنا شویم.

 

  • چرا از معماری های مختلف برای کد نویسی استفاده میکنیم؟
  • معماری MVI چیست؟
  • این معماری چه کمکی به بهینه نوشتن کدها میکند؟
  • از چه لایه هایی تشکیل شده؟
  • وظیفه هر لایه در این معماری چیست؟
  • معماری MVI چه تفاوت ها و شباهت هایی با معماری MVP دارد؟
  • مزایا و معایب معماری MVI چیست؟

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

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

به عنوان چند نمونه معماری معروف که در کد نویسی از آنها استفاده میشود میتوان به موارد زیر اشاره کرد:

  • معماری MVC (Model View Controller)
  • معماری MVI (Model View Intent)
  • معماری MVVM (Model View View Model)
  • معماری MVP (Model Veiw Preseter)

 

در مقاله قبلی به بررسی معماری MVC  پرداختیم. در این مقاله قصد داریم با هم معماری MVI را بررسی کنیم.

 

 

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

 

mvi

در واقع MVI مخفف کلمات Model – View – Intent می باشد. که یکی از معماری های سه لایه است. اساس این معماری بر پایه Intent بنا شده است. یعنی وظیفه اصلی در این معماری سه لایه بر عهده لایه intent به منظور ارتباط بر قرار کردن با لایه های View و Model است. این معماری یک معماری نوظهور است که از فریمورک Cycle.js الهام گرفته است.

این معماری چه کمکی به بهینه نوشتن کدها میکند؟

معماری MVI یا به طور کلی معماری های سه لایه مثل MVC به ما کمک میکنند تنها با یک بار کد نویسی و فراخوانی آن در قسمت های مختلف علاوه بر اینکه از شلوغی کلاسها در قسمت View میکاهد. بتواند تعامل های UI با کاربر را کنترل کند.

 

معماری MVI از چه لایه هایی تشکیل شده است؟

این معماری از سه لایه Model  ، View و Intent تشکیل شده است. که بر شرح وظیفه هریک از این لایه ها خواهیم پرداخت.

mvi

لایه Model

در این لایه برای حالت ها یا State های مختلف اپلیکیشن اپلیکیشن کد نویسی میشود. این کد ها در معماری MVI  به صورت غیر قابل تغییر هستند. کدهای لایه model به طور مستقیم با پایگاه داده در ارتباطند. در این معماری با ایجاد یک حالت جدید لازم است برای آن حالت مشخص یک model جداگانه نوشت. این مسئله به ما کمک میکند تا با ارسال یک درخواست مشخص تنها یک پاسخ خروجی داشته باشیم. که باعث میشود کد نویسی و توسعه برنامه ساده تر شود.

برای درک بهتر موضوع به مثال زیر دقت کنید:

فرض کنید روی یک قسمت از صفحه کلیک شده و درخواستی برای سرور فرستاده شده سه حالت پیش می آید:

  1. سرور در حال ارسال پاسخ به مرورگر است. که میتواند این حالت با نمایش یک progressBar صورت گیرد.
  2. سرور پاسخ را به طور کامل ارسال کرده که باید در قسمت مربوطه نمایش داده شود.
  3. سرور به هر دلیلی نتوانسته پاسخ مناسب را ارسال کند که باید پیغام خطای مربوطه نمایش داده شود.

در معماری MVI لازم است برای هریک از این حالت ها یک state مشخص جداگانه در لایه model در نظر گرفته شود.

لایه View

این لایه همانطور که از نامش مشخص است . برای تعامل با کاربرهر آنچه کاربر مشاهده میکند در این لایه قرار میگیرد.

این لایه براساس نتیجه ای که لایه intent با استفاده از داده های لایه model میگیرد. قسمت مورد نیاز به کاربر نمایش داده میشود.

لایه Intent

این لایه مهمترین لایه در معماری MVI است. در واقع این لایه وظیفه برقراری ارتباط بین لایه view و لایه  model را دارد. در این لایه تصمیم گیری برای اینکه در چه زمانی چه  view به کاربر نمایش داده شود. در این لایه تصمیم گیری میشود.

مقایسه MVI  با MVP و MVVM

 

MVI-MVP

در واقع  میتوان گفت MVI تا حدودی شبیه MVP است. از این جهت که در هر دو معماری presenter  ای وجود دارد که پروسه ها و تصمیم گیری ها در آن  قسمت صورت میگیرد. ولی در تغییراتی که در قسمت UI  باید داده شود. در MVI تغییرات تنها از طریق تابع render صورت میگیرد. در صورتی که در MVP ممکن است چندین تابع برای این تغییرات داشته باشیم.

از لحاظی نیز میتوان گفت معماری MVI مشابه معماری MVVM است زیرا در هر دو معماری مشاهده اتفاقات را داریم ولی در MVVM تغییرات قسمت View Model در هر جایی ممکن است اتفاق بیافتد. به بیان دیگر وقتی رویدادی در UI اتفاق می افتد در قسمت  در معماری های MVVM و MVP داخل لایه های View Model و لایه presenter لازم است چندین ورودی و خروجی کنترل شود تا تصمیم گیری لازم صورت گیرد. که این مسئله در پروژه های بزرگ میتواند مشکل ساز شود. و پیچیدگی پروژه ها را بالا ببرد.

مهمترین تفاوت MVI با معماری های MVP و MVVM این است که برای حالت های مختلفی که برای اپلیکیش ممکن است بوجود آید. در MVVM و MVP لازم است تابع های مختلف برای تصمیم گیری چک شود در صورتی که در MVI به دلیل وجود حالت ها یا state های مختلف این امر تنها با یک تابع انجام میگیرد که این امر مخصوصا در شرایط پیچیده MVI را نسبت به دو معماری دیگر برتری میدهد.

مزایا و معایب معماری MVI

حال که با ویژگی های معماری MVI آشنا شدیم قصد داریم در این قسمت مزایا و معایب این معماری را با هم بررسی کنیم

مزایا

  • داده ها در معماری MVI به صورت یک طرفه و چرخشی هستند.
  • نگهداری State ها در این معماری ساده است. در واقع تمرکز اصلی این معماری بر روی این مسئله است.
  • در کل زمان استفاده از اپلیکیشن view تنها لازم است یک حالت را بررسی و به لایه های دیگرطلاع دهد.
  • خطایابی در این معماری ساده تر است. دلیل آن نیز این است که در هر مرحله تنها وضعیت یک حالت بررسی میشود.
  • به دلیل اینکه Model ها در این معماری بدون تعییر هستند. سبب میشود جابجایی بین Thread ها تغییر در Data ها مشکلی برای برنامه ایجاد نکند.

معایب

  • به دلیل نوپا بودن این معماری درک و پیاده سازی ان توسط برنامه نویسان کم تجربه سخت است.
  • به دلیل اینکه برای هر حالت لازم است یک شی جدید در Model ایجاد شود. این امر ممکن است با گذشت زمان باعث پر شدن حافظه شود.
  • به دلیل اینکه برای هر تعامل لازم است یک state جداگانه نوشته شود ممکن است قسمت هایی از کد ها در قسمت های مختلف برنامه تکراری باشند.
جمع بندی

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

سخن آخر

در این مقاله به بررسی معماری MVI پرداختیم. همچنین مقایسه ای با سایر معماری ها انجام دادیم. ولی نمیتوان به طور دقیق گفت کدام معماری نسبت به معماری دیگر برتری دارد. این بسته به نحوه استفاده و تیم متخصص برنامه نویسی است که این کار را به چه صورت انجام میدهد. لذا قبل از شروع برنامه نویسی بهتر است با یک تیم متخصص برنامه نویسی مشورت کنید. تیم تخصصی وب یار شما در در این امر راهنمایی میکند.

پیشنهاد میکنیم برای اطلاعات بیشتر مقاله همه چیز در مورد معماری MVC را که قبلا توسط مجموعه وب یار آماده شده مطالعه نمایید.

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

مقالات مرتبط
بهترین راهکار برای رفع محدودیت فالو در اینستاگرام

انواع محدودیت های حال حاضر در اینستاگرام • محدودیت فالوو کردن سایر کاربران اینستاگرام: • محدودیت لایک کردن پست‌های مختلف کاربران اینستاگرام: • محدودیت کامنت گذاشتن برای پست‌های مختلف شبکه اینستاگرام: • محدودیت به کار بردن هشتگ در پست‌های مختلف شبکه اینستاگرام: • محدودیت تعداد کلمات متن (کپشن) پست اینستاگرام: • محدودیت تعداد کاراکترهای Biography کاربران اینستاگرام: هدف از فالو و آنفالو کردن در اینستاگرام…

شرکت های طراحی اپلیکیشن

“اگه برنامه تون درست کار نمی‌کنه اصلاً نگران نشید چرا که اگر همه‌چیز درست کار کنه، شما بیکار می‌شید.” قانون موشر چرا این مقاله را با این جمله معروف از موشر بزرگ شروع کردیم؟ شرکت های طراحی اپلیکیشن ، در بین همه شرکت ها و مجموعه هایی که در زمینه برنامه نویسی فعالیت می کنند ، خدمات بزرگی را به جوامع و کسب و کار…