X
تبلیغات
رایتل

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


  یکشنبه 13 اسفند‌ماه سال 1391

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

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

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

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

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


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

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

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

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

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

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 می گویید.



منابع