SlideShare una empresa de Scribd logo
1 de 36
Использование XSLT для разработки сайтов (на ASP.NET) Андрей Майоров, BYTE-force xor@byte-force.com  twitter.com/xorets
Что нужно от языка шаблонов? Задача – показывать данные В виде HTML И не только в HTML Шаблон легко делается из HTML Общие фрагменты выносятся в отдельные файлы Работает быстро Кроссплатформенный и стандартный Все это —XSLT
Уже готовый. С блэкджеком и ... Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet.
Команды XSLT stylesheet transform import  include  output  template  param variable  copy  apply-imports  apply-templates  call-template  with-param value-of  copy-of  choose  when  otherwise  if  for-each  sort  decimal-format  number  element  attribute  attribute-set text  comment  processing-instruction  fallback key  message namespace-alias  strip-space  preserve-space  Всего 35 штук
XSLT ~ функциональный язык Декларативный язык: не 100% функциональный, но точно не императивный. Нельзя писать как в императивном – получится плохо. Правильный подход позволяет добиться невозможных в императивном языке вещей.
Основные преимущества XSLT Data driven Именно данные, находящиеся наконвейере обработки, управляют всем процессом.  XSLT templates <underpants /> <profit />
Основные преимущества XSLT Модульность Программа на XSLT состоит из независимых шаблонов, отвечающих на разные входные данные. underpants.xslt 3шаблона xsl:include plan.xslt 5 шаблонов sox.xslt 2шаблона xsl:include
Основные преимущества XSLT Наследование Директива import позволяет устанавливать отношения, сходные с наследованием. base.xslt xsl:import extension.xslt
Demo
Закрепление материала xsl:import Используйте для наследования  <xsl:apply-imports> - вызов базового шаблона <xsl:apply-templates select=“.” mode=“…” />	- template method, вызов в базовом шаблоне. <xsl:call-template name=“…”/>	- вызывает шаблон, заданный последним.
Закрепление материала xsl:include Используйте для подключения компонентов Просто вставка одного файла внутрь другого
Закрепление материала xsl:apply-templates Основной инструмент! Отдает узлы в обработку – позволяет делать волшебные преобразования. Использовать вместо: xsl:copy-of, xsl:for-each, xsl:choose. XSLT templates xsl:apply-templates <underpants /> <profit />
Закрепление материала Работа с переменными Можно только проинициализировать, менять значение нельзя. Цикл с увеличением счетчика – только через рекурсивный вызов.
Домашняя работа XPath. Функции XSLT и XPath. EXSLT. Поддержка в разных платформах.
MVC в веб-разработке Model-View-Controller. Отделяет разработку UI от разработки бизнес-логики. Члены команды работают параллельно: Верстальщик делает интерфейс. Серверный программист – контроллеры.
В каком формате передавать данные между controller и view?
Передавать типизированный объект – неудобно Типизированный объект – это код, его еще надо написать. Наполнить объект данными – опять нужен код.  Кто его напишет, когда еще нет бизнес-логики?
Храним промежуточные данные в XML Данные удобно прототипировать вручную. В простом текстовом редакторе.  Не нужно ждать готовности контроллера. Данные для тестов уже есть в XML-документе. Этими данными можно тестировать и сам контроллер.
Сделали прототип и пошли работать… <poem>     <title>Руслан и Людмила</title> <rating>5</rating> <description>...</description> </poem> Верстальщик Программист
XML в веб-приложениях В веб часть данных уже в HTML. Например, текст новостной статьи. Взяв XHTML, можем объединить все данные в один XML-документ: Сильно структурированные — поля объектов. Слабо структурированные — данные от пользователя.
Объединение слабо и сильно типизированных данных <poemid=“156”>     <title>Руслан и Людмила</title> <rating>5</rating> <description> «Руслан и Людмила» — первая законченная поэма Александра Пушкина. </description> </poem>
Критика XML в качестве модели Бизнес-логике неудобно работать с XML. Надо работать с типизированной моделью. Вручную преобразовывать объект в XML – мартышкин труд. XmlSerializerимеет свои ограничения.
Возьмите ObjectXPathNavigator Позволяет работать с графом объектов, как будто это XML-документ. «Ленивый» Совместим с XmlSerializer. Расширяем.
XsltViewдля ASP.NET MVC Нужен
Чем плох MvcContrib.XsltViewEngine? Использованием специального объекта XsltViewData – нельзя сменить view, не меняя контроллер. Не умеет преобразовывать модель в XML.
Формы в XSLT
Сложности с формами Формы задаются в двух местах: В XSLT задаем HTML-форму В модели – поля данных, со статусами валидации, сообщениями и др. Возникает соблазн сделать «язык форм» на базе XML-модели. Это сложное и громоздкое решение В принципе, те же проблемы у ASP.NET MVC
ASP.NET Web Forms: Страшные Очень громоздкая обработка запроса Выдают избыточный, страшноватый маркап Понятные Разработка веб-форм в VS очень проста и интуитивно понятна Хочется минимизировать страх, оставив только пользу
Решение Совмещаем оба подхода. От веб-формы берем только поля ввода. Весь дизайн прикладываем при помощи XSLT.
Решение подробнее Веб-форма производит xHTML. xHTML=XML. Контроллер вставляет форму в модель. View копирует код формы наружу, в нужное место страницы.  Browser. Post back.  Контроллер передает пост-бэки в ASPX-файл. goto 1.
Решение в картинках Controller ASPX form Browser Request Request Данные (xml) Форма (xHTML) Model View
Технические сложности HttpServerUtility.Executeне дает доступа к полям формы. Берем код Execute рефлектором. Некоторые нужные части HttpContextи HttpResponseзакрыты. Используем reflection: HttpContext.SetCurrentHandler HttpContext.RestoreCurrentHandler HttpContext.SwitchWriter
Итоги XSLT – мощный язык шаблонов XML удобен в качестве модели в MVC ObjectXPathNavigator позволяет типизированные модели Примиряет с веб-формами
Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. General Hooker
Спасибо за внимание! Андрей Майоров, BYTE-force xor@byte-force.com twitter.com/xorets blogs.byte-force.com/xor

Más contenido relacionado

Destacado

Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureAndrew Mayorov
 
Steffen_P_Walz_lift11_110203
Steffen_P_Walz_lift11_110203Steffen_P_Walz_lift11_110203
Steffen_P_Walz_lift11_110203Steffen P. Walz
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserAndrew Mayorov
 
Social media school 2011, meten is weten
Social media school 2011, meten is wetenSocial media school 2011, meten is weten
Social media school 2011, meten is wetenMaurice Beerthuyzen
 
Digitaal werven, wat kan recruitment leren van marketing?
Digitaal werven, wat kan recruitment leren van marketing? Digitaal werven, wat kan recruitment leren van marketing?
Digitaal werven, wat kan recruitment leren van marketing? Maurice Beerthuyzen
 
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Andrew Mayorov
 
Проектирование архитектуры приложений
Проектирование архитектуры приложенийПроектирование архитектуры приложений
Проектирование архитектуры приложенийAndrew Mayorov
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAndrew Mayorov
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Andrew Mayorov
 
Jugant amb el pensament!
Jugant amb el pensament!Jugant amb el pensament!
Jugant amb el pensament!Aina Capó
 
Meten is weten presentatie Social media School maart 2011
Meten is weten presentatie Social media School maart 2011Meten is weten presentatie Social media School maart 2011
Meten is weten presentatie Social media School maart 2011Maurice Beerthuyzen
 
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Andrew Mayorov
 
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"Andrew Mayorov
 
CA FILMS PACKAGING TEST RESULTS
CA FILMS PACKAGING TEST RESULTSCA FILMS PACKAGING TEST RESULTS
CA FILMS PACKAGING TEST RESULTSshubhamchandra
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failAndrew Mayorov
 
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"Andrew Mayorov
 
Network Detox: Connected Futures In Play
Network Detox: Connected Futures In PlayNetwork Detox: Connected Futures In Play
Network Detox: Connected Futures In PlaySteffen P. Walz
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsAndrew Mayorov
 

Destacado (20)

Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
 
Steffen_P_Walz_lift11_110203
Steffen_P_Walz_lift11_110203Steffen_P_Walz_lift11_110203
Steffen_P_Walz_lift11_110203
 
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
 
Social media school 2011, meten is weten
Social media school 2011, meten is wetenSocial media school 2011, meten is weten
Social media school 2011, meten is weten
 
Digitaal werven, wat kan recruitment leren van marketing?
Digitaal werven, wat kan recruitment leren van marketing? Digitaal werven, wat kan recruitment leren van marketing?
Digitaal werven, wat kan recruitment leren van marketing?
 
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...
 
Проектирование архитектуры приложений
Проектирование архитектуры приложенийПроектирование архитектуры приложений
Проектирование архитектуры приложений
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Sign Me Up
Sign Me UpSign Me Up
Sign Me Up
 
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphics
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
 
