ASP.NET MVC: new era?

4,079 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,079
On SlideShare
0
From Embeds
0
Number of Embeds
515
Actions
Shares
0
Downloads
84
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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>

    ×