100 likes | 293 Views
MVC Model-View-Controller. Всевоволод Головизнин , 2010. Определение. Всевоволод Головизнин , 2010. MVC – паттерн проектирование, в котором бизнес-логика, управляющая логика и интерфейс разделены на три отдельных компонента. Общие сведения.
E N D
MVCModel-View-Controller ВсевоволодГоловизнин, 2010
Определение ВсевоволодГоловизнин, 2010 MVC – паттерн проектирование, в котором бизнес-логика, управляющая логика и интерфейс разделены на три отдельных компонента
Общие сведения Паттерн MVC был впервые разработан и описан профессором ТригвомРеенсаугом (TrygveReenskaug) в 1973 году, а в 1978-79 был впервые применен к языку Smalltalk-80. Сейчас это основной паттерн проектирования web приложений и не только. MVC пришел в web благодаря одному из самых популярных фреймворков в мире – Ruby on Rails, представленному летом 2004 года. Сейчас существует множество фреймворков для различных языков и различных платформ, использующих подход MVC как основной для разработки приложения. Это такие продукты, как Ruby on Rails для Ruby, Zend Framework для PHP, Djangoдля Python, Spring для Java, ASP.NET MVC для ASP.NET. ВсевоволодГоловизнин, 2010
Model • Содержит классы, описывающие работу с данными и бизнес-логикой приложения • Работа с СУБД\ORM • Манипуляции данными public void AddNewStudent(student stud) { _db.students.InsertOnSubmit(stud); _db.SubmitChanges(); } public void DeleteStudent(student stud) { _db.students.DeleteOnSubmit(stud); _db.SubmitChanges(); } public student GetStudentById(int id) { return _db.students.SingleOrDefault(s => s.student_id == id); } ВсевоволодГоловизнин, 2010
View • Содержит пользовательский интерфейс (пр. HTML страницы) ВсевоволодГоловизнин, 2010
Controller • Содержит классы, управляющие работой приложения • Что и когда показывать • Какие данные необходимы public ActionResultCreate(student stud) { if ((ModelState.IsValid) && (_studentContext.StudentExists(stud) == false)) { _studentContext.AddNewStudent(stud); return RedirectToAction("Index"); } ViewData["selectItems"] = (IEnumerable<SelectListItem>)_groupContext.SelectGroupList(); return View(stud); } ВсевоволодГоловизнин, 2010
Разделяй и властвуй Интерфейс - модель Интерфейс - управлятор • В корне отличаются друг от друга (разные подходы и средства) • Использование нескольких пользовательских интерфейсов для одной модели • Легче тестировать • Легче тестировать • Несколько контроллеров для одного интерфейса • Не так важно и очевидно, но полезно в Web разработках ВсевоволодГоловизнин, 2010
Развитие MVC MVC Model-view-presenter MVP • Представление получает данные модели от контроллера • Контроллер следит за V\M и действует в ответ на изменения • M реагирует на изменение V • Представление получает данные от презентера и уведомляет его об изменениях • Презентер перенаправляет изменения V к M • P реагирует на изменения V ВсевоволодГоловизнин, 2010
Развитие MVC MVC Model-view-Viewmodel MVvm • V пассивно и «не знает» о M • V активно, содержит события, поведения и зависит от M\VM • VM служит для связывания M с V ВсевоволодГоловизнин, 2010
Я • ICQ – 733540 • Skype – uapushok • Blog – pushoksuper.wordpress.com