Jugant amb el pensament!
Jugant amb el pensament!Jugant amb el pensament!
Jugant amb el pensament!
 
Meten is weten presentatie Social media School maart 2011
Meten is weten presentatie Social media School maart 2011Meten is weten presentatie Social media School maart 2011
Meten is weten presentatie Social media School maart 2011
 
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...
 
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
 
CA FILMS PACKAGING TEST RESULTS
CA FILMS PACKAGING TEST RESULTSCA FILMS PACKAGING TEST RESULTS
CA FILMS PACKAGING TEST RESULTS
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
 
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
 
Network Detox: Connected Futures In Play
Network Detox: Connected Futures In PlayNetwork Detox: Connected Futures In Play
Network Detox: Connected Futures In Play
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
 

Similar a Xslt

Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...
Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...
Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...sadomovalex
 
Flex 4 Gumbo Framework
Flex 4 Gumbo FrameworkFlex 4 Gumbo Framework
Flex 4 Gumbo FrameworkMr_Dr_Jr
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBFedor Malyshkin
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.Igor Shkulipa
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-формAlexander Anokhin
 
Flex 4 gumbo framework
Flex 4 gumbo frameworkFlex 4 gumbo framework
Flex 4 gumbo frameworkValery
 
Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4Dmitriy Krukov
 
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)Vladimir Panov
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменитьGoSharp
 
F# функциональный язык "новой" волны
F# функциональный язык "новой" волныF# функциональный язык "новой" волны
F# функциональный язык "новой" волныArtem Prysyazhnuk
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data ServicesMedia Gorod
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Alexander Babich
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6Technopark
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 

Similar a Xslt (20)

Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...
Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...
Data retrieving in Sharepoint. Camlex.NET - tool for building CAML queries us...
 
Flex 4 Gumbo Framework
Flex 4 Gumbo FrameworkFlex 4 Gumbo Framework
Flex 4 Gumbo Framework
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.
 
XSLT -5
XSLT -5 XSLT -5
XSLT -5
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-форм
 
Flex 4 gumbo framework
Flex 4 gumbo frameworkFlex 4 gumbo framework
Flex 4 gumbo framework
 
Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
 
лр4 uml
лр4 umlлр4 uml
лр4 uml
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
 
F# функциональный язык "новой" волны
F# функциональный язык "новой" волныF# функциональный язык "новой" волны
F# функциональный язык "новой" волны
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data Services
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
Backbone js
Backbone jsBackbone js
Backbone js
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 

Xslt

  • 1. Использование XSLT для разработки сайтов (на ASP.NET) Андрей Майоров, BYTE-force xor@byte-force.com twitter.com/xorets
  • 2. Что нужно от языка шаблонов? Задача – показывать данные В виде HTML И не только в HTML Шаблон легко делается из HTML Общие фрагменты выносятся в отдельные файлы Работает быстро Кроссплатформенный и стандартный Все это —XSLT
  • 3. Уже готовый. С блэкджеком и ... Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet.
  • 4. Команды XSLT stylesheet transform import include output template param variable copy apply-imports apply-templates call-template with-param value-of copy-of choose when otherwise if for-each sort decimal-format number element attribute attribute-set text comment processing-instruction fallback key message namespace-alias strip-space preserve-space Всего 35 штук
  • 5. XSLT ~ функциональный язык Декларативный язык: не 100% функциональный, но точно не императивный. Нельзя писать как в императивном – получится плохо. Правильный подход позволяет добиться невозможных в императивном языке вещей.
  • 6. Основные преимущества XSLT Data driven Именно данные, находящиеся наконвейере обработки, управляют всем процессом. XSLT templates <underpants /> <profit />
  • 7. Основные преимущества XSLT Модульность Программа на XSLT состоит из независимых шаблонов, отвечающих на разные входные данные. underpants.xslt 3шаблона xsl:include plan.xslt 5 шаблонов sox.xslt 2шаблона xsl:include
  • 8. Основные преимущества XSLT Наследование Директива import позволяет устанавливать отношения, сходные с наследованием. base.xslt xsl:import extension.xslt
  • 10. Закрепление материала xsl:import Используйте для наследования <xsl:apply-imports> - вызов базового шаблона <xsl:apply-templates select=“.” mode=“…” /> - template method, вызов в базовом шаблоне. <xsl:call-template name=“…”/> - вызывает шаблон, заданный последним.
  • 11. Закрепление материала xsl:include Используйте для подключения компонентов Просто вставка одного файла внутрь другого
  • 12. Закрепление материала xsl:apply-templates Основной инструмент! Отдает узлы в обработку – позволяет делать волшебные преобразования. Использовать вместо: xsl:copy-of, xsl:for-each, xsl:choose. XSLT templates xsl:apply-templates <underpants /> <profit />
  • 13. Закрепление материала Работа с переменными Можно только проинициализировать, менять значение нельзя. Цикл с увеличением счетчика – только через рекурсивный вызов.
  • 14. Домашняя работа XPath. Функции XSLT и XPath. EXSLT. Поддержка в разных платформах.
  • 15. MVC в веб-разработке Model-View-Controller. Отделяет разработку UI от разработки бизнес-логики. Члены команды работают параллельно: Верстальщик делает интерфейс. Серверный программист – контроллеры.
  • 16. В каком формате передавать данные между controller и view?
  • 17. Передавать типизированный объект – неудобно Типизированный объект – это код, его еще надо написать. Наполнить объект данными – опять нужен код. Кто его напишет, когда еще нет бизнес-логики?
  • 18. Храним промежуточные данные в XML Данные удобно прототипировать вручную. В простом текстовом редакторе. Не нужно ждать готовности контроллера. Данные для тестов уже есть в XML-документе. Этими данными можно тестировать и сам контроллер.
  • 19. Сделали прототип и пошли работать… <poem> <title>Руслан и Людмила</title> <rating>5</rating> <description>...</description> </poem> Верстальщик Программист
  • 20. XML в веб-приложениях В веб часть данных уже в HTML. Например, текст новостной статьи. Взяв XHTML, можем объединить все данные в один XML-документ: Сильно структурированные — поля объектов. Слабо структурированные — данные от пользователя.
  • 21. Объединение слабо и сильно типизированных данных <poemid=“156”> <title>Руслан и Людмила</title> <rating>5</rating> <description> «Руслан и Людмила» — первая законченная поэма Александра Пушкина. </description> </poem>
  • 22. Критика XML в качестве модели Бизнес-логике неудобно работать с XML. Надо работать с типизированной моделью. Вручную преобразовывать объект в XML – мартышкин труд. XmlSerializerимеет свои ограничения.
  • 23. Возьмите ObjectXPathNavigator Позволяет работать с графом объектов, как будто это XML-документ. «Ленивый» Совместим с XmlSerializer. Расширяем.
  • 25. Чем плох MvcContrib.XsltViewEngine? Использованием специального объекта XsltViewData – нельзя сменить view, не меняя контроллер. Не умеет преобразовывать модель в XML.
  • 26.
  • 28. Сложности с формами Формы задаются в двух местах: В XSLT задаем HTML-форму В модели – поля данных, со статусами валидации, сообщениями и др. Возникает соблазн сделать «язык форм» на базе XML-модели. Это сложное и громоздкое решение В принципе, те же проблемы у ASP.NET MVC
  • 29. ASP.NET Web Forms: Страшные Очень громоздкая обработка запроса Выдают избыточный, страшноватый маркап Понятные Разработка веб-форм в VS очень проста и интуитивно понятна Хочется минимизировать страх, оставив только пользу
  • 30. Решение Совмещаем оба подхода. От веб-формы берем только поля ввода. Весь дизайн прикладываем при помощи XSLT.
  • 31. Решение подробнее Веб-форма производит xHTML. xHTML=XML. Контроллер вставляет форму в модель. View копирует код формы наружу, в нужное место страницы. Browser. Post back. Контроллер передает пост-бэки в ASPX-файл. goto 1.
  • 32. Решение в картинках Controller ASPX form Browser Request Request Данные (xml) Форма (xHTML) Model View
  • 33. Технические сложности HttpServerUtility.Executeне дает доступа к полям формы. Берем код Execute рефлектором. Некоторые нужные части HttpContextи HttpResponseзакрыты. Используем reflection: HttpContext.SetCurrentHandler HttpContext.RestoreCurrentHandler HttpContext.SwitchWriter
  • 34. Итоги XSLT – мощный язык шаблонов XML удобен в качестве модели в MVC ObjectXPathNavigator позволяет типизированные модели Примиряет с веб-формами
  • 35. Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. General Hooker
  • 36. Спасибо за внимание! Андрей Майоров, BYTE-force xor@byte-force.com twitter.com/xorets blogs.byte-force.com/xor