model - view-controller a.k.a. model 2

22
Model Model - - View-Controller View-Controller a.k.a. Model 2 a.k.a. Model 2 Стефан Кирязов Стефан Кирязов MCAD.NET MCAD.NET Vereo Technologies Vereo Technologies Stefan.Kiryazov[at]gmail[d Stefan.Kiryazov[at]gmail[d ot]com ot]com www.devbg.org/patterns course / Design patterns Design patterns in C# in C#

Upload: aladdin-reese

Post on 14-Mar-2016

81 views

Category:

Documents


8 download

DESCRIPTION

Design patterns in C#. Model - View-Controller a.k.a. Model 2. www.devbg.org/patterns course /. Стефан Кирязов MCAD.NET. Vereo Technologies. Stefan.Kiryazov[at]gmail[dot]com. Съдържание. Enterprise Patterns Web Presentation Model-View-Controller Структура на шаблона Взаимодействия - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Model - View-Controller a.k.a. Model 2

ModelModel--View-ControllerView-Controllera.k.a. Model 2a.k.a. Model 2

Стефан Кирязов Стефан Кирязов MCAD.NETMCAD.NETVereo TechnologiesVereo TechnologiesStefan.Kiryazov[at]gmail[dot]comStefan.Kiryazov[at]gmail[dot]com

www.devbg.org/patternscourse/

Design patterns Design patterns in C#in C#

Page 2: Model - View-Controller a.k.a. Model 2

СъдържаниеСъдържание

• Enterprise PatternsEnterprise Patterns• Web PresentationWeb Presentation• Model-View-ControllerModel-View-Controller• Структура на шаблонаСтруктура на шаблона• ВзаимодействияВзаимодействия• Свързани шаблониСвързани шаблони• РеализацияРеализация

Page 3: Model - View-Controller a.k.a. Model 2

Enterprise patternsEnterprise patterns

• Утвърдени решения на повтарящи се Утвърдени решения на повтарящи се проблеми в софтуерния дизайнпроблеми в софтуерния дизайн

• Утвърдени решения за разделяне на Утвърдени решения за разделяне на приложенията на слоеве и структуриране приложенията на слоеве и структуриране на взаимодействията в и между тяхна взаимодействията в и между тях

• Необятно, недобре дефинирано множествоНеобятно, недобре дефинирано множество• Martin FowlerMartin Fowler и “ и “Patterns of Enterprise Patterns of Enterprise

Application ArchitectureApplication Architecture””

Page 4: Model - View-Controller a.k.a. Model 2

Enterprise patternsEnterprise patterns

• Непълен списък от възможни категории шаблони:• Data source• Domain logic• Presentation• Integration• Concurrency• Session state

Page 5: Model - View-Controller a.k.a. Model 2

Web presentationWeb presentation• Особености, налагани от HTTP и

Request-Response модела• Еволюция от статични към динамични

уеб страници• Популярни шаблони• Model-View-Controller (MVC)• Page controller• Front controller• Template view• Transform view• Application controller

Page 6: Model - View-Controller a.k.a. Model 2

Model-View-ControllerModel-View-Controller

• Шаблон, познат ни от дълбока древност, формулиран за пръв път от Trygve H. R. Reenskaug

• Един от най-често използваните шаблони и до днес

• Един от най-често използваните ПОГРЕШНО шаблони

• Задава основоположна концепция за разделение на ролите в потребителския интерфейс, особено за уеб приложенията

Page 7: Model - View-Controller a.k.a. Model 2

Структура на шаблонаСтруктура на шаблона

• Model – логическо представяне на данните

• View – визуализация• Controller – обработка на действия на

потребителя

Page 8: Model - View-Controller a.k.a. Model 2

ВзаимодействияВзаимодействия

В частност за уеб приложения

Page 9: Model - View-Controller a.k.a. Model 2

ВзаимодействияВзаимодействия

UI = View + Controller

Page 10: Model - View-Controller a.k.a. Model 2

ВзаимодействияВзаимодействия

• Разделяне на представянето от модела (View / Model)• Двете изискват различни познания при

разработка, различни библиотеки и т.н.

• Лесно създаване на различни представяния на едни и същи данни

• По-лесно тестване за валидност на бизнес правилата, когато се тестват невизуални компоненти

• Независимост на модела от представянето

Page 11: Model - View-Controller a.k.a. Model 2

ВзаимодействияВзаимодействия

• Разделяне на представянето и контролера (View / Controller)• В много библиотеки има частична

реализация на MVC, без ясно разделение между представяне и контролер

• Представяне и контролер в ASP.NET• Използване на различни контролери в

съчетание с едно представяне

Page 12: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблони

Page controllerPage controller

• Специализиран за уебСпециализиран за уеб• Създаване на логически уеб странициСъздаване на логически уеб страници• Елегантно решение за задаване на Елегантно решение за задаване на

съответствие между съответствие между URI URI и представянеи представяне• Реализиран в Реализиран в ASP.NETASP.NET• Възможност за реализация на Възможност за реализация на JavaJava

Page 13: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблони

Template viewTemplate view

