محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
شنبه, ۱۱ شهریور ۱۳۹۱، ۰۸:۱۱ ب.ظ

معماری های MVC, MVVM, MVP و MOVE

کلاً معماری های نامبرده شده هر کدام جزئی از الگوی معماری نرم‌افزار می باشند. الگوهای معماری نرم‌افزار روش‌های طراحی استانداردی هستند که با استفاده از آن‌ها یک نرم‌افزار ساخته می شود.

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

از خود می‌پرسید ارتباط این طراحی ها به javascript چیست؟ طبیعتاً یک پروژه scalable نیاز زیادی به طراحی دارد. وگرنه در اواسط پروژه نقاط ضعف طراحی چنان دیده می‌شود که چند بار اجرا پروژه را فرسایشی می‌کند و در نهایت به مقصد رسیده نمی شود.

از طرفی ساخت یک Scalabel application نیاز مند مجموعه‌ای از decouple هاست تا ساختار تکه شده‌ای داشته باشید.

با استفاده از طراحی های مناسب کد شما بیشتر re-usable خواهد بود و از طرفی به علت decouple شدن و تکه‌تکه بود قسمت‌های مختلف امکان test شدن و mock کردن دارند. با به مشکل خوردن یک قسمت بقیه قسمت‌ها کار خود را به خوبی انجام می دهند. در زمان طراحی هم کار به صورت کپسوله شده به دیگران داده می شود.

چند موردی که در پروژه ها javascript استفاده می‌شود را تک تک بررسی می کنیم.

 

MVC

ترکیب model, view و controller که یک module را ایجاد می‌کند طراحی MVC را ایجاد می‌کند. Model لایه data را می سازد. هرچیزی که مرتبط به اطلاعات ذخیره شونده هست باید از این لایه بگزرد. View لایه‌ایست که کاربر از طریق آنdata را می‌بیند و Controller چسب بین این دو لایه خواهد بود.

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


 

MVVM

طراحی MVVM اولین بار توسطmicrosoft ارایه شد. در ساختار این طراحی Model و View تفاوتی با MVC ندارد. VM یا ViewModel همچون Controller لایه نازکیست بین Model و View iii اما تفاوت هایش عبارت است از:

    ارتباط دو‌طرفه با View

    ViewModel ارایه کننده View است. یعنی هر فیلد در ViewModel بیشتر برابر با View است و به همین علت از Model دورتر است

    هر View ی مستقیماً به یک ViewModel bind می‌شود و در نتیجه تغیرات مربوط به View به صورت لحظه‌ای درViewModel دیده می‌شود و از طرفی تغییرات برعکس هم باعث render مجدد View می شود.

    معمولاً برای هر View فقط یک ViewModel وجود دارد.iv این ارتباط یک به N می باشد.

    Model و View فقط از طریق ViewModel ارتباط دارند.


 

MVP

این طراحی مشتق شده از MVC است و کاملاً شبیه آن عمل می‌کند فقط لایه Presenter کمی شبیه ViewModel عمل می کند.

تفاوتی که با MVVM دارد در این است که در این روش بر عکس MVVM ارتباط بین Presenter و View به صورت یک به یک می باشد.



 

MOVE

چند وقت پیش خبری در hackernew چنان توجه طراحان نرم‌افزار را به خود جلب کرد که طراحی جدید به لیست طراحی های عمومی اضافه شد.

خبر این بود: MVC is dead, it's time to MOVE on.

در این طراحی که شباهت زیادی با MVP دارد تفاوتی که وجود دارد Operation جای Presenter گرفته است. و از طرفی Model با استفاده از Event می‌تواند View را دوباره Render کند. یعنی دیگر نیازی نیست که Model به لایه ارتباطی بگوید که فلان data ی من عوض شده در عوض به view می گویید.


در این روش سیستم بر اساس Event و Change call کار می‌کند.

به طور مثال Backbone.js استفاده زیادی از mvc می کند. در قسمت‌های دیگر مثال‌هایی از این فریم ورک می‌زنیم و در نهایت توضیح کاملی از این ابزار های می دهیم

 

منابع



نوشته شده توسط محمد افاضاتی
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
محمد افاضاتی
محمد افاضاتی برنامه نویس python php دیتابیس های postgresql mongodb و ...

رونوشتی از علاقه مندی هایم برای ماندگار تر شدن!

تبلیغات

طبقه بندی موضوعی

Feedburner RSS

Others

توییتر

معماری های MVC, MVVM, MVP و MOVE

شنبه, ۱۱ شهریور ۱۳۹۱، ۰۸:۱۱ ب.ظ

