کلاً معماری های نامبرده شده هر کدام جزئی از الگوی معماری نرمافزار می باشند. الگوهای معماری نرمافزار روشهای طراحی استانداردی هستند که با استفاده از آنها یک نرمافزار ساخته می شود.
با در نظر گرفتن این روشها تا جای ممکن ریسک طراحی پایین آمده و از طرفی در آینده درک ساختار و … راحتتر است. البته در نظر بگیرید که بر روی این معماری ها ساعتها توسط مهندسان نرمافزار فکر شده و در نتیجه 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 می کند. در قسمتهای دیگر مثالهایی از این فریم ورک میزنیم و در نهایت توضیح کاملی از این ابزار های می دهیم
منابع
- Architectural pattern - Wikipedia, the free encyclopedia -> http://en.wikipedia.org/wiki/Architectural_pattern
- MVC-Diagram.gif (GIF Image, 440 × 347 pixels) -> http://www.beansoftware.com/ASP.NET-Tutorials/Images/MVC-Diagram.gif
- MVVM vs MVP vs MVC: The differences explained -> http://joel.inpointform.net/software-development/mvvm-vs-mvp-vs-mvc-the-differences-explained/
- The ViewModel Pattern - David Hill\'s WebLog - Site Home - MSDN Blogs -> http://blogs.msdn.com/b/dphill/archive/2009/01/31/the-viewmodel-pattern.aspx
- MVVM Compared To MVC and MVP -> http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
-
MVC is dead, it\'s time to MOVE on. -> http://cirw.in/blog/time-to-move-on