• Специализиран за уебСпециализиран за уеб• Създаване на динамични страници по Създаване на динамични страници по

същият начин както статични, като същият начин както статични, като вместо динамично съдържание се вместо динамично съдържание се вмъкват специални таговевмъкват специални тагове

• Избягва се нуждата от генериране на Избягва се нуждата от генериране на HTML HTML с конкатенация на стринговес конкатенация на стрингове

Page 14: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблониPage controller + Template viewPage controller + Template view• Сървърни странициСървърни страници• Обединяване на Обединяване на view view и и controllercontroller• Използва се в Използва се в ASPASP• Смесване на презентационен код с Смесване на презентационен код с

обработка на заявкиобработка на заявки• Извеждане на обработката извън Извеждане на обработката извън

сървърната страница с помощен классървърната страница с помощен клас• JavaJava – обработка на заявките в – обработка на заявките в JSPJSP• .NET –.NET –извършва се от платоформатаизвършва се от платоформата

Page 15: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблониPage controller + Template viewPage controller + Template view• Контролер – Контролер – HTTP HTTP хендлър в отделен хендлър в отделен

класклас• Java – Servlet Java – Servlet контролерконтролер

• Codebehind Codebehind в в ASP.NETASP.NET• Codebehind Codebehind класа може да работи като класа може да работи като

контролерконтролер• Няма ясно разделение между Няма ясно разделение между view view и и

controller, controller, тъй като сървърната тъй като сървърната страница наследява от страница наследява от codebehindcodebehind-а-а

Page 16: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблони

Front controllerFront controller

• Централизирана обра-Централизирана обра-ботка на всички заявки на едно мястоботка на всички заявки на едно място

• Избягва се повтарянето на код за Избягва се повтарянето на код за securitysecurity проверки, локализация и др.проверки, локализация и др.

• Може да енкапсулира навигацията в сайтаМоже да енкапсулира навигацията в сайта

Page 17: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблониPage controller Page controller илиили Front controller ? Front controller ?• Не са напълно взаимоизключващи сеНе са напълно взаимоизключващи се• Page controller Page controller е по-удобен за прости е по-удобен за прости

случаислучаи• Front controller Front controller е подходящ, когато има е подходящ, когато има

сложна навигациясложна навигация• Front controller Front controller допуска допуска runtime runtime

настройване и разширяваненастройване и разширяване• Front controller Front controller може да улесни може да улесни

конфигурирането на сървъраконфигурирането на сървъра

Page 18: Model - View-Controller a.k.a. Model 2

Свързани шаблониСвързани шаблони

Transform viewTransform view

• Конвертиране на данни от модела към Конвертиране на данни от модела към HTMLHTML• Могат да се използват всякакви езици, но най-Могат да се използват всякакви езици, но най-

популярното средство е популярното средство е XSLTXSLT• Улеснява тестването – може да се избегне Улеснява тестването – може да се избегне

употребата на уеб сървърупотребата на уеб сървър• Може да се изнесе при клиентаМоже да се изнесе при клиента• Минимална възможност за вмъкване на Минимална възможност за вмъкване на

непрезентационен код във непрезентационен код във View-View-тото

Page 19: Model - View-Controller a.k.a. Model 2

РеализацияРеализация

• JavaJava• Struts FrameworkStruts Framework• Java Server FacesJava Server Faces

• .NET.NET• Maverick.NETMaverick.NET• User Interface Process Application BlockUser Interface Process Application Block

• Други платформиДруги платформи

Page 20: Model - View-Controller a.k.a. Model 2

РеализацияРеализация

• User Interface Process Application BlockUser Interface Process Application Block• Част от Част от Microsoft Enterprise LibraryMicrosoft Enterprise Library• Ясно разграничение между Ясно разграничение между

презентационен, навигационен и презентационен, навигационен и state state management management кодкод

• Декларативна навигацияДекларативна навигация• Безпроблемна интеграция сБезпроблемна интеграция с другидруги

application blocksapplication blocks• Унифициран подход към Унифициран подход към UI UI на уеб и на уеб и

декстоп приложениядекстоп приложения

Page 21: Model - View-Controller a.k.a. Model 2

Шаблон Шаблон Model-View-ControllerModel-View-Controller

Въпроси?Въпроси?

Page 22: Model - View-Controller a.k.a. Model 2

• Martin FowlerMartin Fowler, , Patterns of Enterprise Patterns of Enterprise Application ArchitectureApplication Architecture, , AddisonAddison--WesleyWesley, , 2002, 2002, ISBN ISBN 03211274200321127420

• WikipediaWikipediahttp://http://en.wikipedia.orgen.wikipedia.org//

• Microsoft patterns and practicesMicrosoft patterns and practices

http://msdn.microsoft.com/practices/guidetyphttp://msdn.microsoft.com/practices/guidetype/AppBlocks/e/AppBlocks/

• Code project, Hello UIPABCode project, Hello UIPABhttp://http://www.codeproject.com/csharp/hellouipab.aspwww.codeproject.com/csharp/hellouipab.asp

Използвана литератураИзползвана литература