SlideShare a Scribd company logo
1 of 20
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]

More Related Content

What's hot

Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverAlex Mikitenko
 
Фреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиSQALab
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...COMAQA.BY
 
Лилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web ServicesЛилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web ServicesSQADays_2009_Piter
 
В поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUIВ поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUISQALab
 
Azure - подведение итогов
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итоговAlexander Babich
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
Azure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAzure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAlexander Babich
 
Автоматизированное тестирование WEB сервисов
Автоматизированное тестирование WEB сервисовАвтоматизированное тестирование WEB сервисов
Автоматизированное тестирование WEB сервисовSQALab
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumSQALab
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облакеAlexander Babich
 
AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияIgor Sazonov
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA EngineerYan Alexeenko
 
Как красиво программировать в AngularJS то, что обычно программируют в 1С
Как красиво программировать в AngularJS то, что обычно программируют в 1СКак красиво программировать в AngularJS то, что обычно программируют в 1С
Как красиво программировать в AngularJS то, что обычно программируют в 1СFDConf
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011CodeCamp
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Ilya Kaznacheev
 

What's hot (20)

Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
 
Фреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силамиФреймворк автотестирования веб-сервисов своими силами
Фреймворк автотестирования веб-сервисов своими силами
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
 
Лилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web ServicesЛилия Горбачик, Тестирование Web Services
Лилия Горбачик, Тестирование Web Services
 
В поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUIВ поисках магической кнопки, или как воспитать SoapUI
В поисках магической кнопки, или как воспитать SoapUI
 
Azure - подведение итогов
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итогов
 
MVC
MVCMVC
MVC
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
Azure - Visual Studio Team Services
Azure - Visual Studio Team ServicesAzure - Visual Studio Team Services
Azure - Visual Studio Team Services
 
Автоматизированное тестирование WEB сервисов
Автоматизированное тестирование WEB сервисовАвтоматизированное тестирование WEB сервисов
Автоматизированное тестирование WEB сервисов
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
 
AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для понимания
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Как красиво программировать в AngularJS то, что обычно программируют в 1С
Как красиво программировать в AngularJS то, что обычно программируют в 1СКак красиво программировать в AngularJS то, что обычно программируют в 1С
Как красиво программировать в AngularJS то, что обычно программируют в 1С
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 

Viewers also liked

MVC and Entity Framework
MVC and Entity FrameworkMVC and Entity Framework
MVC and Entity FrameworkJames Johnson
 
Parallel Extentions to the .NET Framework
Parallel Extentions to the .NET FrameworkParallel Extentions to the .NET Framework
Parallel Extentions to the .NET Frameworkukdpe
 
LearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLLearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLAkhil Mittal
 
ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4James Johnson
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisAlexander Konduforov
 
Building a MVC eCommerce Site in Under 5 Minutes
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 MinutesGaines Kergosien
 
.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQAvijit Shaw
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use itnspyre_net
 
Dotnet Frameworks Version History
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version Historyvoltaincx
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQTonymx
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVCMohd Manzoor Ahmed
 
Introducing Entity Framework 4.0
Introducing Entity Framework 4.0Introducing Entity Framework 4.0
Introducing Entity Framework 4.0Bishoy Demian
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performancerudib
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 

Viewers also liked (18)

MVC and Entity Framework
MVC and Entity FrameworkMVC and Entity Framework
MVC and Entity Framework
 
Parallel Extentions to the .NET Framework
Parallel Extentions to the .NET FrameworkParallel Extentions to the .NET Framework
Parallel Extentions to the .NET Framework
 
LearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLLearningMVCWithLINQToSQL
LearningMVCWithLINQToSQL
 
Real-time ASP.NET with SignalR
Real-time ASP.NET with SignalRReal-time ASP.NET with SignalR
Real-time ASP.NET with SignalR
 
ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4ASP.NET MVC and Entity Framework 4
ASP.NET MVC and Entity Framework 4
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysis
 
Building a MVC eCommerce Site in Under 5 Minutes
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
 
Introducing LINQ
Introducing LINQIntroducing LINQ
Introducing LINQ
 
.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use it
 
Dotnet Frameworks Version History
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version History
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
 
LINQ
LINQLINQ
LINQ
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC
 
Getting started with entity framework
Getting started with entity framework Getting started with entity framework
Getting started with entity framework
 
Introducing Entity Framework 4.0
Introducing Entity Framework 4.0Introducing Entity Framework 4.0
Introducing Entity Framework 4.0
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performance
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 

Similar to ASP.NET MVC: new era?

ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevAlex Tumanoff
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
 
Технология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектахТехнология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектахMedia Gorod
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVCSQALab
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
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 LebedyukInterSystems
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектированияITCP Community
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...WDDay
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковz-tech
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в MagentoPavel Usachev
 

Similar to ASP.NET MVC: new era? (20)

ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
 
Web application framework
Web application frameworkWeb application framework
Web application framework
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
 
MVC CTPP
MVC CTPPMVC CTPP
MVC CTPP
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
Технология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектахТехнология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектах
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
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
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектирования
 
RichFaces: обзор
RichFaces: обзорRichFaces: обзор
RichFaces: обзор
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворков
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
 

More from Alexander Konduforov

Recommender systems for E-commerce
Recommender systems for E-commerceRecommender systems for E-commerce
Recommender systems for E-commerceAlexander Konduforov
 
Machine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningMachine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningAlexander Konduforov
 
ИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumAlexander Konduforov
 

More from Alexander Konduforov (6)

Recommender systems for E-commerce
Recommender systems for E-commerceRecommender systems for E-commerce
Recommender systems for E-commerce
 
Fast data munging in R
Fast data munging in RFast data munging in R
Fast data munging in R
 
Machine Learning and Azure Machine Learning
Machine Learning and Azure Machine LearningMachine Learning and Azure Machine Learning
Machine Learning and Azure Machine Learning
 
ИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере SurvariumИИ персонажей в онлайн шутере Survarium
ИИ персонажей в онлайн шутере Survarium
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 
New in Entity Framework 4.0
New in Entity Framework 4.0New in Entity Framework 4.0
New in Entity Framework 4.0
 

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.