Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ASP.NET MVC: new era?

4,210 views

Published on

A technical presentation of the capabilities of the brand new ASP.NET MVC 1.0 technology for web applications creation

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ASP.NET MVC: new era?

  1. 1. ASP.NET MVC: начало новой эры? - ! Кондуфоров Александр Email: alexander.konduforov@gmail.com Weblog: www.merle-amber.blogspot.com
  2. 2. О чем поговорим? <ul><li>паттерн MVC </li></ul><ul><li>предпосылки появления ASP.NET MVC </li></ul><ul><li>сравнение Web Forms и MVC </li></ul><ul><li>ASP.NET MVC изнутри </li></ul><ul><li>модель, контроллеры, представление, контролы </li></ul><ul><li>когда что использовать </li></ul><ul><li>наше общее будущее </li></ul><ul><li>и, конечно же, посмотрим пример :) </li></ul>
  3. 3. Паттерн MVC Диаграмма взята с http://www.rsdn.ru/article/patterns/modelviewpresenter.xml
  4. 4. Зачем нужен MVC ? <ul><li>отделение работы с данными (логики) от представления </li></ul><ul><li>четкое разделение обязанностей между компонентами </li></ul><ul><li>уменьшение связности между компонентами, их независимость </li></ul><ul><li>дополнительный бонус: упрощение unit- тестирования </li></ul>
  5. 5. Почему MVC сложно вписать в WebForms ?
  6. 6. Что еще не так с WebForms ? эмуляция WinForms для web- приложений излишняя сложность событийной модели слишком много потоков выполнения через одни и те же события ( GET, Postback, Ajax Callback) сложность в реализации Internet- приложений с не очень большим количеством логики практически невозможно нормально покрыть тестами не дружит с SEO ( doPostback, etc.) будущее WebForms? сложность в разделении UI и бизнес-логики, code - behind часто превращается в кашу
  7. 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. 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. 9. Другие особенности все на интерфейсах поддержка unit- тестирования легкая расширяемость URL -маппинг контроллеров поддержка ASPX, ASCX, Master pages поддержка существующей инфраструктуры ASP.NET (аутентификация, роли, кеширование, сессия, провайдеры, локализация) прощай, viewstate :) прощай, postback -модель :- прощайте, многие стандартные контролы и UI библиотеки : ’ ( здравствуйте, jQuery, MooTools, extJS и другие js- библиотеки! ASP.NET MVC
  10. 10. ЖЦ запроса ASP.NET MVC
  11. 11. URL routing <ul><li>Возможности: </li></ul>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’ а
  12. 12. Модель Полная свобода действий для программиста Типы модели Domain Model, Presentation Model ( проекция) Доступ к данным Datasets/DataReaders, LINQ to SQL, Entity Framework, NHibernate, другие ORM Подходы и паттерны N- звенная архитектура, Domain Driven Design, паттерн Repository, др . Валидация рекомендуется валидировать объекты при помощи бизнес-правил в модели
  13. 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. 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. 15. Так а что все-таки с контролами? а сами? :) Проблема заключается в отсутствии server-side формы Варианты Описание Partial View (ascx) аналог обычных ascx- контролов HtmlHelper, UrlHelper специальные классы, генерирующие HTML- разметку и учитывающие правила рутинга MVCContrib ( http://mvccontrib.codeplex.com/ ) библиотека различных инструментов для MVC, в том числе и контролов JS контролы и фреймворки extJS, jQuery, MooTools Контролы сторонних разработчиков на данный момент мало, но в ближайшее будущее станет намного больше
  16. 16. DEMO <ul><li>Наконец-то! </li></ul>
  17. 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. 18. Что день грядущий нам готовит? <ul><li>изучение двух веб-технологий вместо одной </li></ul><ul><li>различный набор контролов для Web Forms и MVC </li></ul><ul><li>различные техники, подходы, комьюнити </li></ul><ul><li>переход многих разработчиков на ASP.NET MVC </li></ul><ul><li>увеличение количества обычных Internet веб-сайтов, построенных на ASP.NET ( MVC) </li></ul><ul><li>с обретением MVC более серьезной формы (контролы, скорость разработки) и поддержки разработчиков – вполне возможно доминирование это технологии в разработке </li></ul>
  19. 19. Полезные ссылки <ul><li>Official WebSite: http://www.asp.net/mvc/ </li></ul><ul><li>Scott Guthrie’s blog: http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx </li></ul><ul><li>Free eBook and NerdDinner example: http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx </li></ul><ul><li>Scott Hanselman’s blog: http://www.hanselman.com/blog/CategoryView.aspx?category=ASP.NET+MVC </li></ul><ul><li>Phil Haack’s blog: http://haacked.com/ </li></ul><ul><li>Steven Walther on ASP.NET MVC: http://weblogs.asp.net/StephenWalther/ </li></ul><ul><li>Rick Strahl’s post on ASP.NET MVC: http://west-wind.com/weblog/posts/198731.aspx </li></ul><ul><li>Dino Esposito on MVC architecture: http://dotnetslackers.com/articles/aspnet/AnArchitecturalViewOfTheASPNETMVCFramework.aspx </li></ul><ul><li>RSDN: MVC в .NET: http://www.rsdn.ru/article/patterns/ModelViewPresenter.xml </li></ul><ul><li>RSDN: Обобщенный MVC: http://rsdn.ru/article/patterns/generic-mvc.xml </li></ul>
  20. 20. Спасибо за внимание. Вопросы? <ul><li>? </li></ul>

×