220 likes | 366 Views
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 Структура на шаблона Взаимодействия
E N D
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
Съдържание • Enterprise Patterns • Web Presentation • Model-View-Controller • Структура на шаблона • Взаимодействия • Свързани шаблони • Реализация
Enterprise patterns • Утвърдени решения на повтарящи се проблеми в софтуерния дизайн • Утвърдени решения за разделяне на приложенията на слоеве и структуриране на взаимодействията в и между тях • Необятно, недобре дефинирано множество • Martin Fowler и “Patterns of Enterprise Application Architecture”
Enterprise patterns • Непълен списък от възможни категории шаблони: • Data source • Domain logic • Presentation • Integration • Concurrency • Session state
Web presentation • Особености, налагани от HTTP и Request-Response модела • Еволюция от статични към динамични уеб страници • Популярни шаблони • Model-View-Controller (MVC) • Page controller • Front controller • Template view • Transform view • Application controller
Model-View-Controller • Шаблон, познат ни от дълбока древност, формулиран за пръв път от Trygve H. R. Reenskaug • Един от най-често използваните шаблони и до днес • Един от най-често използваните ПОГРЕШНО шаблони • Задава основоположна концепция за разделение на ролите в потребителския интерфейс, особено за уеб приложенията
Структура на шаблона • Model – логическо представяне на данните • View – визуализация • Controller – обработка на действия на потребителя
Взаимодействия В частност за уеб приложения
Взаимодействия UI = View + Controller
Взаимодействия • Разделяне на представянето от модела (View / Model) • Двете изискват различни познания при разработка, различни библиотеки и т.н. • Лесно създаване на различни представяния на едни и същи данни • По-лесно тестване за валидност на бизнес правилата, когато се тестват невизуални компоненти • Независимост на модела от представянето
Взаимодействия • Разделяне на представянето и контролера (View / Controller) • В много библиотеки има частична реализация на MVC, без ясно разделение между представяне и контролер • Представяне и контролер в ASP.NET • Използване на различни контролери в съчетание с едно представяне
Свързани шаблони Page controller • Специализиран за уеб • Създаване на логически уеб страници • Елегантно решение за задаване на съответствие между URI и представяне • Реализиран в ASP.NET • Възможност за реализация на Java
Свързани шаблони Template view • Специализиран за уеб • Създаване на динамични страници по същият начин както статични, като вместо динамично съдържание се вмъкват специални тагове • Избягва се нуждата от генериране на HTML с конкатенация на стрингове
Свързани шаблони Page controller + Template view • Сървърни страници • Обединяване на view и controller • Използва се в ASP • Смесване на презентационен код с обработка на заявки • Извеждане на обработката извън сървърната страница с помощен клас • Java – обработка на заявките в JSP • .NET –извършва се от платоформата
Свързани шаблони Page controller + Template view • Контролер – HTTP хендлър в отделен клас • Java – Servlet контролер • Codebehind в ASP.NET • Codebehind класа може да работи като контролер • Няма ясно разделение между view и controller, тъй като сървърната страница наследява от codebehind-а
Свързани шаблони Front controller • Централизирана обра- ботка на всички заявки на едно място • Избягва се повтарянето на код за security проверки, локализация и др. • Може да енкапсулира навигацията в сайта
Свързани шаблони Page controller или Front controller ? • Не са напълно взаимоизключващи се • Page controller е по-удобен за прости случаи • Front controller е подходящ, когато има сложна навигация • Front controller допуска runtime настройване и разширяване • Front controller може да улесни конфигурирането на сървъра
Свързани шаблони Transform view • Конвертиране на данни от модела към HTML • Могат да се използват всякакви езици, но най-популярното средство е XSLT • Улеснява тестването – може да се избегне употребата на уеб сървър • Може да се изнесе при клиента • Минимална възможност за вмъкване на непрезентационен код във View-то
Реализация • Java • Struts Framework • Java Server Faces • .NET • Maverick.NET • User Interface Process Application Block • Други платформи
Реализация • User Interface Process Application Block • Част от Microsoft Enterprise Library • Ясно разграничение между презентационен, навигационен и state management код • Декларативна навигация • Безпроблемна интеграция сдруги application blocks • Унифициран подход към UI на уеб и декстоп приложения
Шаблон Model-View-Controller Въпроси?
Използвана литература • 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