کلاً معماری های نامبرده شده هر کدام جزئی از الگوی معماری نرم‌افزار می باشند. الگوهای معماری نرم‌افزار روش‌های طراحی استانداردی هستند که با استفاده از آن‌ها یک نرم‌افزار ساخته می شود.

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

از خود می‌پرسید ارتباط این طراحی ها به javascript چیست؟ طبیعتاً یک پروژه scalable نیاز زیادی به طراحی دارد. وگرنه در اواسط پروژه نقاط ضعف طراحی چنان دیده می‌شود که چند بار اجرا پروژه را فرسایشی می‌کند و در نهایت به مقصد رسیده نمی شود.

از طرفی ساخت یک Scalabel application نیاز مند مجموعه‌ای از decouple هاست تا ساختار تکه شده‌ای داشته باشید.

با استفاده از طراحی های مناسب کد شما بیشتر re-usable خواهد بود و از طرفی به علت decouple شدن و تکه‌تکه بود قسمت‌های مختلف امکان test شدن و mock کردن دارند. با به مشکل خوردن یک قسمت بقیه قسمت‌ها کار خود را به خوبی انجام می دهند. در زمان طراحی هم کار به صورت کپسوله شده به دیگران داده می شود.

چند موردی که در پروژه ها javascript استفاده می‌شود را تک تک بررسی می کنیم.

 

MVC

ترکیب model, view و controller که یک module را ایجاد می‌کند طراحی MVC را ایجاد می‌کند. Model لایه data را می سازد. هرچیزی که مرتبط به اطلاعات ذخیره شونده هست باید از این لایه بگزرد. View لایه‌ایست که کاربر از طریق آنdata را می‌بیند و Controller چسب بین این دو لایه خواهد بود.

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


 

MVVM

طراحی MVVM اولین بار توسطmicrosoft ارایه شد. در ساختار این طراحی Model و View تفاوتی با MVC ندارد. VM یا ViewModel همچون Controller لایه نازکیست بین Model و View iii اما تفاوت هایش عبارت است از:

    ارتباط دو‌طرفه با View

    ViewModel ارایه کننده View است. یعنی هر فیلد در ViewModel بیشتر برابر با View است و به همین علت از Model دورتر است

    هر View ی مستقیماً به یک ViewModel bind می‌شود و در نتیجه تغیرات مربوط به View به صورت لحظه‌ای درViewModel دیده می‌شود و از طرفی تغییرات برعکس هم باعث render مجدد View می شود.

    معمولاً برای هر View فقط یک ViewModel وجود دارد.iv این ارتباط یک به N می باشد.

    Model و View فقط از طریق ViewModel ارتباط دارند.


 

MVP

این طراحی مشتق شده از MVC است و کاملاً شبیه آن عمل می‌کند فقط لایه Presenter کمی شبیه ViewModel عمل می کند.

تفاوتی که با MVVM دارد در این است که در این روش بر عکس MVVM ارتباط بین Presenter و View به صورت یک به یک می باشد.



 

MOVE

چند وقت پیش خبری در hackernew چنان توجه طراحان نرم‌افزار را به خود جلب کرد که طراحی جدید به لیست طراحی های عمومی اضافه شد.

خبر این بود: MVC is dead, it's time to MOVE on.

در این طراحی که شباهت زیادی با MVP دارد تفاوتی که وجود دارد Operation جای Presenter گرفته است. و از طرفی Model با استفاده از Event می‌تواند View را دوباره Render کند. یعنی دیگر نیازی نیست که Model به لایه ارتباطی بگوید که فلان data ی من عوض شده در عوض به view می گویید.


در این روش سیستم بر اساس Event و Change call کار می‌کند.

به طور مثال Backbone.js استفاده زیادی از mvc می کند. در قسمت‌های دیگر مثال‌هایی از این فریم ورک می‌زنیم و در نهایت توضیح کاملی از این ابزار های می دهیم

 

منابع

نظرات  (۶)

ممنون... واقعا مفید بود.
مرسی مفید بود
۲۶ فروردين ۹۲ ، ۰۸:۴۵ میلاد خواجوی
سلام،
فرق بین الگوهای MVC و MVP به شرطی که در هر دو از مدل Active (نه پسیو) استفاده کنیم چیه؟
من هر چی خوندم درست متوجه نشدم! 
ممنونم محمد جان مطلب خیلی مفیدی برام هست. سپاسگزارم. توضیحاتت بسیار روان بود و متوجه همه چیز شدم. بازم ممنونم
عالی بود . دسستون درد نکنه 
به وب سایت ما هم سر بزنید 

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی