ASP.NET MVC: new era?

Alexander Konduforov
Alexander KonduforovMachine Learning Engineer / Data Science Group Leader à AltexSoft
ASP.NET MVC:  начало   новой эры? - ! Кондуфоров Александр Email: alexander.konduforov@gmail.com Weblog: www.merle-amber.blogspot.com
О чем поговорим? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Паттерн  MVC Диаграмма взята с  http://www.rsdn.ru/article/patterns/modelviewpresenter.xml
Зачем нужен  MVC ? ,[object Object],[object Object],[object Object],[object Object]
Почему  MVC  сложно вписать в  WebForms ?
Что еще не так с  WebForms ? эмуляция  WinForms  для  web- приложений излишняя сложность событийной модели слишком много потоков выполнения через одни и те же события ( GET, Postback, Ajax Callback) сложность в реализации  Internet- приложений с не очень большим количеством логики практически невозможно нормально покрыть тестами не   дружит с  SEO  ( doPostback, etc.) будущее  WebForms? сложность в разделении  UI  и бизнес-логики,  code - behind  часто превращается в кашу
Если  MVC –  это   хорошо, то он уже должен где-то использоваться? Java: Swing, Struts, Tapestry, Spring MVC, etc. C++: MFC (document – view) PHP: Symfony, Zend, etc. Perl: Catalyst Ruby: Ruby on Rails, Merb, etc. Python: Django, etc. .NET: Castle Monorail,   Maverick.NET Microsoft  позади планеты всей :( MVC
Архитектура:  Web Forms vs. MVC ASP.NET   Web Forms ASP.NET MVC Связь между файлом и  URL 1:1 виртуальная Модель обработки  HTTP- запросов Postback REST - like Подход к написанию кода события в  code-behind паттерн  MVC Размещение логики управления code-behind контроллер UI толстый, содержит логику, серверные контролы и код тонкий, клиентские контролы и код
Другие особенности все на интерфейсах поддержка  unit- тестирования легкая расширяемость URL -маппинг контроллеров поддержка  ASPX, ASCX, Master   pages поддержка существующей инфраструктуры  ASP.NET  (аутентификация, роли, кеширование, сессия, провайдеры, локализация) прощай,  viewstate :) прощай,  postback -модель  :-прощайте, многие стандартные контролы и  UI  библиотеки : ’ ( здравствуйте,  jQuery, MooTools, extJS  и другие  js- библиотеки! ASP.NET MVC
ЖЦ запроса  ASP.NET MVC
URL routing ,[object Object],By default: {controller}/{action}/{id} URL/запрос Результат /Products/Categories  все категории продуктов /Products/List/Keyboard продукты категории Keyboard /Products/Detail/4 продукт с id=4 Настройка Global.asax Параметры подстанавливаются в методы контроллера Настройка  routing’ а RegExp, HttpMethod, custom constraints Валидация параметры запроса Использование генерация элементов упр-ния и  URL, ASP.NET Web Forms Тестирование правила  routing’ а
Модель Полная свобода действий для программиста Типы модели Domain Model, Presentation Model ( проекция) Доступ к данным Datasets/DataReaders, LINQ to SQL, Entity Framework, NHibernate,  другие  ORM Подходы и паттерны N- звенная архитектура,  Domain Driven Design,  паттерн  Repository,  др . Валидация рекомендуется валидировать объекты при помощи бизнес-правил в модели
Контроллер Более строгая структура и использование, но легкая расширяемость Основа Controller  класс Action- методы отвечают за обработку запроса Результат выполнения ViewResult: View,   PartialView, redirect, file, text etc. Доступ к инфраструктуре HttpContext, Request, Response, Session, User, Server, etc. Передача данных ViewData, ViewModel (View), ModelState ( ошибки),  TempData ( между запросами) Дополнительный контроль атрибуты  AcceptVerbs, OutputCache, Authorize,   HandleError,  кастомные Плюшки ModelBinder ( типизация) , (Try)UpdateModel  (автозаполнение объекта изменениями) Тестирование полная поддержка
Представление Назад в прошлое! Форма обычная, не серверная Стиль программирования без  code-behind  и событий страницы,  <%=…%>,  клиентский код Инфраструктура Master Pages, Partial   View (ascx) Получение данных из контроллера ViewData dictionary  или  ViewModel  шаблон View Helpers HtmlHelper, UrlHelper, custom Валидация ModelState  из контроллера, автоматический показ , summary Ajax ASP.NET Ajax (AjaxHelper), jQuery Ajax,  др. Другие  View Engines NHaml, Spark, Brail, nVelocity
Так а что все-таки с контролами? а сами? :) Проблема заключается в отсутствии  server-side  формы Варианты Описание Partial View (ascx) аналог обычных  ascx- контролов HtmlHelper, UrlHelper специальные классы, генерирующие  HTML- разметку и учитывающие правила рутинга MVCContrib ( http://mvccontrib.codeplex.com/ ) библиотека различных инструментов для  MVC,  в том числе и контролов JS  контролы и фреймворки extJS, jQuery, MooTools Контролы сторонних разработчиков на данный момент мало, но в ближайшее будущее станет намного больше
DEMO ,[object Object]
Когда использовать? ASP.NET MVC ASP.NET   Web Forms Internet- приложения и небольшие  enterprise- приложения Крупные приложения  enterprise- уровня Легковесный  UI  (типичное  web- приложение с исп-нием  Ajax ) Сложный многокомпонентный  UI  ( desktop- приложение под  web ) Предпочтение в использовании  client-side  контролов Предпочтение в использовании  server - side  контролов Необходимость иметь полный контроль над  HTML  и  JavaScript Отсутствие такой необходимости Строгие требования по времени отклика и быстродействию Менее строгие требования или отсутствие таковых Практика  TDD  ( Test Driven Development) , больше ручной работы RAD (Rapid Application Development) Переход с других более низкоуровневых  web- технологий, желание использовать  MVC Отсутствие серьезных знаний или опыта в  web- разработке, переход с  WinForms
Что день грядущий нам готовит? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Полезные ссылки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Спасибо за внимание. Вопросы? ,[object Object]
1 sur 20

Recommandé

ASP.NET MVC par
ASP.NET MVCASP.NET MVC
ASP.NET MVCGetDev.NET
784 vues21 diapositives
Как и зачем мы тестируем UI par
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UIVyacheslav Lyalkin
14.1K vues22 diapositives
AngularJS basics & theory par
AngularJS basics & theoryAngularJS basics & theory
AngularJS basics & theoryDevOWL Meetup
40.2K vues18 diapositives
Автоматизация тестирования веб-сервисов посредством SOAP UI par
Автоматизация тестирования веб-сервисов посредством SOAP UIАвтоматизация тестирования веб-сервисов посредством SOAP UI
Автоматизация тестирования веб-сервисов посредством SOAP UIautomated-testing.info
20.4K vues11 diapositives
Dotnet development par
Dotnet developmentDotnet development
Dotnet developmentMageCloud
347 vues11 diapositives
Azure - облачные сервисы и приложения par
Azure - облачные сервисы и приложенияAzure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAlexander Babich
199 vues63 diapositives

Contenu connexe

Tendances

Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver par
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverAlex Mikitenko
752 vues30 diapositives
Фреймворк автотестирования веб-сервисов своими силами par
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиSQALab
3K vues54 diapositives
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн... par
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...COMAQA.BY
583 vues22 diapositives
Лилия Горбачик, Тестирование Web Services par
Лилия Горбачик, Тестирование Web ServicesЛилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web ServicesSQADays_2009_Piter
1.4K vues19 diapositives
В поисках магической кнопки, или как воспитать SoapUI par
В поисках магической кнопки, или как воспитать SoapUIВ поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUISQALab
2.5K vues23 diapositives
Azure - подведение итогов par
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итоговAlexander Babich
302 vues15 diapositives

Tendances(20)

Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver par Alex Mikitenko
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko752 vues
Фреймворк автотестирования веб-сервисов своими силами par SQALab
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силами
SQALab3K vues
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн... par COMAQA.BY
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
COMAQA.BY 583 vues
Лилия Горбачик, Тестирование Web Services par SQADays_2009_Piter
Лилия Горбачик, Тестирование Web ServicesЛилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web Services
SQADays_2009_Piter1.4K vues
В поисках магической кнопки, или как воспитать SoapUI par SQALab
В поисках магической кнопки, или как воспитать SoapUIВ поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUI
SQALab2.5K vues
Azure - подведение итогов par Alexander Babich
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итогов
Alexander Babich302 vues
Расширяемая платформа для создания и управления автоматизированными тестами н... par jazzteam
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam1.9K vues
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий par solit
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
solit1K vues
Автоматизированное тестирование WEB сервисов par SQALab
Автоматизированное тестирование WEB сервисовАвтоматизированное тестирование WEB сервисов
Автоматизированное тестирование WEB сервисов
SQALab2.1K vues
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium par jazzteam
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
jazzteam3.4K vues
Эволюция автотестирования на Selenium par SQALab
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
SQALab1.5K vues
Azure - хранение данных в облаке par Alexander Babich
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
Alexander Babich263 vues
AngularJS. Введение и простые примеры для понимания par Igor Sazonov
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для понимания
Igor Sazonov13.5K vues
(Seleniumcamp) Selenium RC for QA Engineer par Yan Alexeenko
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko1.8K vues
Как красиво программировать в AngularJS то, что обычно программируют в 1С par FDConf
Как красиво программировать в AngularJS то, что обычно программируют в 1СКак красиво программировать в AngularJS то, что обычно программируют в 1С
Как красиво программировать в AngularJS то, что обычно программируют в 1С
FDConf1.5K vues
ASP.NET, MVC, ASP.NET MVC par GetDev.NET
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET2.6K vues
AntonSaburov (Gemini-Systems) @ CodeCamp2011 par CodeCamp
AntonSaburov (Gemini-Systems) @ CodeCamp2011AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
CodeCamp280 vues
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож... par Ilya Kaznacheev
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Ilya Kaznacheev475 vues

En vedette

MVC and Entity Framework par
MVC and Entity FrameworkMVC and Entity Framework
MVC and Entity FrameworkJames Johnson
753 vues20 diapositives
Parallel Extentions to the .NET Framework par
Parallel Extentions to the .NET FrameworkParallel Extentions to the .NET Framework
Parallel Extentions to the .NET Frameworkukdpe
604 vues33 diapositives
LearningMVCWithLINQToSQL par
LearningMVCWithLINQToSQLLearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLAkhil Mittal
264 vues46 diapositives
Real-time ASP.NET with SignalR par
Real-time ASP.NET with SignalRReal-time ASP.NET with SignalR
Real-time ASP.NET with SignalRAlexander Konduforov
11.7K vues40 diapositives
ASP.NET MVC and Entity Framework 4 par
ASP.NET MVC and Entity Framework 4ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4James Johnson
3.1K vues23 diapositives
Ling to SQL and Entity Framework performance analysis par
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisAlexander Konduforov
4.7K vues20 diapositives

En vedette(18)

Parallel Extentions to the .NET Framework par ukdpe
Parallel Extentions to the .NET FrameworkParallel Extentions to the .NET Framework
Parallel Extentions to the .NET Framework
ukdpe604 vues
ASP.NET MVC and Entity Framework 4 par James Johnson
ASP.NET MVC and Entity Framework 4ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4
James Johnson3.1K vues
Building a MVC eCommerce Site in Under 5 Minutes par Gaines Kergosien
Building a MVC eCommerce Site in Under 5 MinutesBuilding a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 Minutes
Gaines Kergosien22.4K vues
.NET,ASP .NET, Angular Js,LinQ par Avijit Shaw
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ
Avijit Shaw463 vues
Entity framework and how to use it par nspyre_net
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use it
nspyre_net3.2K vues
Dotnet Frameworks Version History par voltaincx
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version History
voltaincx14.2K vues
Introduccion a LINQ par Tonymx
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
Tonymx8.8K vues
Introducing Entity Framework 4.0 par Bishoy Demian
Introducing Entity Framework 4.0Introducing Entity Framework 4.0
Introducing Entity Framework 4.0
Bishoy Demian8.5K vues
ASP.NET MVC Performance par rudib
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performance
rudib59.7K vues
Introduction to .net framework par Arun Prasad
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
Arun Prasad88.2K vues

Similaire à ASP.NET MVC: new era?

ASP.NET MVC 3 Anton Vidishchev par
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevAlex Tumanoff
396 vues27 diapositives
Web application framework par
Web application frameworkWeb application framework
Web application frameworkViktor Chukhantsev
311 vues7 diapositives
Стандарты и соглашения в сложных ООП-приложениях par
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
539 vues32 diapositives
ASP.NET MVC 3 par
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3Денис Резник
637 vues25 diapositives
Test Driven Development in ASP.NET MVC 3 par
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
1.9K vues21 diapositives
MVC CTPP par
MVC CTPPMVC CTPP
MVC CTPPseemonoff
303 vues12 diapositives

Similaire à ASP.NET MVC: new era?(20)

ASP.NET MVC 3 Anton Vidishchev par Alex Tumanoff
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
Alex Tumanoff396 vues
Стандарты и соглашения в сложных ООП-приложениях par Magecom Ukraine
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
Magecom Ukraine539 vues
Test Driven Development in ASP.NET MVC 3 par Anton Vidishchev
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
Anton Vidishchev1.9K vues
Разработка мобильного и веб интерфейса для Caché par InterSystems CEE
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE253 vues
Технология MVC в высоконагруженных проектах par Media Gorod
Технология MVC в высоконагруженных проектахТехнология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектах
Media Gorod754 vues
ASP.NET MVC par SQALab
ASP.NET MVCASP.NET MVC
ASP.NET MVC
SQALab529 vues
Web and mobile development for intersystems caché, Eduard Lebedyuk par InterSystems
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems512 vues
JavaScript Базовый. Занятие 09. par Igor Shkulipa
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
Igor Shkulipa413 vues
C# Web. Занятие 09. par Igor Shkulipa
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
Igor Shkulipa1.6K vues
Паттерны проектирования par ITCP Community
Паттерны проектированияПаттерны проектирования
Паттерны проектирования
ITCP Community127 vues
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O... par WDDay
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay 20 vues
битрикс Framework сергей рыжиков par Media Gorod
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
Media Gorod1.1K vues
Сложные социальные приложения с помощью JS MVC фреймворков par z-tech
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворков
z-tech751 vues
Шаблоны проектирования в Magento par Pavel Usachev
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
Pavel Usachev2.3K vues

Plus de Alexander Konduforov

Recommender systems for E-commerce par
Recommender systems for E-commerceRecommender systems for E-commerce
Recommender systems for E-commerceAlexander Konduforov
4.6K vues29 diapositives
Fast data munging in R par
Fast data munging in RFast data munging in R
Fast data munging in RAlexander Konduforov
4.1K vues31 diapositives
Machine Learning and Azure Machine Learning par
Machine Learning and Azure Machine LearningMachine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningAlexander Konduforov
7.2K vues30 diapositives
ИИ персонажей в онлайн шутере Survarium par
ИИ персонажей в онлайн шутере SurvariumИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumAlexander Konduforov
1.1K vues42 diapositives
Design Principles par
Design PrinciplesDesign Principles
Design PrinciplesAlexander Konduforov
1.9K vues39 diapositives
New in Entity Framework 4.0 par
New in Entity Framework 4.0New in Entity Framework 4.0
New in Entity Framework 4.0Alexander Konduforov
776 vues26 diapositives

ASP.NET MVC: new era?

  • 1. ASP.NET MVC: начало новой эры? - ! Кондуфоров Александр Email: alexander.konduforov@gmail.com Weblog: www.merle-amber.blogspot.com
  • 2.
  • 3. Паттерн MVC Диаграмма взята с http://www.rsdn.ru/article/patterns/modelviewpresenter.xml
  • 4.
  • 5. Почему MVC сложно вписать в WebForms ?
  • 6. Что еще не так с WebForms ? эмуляция WinForms для web- приложений излишняя сложность событийной модели слишком много потоков выполнения через одни и те же события ( GET, Postback, Ajax Callback) сложность в реализации Internet- приложений с не очень большим количеством логики практически невозможно нормально покрыть тестами не дружит с SEO ( doPostback, etc.) будущее WebForms? сложность в разделении UI и бизнес-логики, code - behind часто превращается в кашу
  • 7. Если MVC – это хорошо, то он уже должен где-то использоваться? Java: Swing, Struts, Tapestry, Spring MVC, etc. C++: MFC (document – view) PHP: Symfony, Zend, etc. Perl: Catalyst Ruby: Ruby on Rails, Merb, etc. Python: Django, etc. .NET: Castle Monorail, Maverick.NET Microsoft позади планеты всей :( MVC
  • 8. Архитектура: Web Forms vs. MVC ASP.NET Web Forms ASP.NET MVC Связь между файлом и URL 1:1 виртуальная Модель обработки HTTP- запросов Postback REST - like Подход к написанию кода события в code-behind паттерн MVC Размещение логики управления code-behind контроллер UI толстый, содержит логику, серверные контролы и код тонкий, клиентские контролы и код
  • 9. Другие особенности все на интерфейсах поддержка unit- тестирования легкая расширяемость URL -маппинг контроллеров поддержка ASPX, ASCX, Master pages поддержка существующей инфраструктуры ASP.NET (аутентификация, роли, кеширование, сессия, провайдеры, локализация) прощай, viewstate :) прощай, postback -модель :-прощайте, многие стандартные контролы и UI библиотеки : ’ ( здравствуйте, jQuery, MooTools, extJS и другие js- библиотеки! ASP.NET MVC
  • 10. ЖЦ запроса ASP.NET MVC
  • 11.
  • 12. Модель Полная свобода действий для программиста Типы модели Domain Model, Presentation Model ( проекция) Доступ к данным Datasets/DataReaders, LINQ to SQL, Entity Framework, NHibernate, другие ORM Подходы и паттерны N- звенная архитектура, Domain Driven Design, паттерн Repository, др . Валидация рекомендуется валидировать объекты при помощи бизнес-правил в модели
  • 13. Контроллер Более строгая структура и использование, но легкая расширяемость Основа Controller класс Action- методы отвечают за обработку запроса Результат выполнения ViewResult: View, PartialView, redirect, file, text etc. Доступ к инфраструктуре HttpContext, Request, Response, Session, User, Server, etc. Передача данных ViewData, ViewModel (View), ModelState ( ошибки), TempData ( между запросами) Дополнительный контроль атрибуты AcceptVerbs, OutputCache, Authorize, HandleError, кастомные Плюшки ModelBinder ( типизация) , (Try)UpdateModel (автозаполнение объекта изменениями) Тестирование полная поддержка
  • 14. Представление Назад в прошлое! Форма обычная, не серверная Стиль программирования без code-behind и событий страницы, <%=…%>, клиентский код Инфраструктура Master Pages, Partial View (ascx) Получение данных из контроллера ViewData dictionary или ViewModel шаблон View Helpers HtmlHelper, UrlHelper, custom Валидация ModelState из контроллера, автоматический показ , summary Ajax ASP.NET Ajax (AjaxHelper), jQuery Ajax, др. Другие View Engines NHaml, Spark, Brail, nVelocity
  • 15. Так а что все-таки с контролами? а сами? :) Проблема заключается в отсутствии server-side формы Варианты Описание Partial View (ascx) аналог обычных ascx- контролов HtmlHelper, UrlHelper специальные классы, генерирующие HTML- разметку и учитывающие правила рутинга MVCContrib ( http://mvccontrib.codeplex.com/ ) библиотека различных инструментов для MVC, в том числе и контролов JS контролы и фреймворки extJS, jQuery, MooTools Контролы сторонних разработчиков на данный момент мало, но в ближайшее будущее станет намного больше
  • 16.
  • 17. Когда использовать? ASP.NET MVC ASP.NET Web Forms Internet- приложения и небольшие enterprise- приложения Крупные приложения enterprise- уровня Легковесный UI (типичное web- приложение с исп-нием Ajax ) Сложный многокомпонентный UI ( desktop- приложение под web ) Предпочтение в использовании client-side контролов Предпочтение в использовании server - side контролов Необходимость иметь полный контроль над HTML и JavaScript Отсутствие такой необходимости Строгие требования по времени отклика и быстродействию Менее строгие требования или отсутствие таковых Практика TDD ( Test Driven Development) , больше ручной работы RAD (Rapid Application Development) Переход с других более низкоуровневых web- технологий, желание использовать MVC Отсутствие серьезных знаний или опыта в web- разработке, переход с WinForms
  • 18.
  • 19.
  • 20.