0
TulaDev.NET<br />ASP.NET MVC<br />Принципы работы и внутреннее устройство<br />Андрей Кулешов<br />Codemasters Internation...
Что будет:<br />ASP.NET Web Forms – что произошло?<br />Model-View-Controller<br />MVC с точки зрения веб-сервера<br />Пар...
Почему перестало хватать<br />Web Forms?<br /><ul><li>ASP.NET – хорошая программная платформа, созданная десятилетие назад
 Одно из декларированных преимуществ – не нужно учить HTML – всё происходит на сервере(высокий уровень абстракции)
 Потому что в далекие времена ничего хорошего на клиенте происходить не могло
Высокая сложность JavaScript – у каждого браузера свой диалект, отсутствие широко распространенных фреймворков</li></li></...
 Одно из декларированных преимуществ – не нужно учить HTML – всё происходит на сервере (высокий уровень абстракции)
 Потому что в далекие времена ничего хорошего на клиенте происходить не могло
Высокая сложность JavaScript – у каждого браузера свой диалект, отсутствие широко распространенных фреймворков</li></ul>Чт...
 JavaScript фреймворки(jQuery, Yahoo)
Расширение возможностей браузеров
Юнит-тестирование</li></li></ul><li>Сферический MVC в ваакуме<br />Model-view-controller (MVC, «Модель-представление-повед...
Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
Контроллер(Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимос...
 модель независима от визуального представления
 для одной и той же модели можно создавать различные представления</li></li></ul><li>Separation of Concerns Разделение отв...
открытым к модификациям и рефакторингу
повторно используемым
управляемым
масштабируемым</li></li></ul><li>Что нужно менять в ASP.NET, чтобы  добиться эффекта MVC?<br />ASP.NET и IIS делали одни и...
Демо<br />TulaMvc<br />
Upcoming SlideShare
Loading in...5
×

ASP.NET MVC

1,809

Published on

ASP.NET MVC - внутреннее устройство

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
1,809
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "ASP.NET MVC"

  1. 1. TulaDev.NET<br />ASP.NET MVC<br />Принципы работы и внутреннее устройство<br />Андрей Кулешов<br />Codemasters International<br />Senior C# Developer, Team Lead<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />
  2. 2. Что будет:<br />ASP.NET Web Forms – что произошло?<br />Model-View-Controller<br />MVC с точки зрения веб-сервера<br />Пара параметров – controller и action<br />
  3. 3. Почему перестало хватать<br />Web Forms?<br /><ul><li>ASP.NET – хорошая программная платформа, созданная десятилетие назад
  4. 4. Одно из декларированных преимуществ – не нужно учить HTML – всё происходит на сервере(высокий уровень абстракции)
  5. 5. Потому что в далекие времена ничего хорошего на клиенте происходить не могло
  6. 6. Высокая сложность JavaScript – у каждого браузера свой диалект, отсутствие широко распространенных фреймворков</li></li></ul><li>Почему перестало хватать<br />Web Forms?<br /><ul><li>ASP.NET – хорошая программная платформа, созданная десятилетие назад
  7. 7. Одно из декларированных преимуществ – не нужно учить HTML – всё происходит на сервере (высокий уровень абстракции)
  8. 8. Потому что в далекие времена ничего хорошего на клиенте происходить не могло
  9. 9. Высокая сложность JavaScript – у каждого браузера свой диалект, отсутствие широко распространенных фреймворков</li></ul>Что случилось?<br /><ul><li> AJAX
  10. 10. JavaScript фреймворки(jQuery, Yahoo)
  11. 11. Расширение возможностей браузеров
  12. 12. Юнит-тестирование</li></li></ul><li>Сферический MVC в ваакуме<br />Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.<br /><ul><li>Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своё состояние.
  13. 13. Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
  14. 14. Контроллер(Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции.
  15. 15. модель независима от визуального представления
  16. 16. для одной и той же модели можно создавать различные представления</li></li></ul><li>Separation of Concerns Разделение ответственности<br />Предназначено для того, чтобы сделать код более<br /><ul><li>тестируемым
  17. 17. открытым к модификациям и рефакторингу
  18. 18. повторно используемым
  19. 19. управляемым
  20. 20. масштабируемым</li></li></ul><li>Что нужно менять в ASP.NET, чтобы добиться эффекта MVC?<br />ASP.NET и IIS делали одни и те же люди<br />HTTP handlers, HTTP modules, URL rewriting<br />IHttpHandler – как единая точка входа<br />Открытая и расширяемая конфигурация<br />Каждый запрос к серверу обрабатывается HTTP handler<br />Связывание URL с заданным HTTP handler превращает ASP.NET в RESTfulсистему(с поддержкой удобочитаемых URL)<br />
  21. 21. Демо<br />TulaMvc<br />
  22. 22. Единая среда для Web Forms и MVC<br /><ul><li>Одно и то же программное окружение
  23. 23. Один и тот же набор модулей для аутентификации, кэширования, хранения сессий
  24. 24. ЦентрализованныйHTTP хэндлер, отдающий все ресурсы
  25. 25. Возможность работы бок о бок
  26. 26. Классические Web Forms и ASP.NET MVC могут работать внутри одного и того же проекта</li></li></ul><li>URL mapping<br />Всё начинается с пользователя<br />http://theshop.com/products/prices/bicycle<br />Что возвращать в ответ на этот запрос?<br />
  27. 27. Что возвращают Actions?<br />HTML<br />Как расшифровывается HTML?<br />HyperText Markup Language<br />В конечном итоге всё сводится к типу String<br />Вопрос, как обычно в удобстве<br />
  28. 28. Тогда зачем нужны View?<br /><ul><li>Использование ASPX/ASCX – только потому, что мы уже умеем на них писать
  29. 29. Это НЕ Page – это шаблон
  30. 30. Единственная цель остается той же – получить строку с HTML (JavaScript, Json, Base64 Binary) внутри
  31. 31. Возможность подключения кастомизированныхView Engine, начиная с первой версии
  32. 32. ПоддерживаемыйMicrosoft ViewEngine Razor начиная с третьей версии ASP.NET MVC</li></li></ul><li>View<br /><ul><li>Pure HTML
  33. 33. HTML.* helpers
  34. 34. AJAX.* helpers
  35. 35. URL.* helpers
  36. 36. <%= … %> vs <%: … %> vs <% %>
  37. 37. Повторное использование кода и разметки – пользовательские контролы</li></li></ul><li>Демо<br />ASP.NET MVC сайт с нуля<br />
  38. 38. Rich User Interface<br /><ul><li>Легкость взаимодействия с JavaScript – разметка не меняется после серверной обработки
  39. 39. jQueryв коробке, поддерживается Microsoft
  40. 40. Легкость AJAX-взаимодействия с сервером – можно обращаться напрямую к Action
  41. 41. Встроенные AJAX.* helpers (начиная с версии 3 используют jQuery, а не собственные библиотеки Microsoft)
  42. 42. Обмен данными в форматах plain HTML, JSON, JavaScript
  43. 43. Благодаря этому – повторное использование серверных контролов в клиентском коде без многократных перегрузок страниц</li></li></ul><li>Unobtrusive JavaScript<br /><ul><li>Разделение обязанностей – HTML отдельно, JavaScript отдельно
  44. 44. HTML-5 style<input type=“text” data-valid=“true” value=“Привет”/>
  45. 45. AJAX.*и валидация данных используют этот подход,начиная с версии 3
  46. 46. Значительно упрощает получение HTML через ajax-запрос
  47. 47. Значительно упрощает кастомизацию
  48. 48. Значительно увеличивает читаемость кода</li></li></ul><li>Валидация данных<br /><ul><li>Декларативное объявление аттрибутоввалидности
  49. 49. Аттрибутыассоциированны с самой моделью
  50. 50. Если модель недоступна (например, сгенерирована) – можно создать для неё класс – поставщик метаданных
  51. 51. Единая модель валидации для клиента и сервера
  52. 52. Начиная с MVC 3 – jquery.validationкак движок клиентской валидации
  53. 53. Декларативный HTML-5 стиль на клиенте – легкость работы с AJAX</li></li></ul><li>Демо<br />Валидация, HTML-5 аттрибуты<br />
  54. 54. Как в контроллеры приходят параметры?<br />Концепция Model Binders<br /><ul><li>Заполнение модели сырыми данными из формы, запроса и прочих источников данных, пришедших от пользователя – НЕ работа контроллераЭто нарушило бы принцип Single Responsibility
  55. 55. Для любой модели можно определить класс, который ей конструирует, глобально или на уровне отдельного метода </li></ul>Default Model Binder<br /><ul><li>ValueProvider: данные из формы, данные из строки запроса
  56. 56. Сопоставление данных со свойствами модели происходит по имени
  57. 57. Угадайте механизм .NET, который позволяет это делать </li></ul>Reflection<br />
  58. 58. Вопросы?Внимательно слушаю <br />Андрей Кулешов<br />Codemasters International<br />Senior C# Developer, Team Lead<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />
  59. 59. Источники<br />ASP.NEThttp://asp.net/mvc/<br />Dino Esposito bloghttp://weblogs.asp.net/despos/<br />MVC conferencehttp://www.mvcconf.com/<br />Scott Guthrie bloghttp://weblogs.asp.net/scottgu/<br />Bred Wilson bloghttp://bradwilson.typepad.com/blog/<br />Steve Sanderson bloghttp://blog.stevensanderson.com/<br />Haack, Hanselmanи другие гуру<br />Андрей Кулешов<br />Codemasters International<br />Senior C# Developer, Team Lead<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×