1 / 22

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

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 Структура на шаблона Взаимодействия

Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Enterprise patterns • Утвърдени решения на повтарящи се проблеми в софтуерния дизайн • Утвърдени решения за разделяне на приложенията на слоеве и структуриране на взаимодействията в и между тях • Необятно, недобре дефинирано множество • Martin Fowler и “Patterns of Enterprise Application Architecture”

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

  5. Web presentation • Особености, налагани от HTTP и Request-Response модела • Еволюция от статични към динамични уеб страници • Популярни шаблони • Model-View-Controller (MVC) • Page controller • Front controller • Template view • Transform view • Application controller

  6. Model-View-Controller • Шаблон, познат ни от дълбока древност, формулиран за пръв път от Trygve H. R. Reenskaug • Един от най-често използваните шаблони и до днес • Един от най-често използваните ПОГРЕШНО шаблони • Задава основоположна концепция за разделение на ролите в потребителския интерфейс, особено за уеб приложенията

  7. Структура на шаблона • Model – логическо представяне на данните • View – визуализация • Controller – обработка на действия на потребителя

  8. Взаимодействия В частност за уеб приложения

  9. Взаимодействия UI = View + Controller

  10. Взаимодействия • Разделяне на представянето от модела (View / Model) • Двете изискват различни познания при разработка, различни библиотеки и т.н. • Лесно създаване на различни представяния на едни и същи данни • По-лесно тестване за валидност на бизнес правилата, когато се тестват невизуални компоненти • Независимост на модела от представянето

  11. Взаимодействия • Разделяне на представянето и контролера (View / Controller) • В много библиотеки има частична реализация на MVC, без ясно разделение между представяне и контролер • Представяне и контролер в ASP.NET • Използване на различни контролери в съчетание с едно представяне

  12. Свързани шаблони Page controller • Специализиран за уеб • Създаване на логически уеб страници • Елегантно решение за задаване на съответствие между URI и представяне • Реализиран в ASP.NET • Възможност за реализация на Java

  13. Свързани шаблони Template view • Специализиран за уеб • Създаване на динамични страници по същият начин както статични, като вместо динамично съдържание се вмъкват специални тагове • Избягва се нуждата от генериране на HTML с конкатенация на стрингове

  14. Свързани шаблони Page controller + Template view • Сървърни страници • Обединяване на view и controller • Използва се в ASP • Смесване на презентационен код с обработка на заявки • Извеждане на обработката извън сървърната страница с помощен клас • Java – обработка на заявките в JSP • .NET –извършва се от платоформата

  15. Свързани шаблони Page controller + Template view • Контролер – HTTP хендлър в отделен клас • Java – Servlet контролер • Codebehind в ASP.NET • Codebehind класа може да работи като контролер • Няма ясно разделение между view и controller, тъй като сървърната страница наследява от codebehind-а

  16. Свързани шаблони Front controller • Централизирана обра- ботка на всички заявки на едно място • Избягва се повтарянето на код за security проверки, локализация и др. • Може да енкапсулира навигацията в сайта

  17. Свързани шаблони Page controller или Front controller ? • Не са напълно взаимоизключващи се • Page controller е по-удобен за прости случаи • Front controller е подходящ, когато има сложна навигация • Front controller допуска runtime настройване и разширяване • Front controller може да улесни конфигурирането на сървъра

  18. Свързани шаблони Transform view • Конвертиране на данни от модела към HTML • Могат да се използват всякакви езици, но най-популярното средство е XSLT • Улеснява тестването – може да се избегне употребата на уеб сървър • Може да се изнесе при клиента • Минимална възможност за вмъкване на непрезентационен код във View-то

  19. Реализация • Java • Struts Framework • Java Server Faces • .NET • Maverick.NET • User Interface Process Application Block • Други платформи

  20. Реализация • User Interface Process Application Block • Част от Microsoft Enterprise Library • Ясно разграничение между презентационен, навигационен и state management код • Декларативна навигация • Безпроблемна интеграция сдруги application blocks • Унифициран подход към UI на уеб и декстоп приложения

  21. Шаблон Model-View-Controller Въпроси?

  22. Използвана литература • Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2002, ISBN 0321127420 • Wikipedia http://en.wikipedia.org/ • Microsoft patterns and practices http://msdn.microsoft.com/practices/guidetype/AppBlocks/ • Code project, Hello UIPAB http://www.codeproject.com/csharp/hellouipab.asp

More Related