XML перетворення – масштабованих ви настільки, наскільки могли б бути? (Исходники), Інтеграція додатків і даних, Бази даних, статті

 

Масштабованих ви настільки, наскільки могли б бути? Якщо ви ставите в базу даних велику частину своєї інформації, то не розраховуйте на це.
Секрет в тому, що якщо ви хочете масштабованості – застосуйте XML, XSL і XSLT-процесори. Що таке XSLT-процесор? Це можливість, яка робить перетворення XML і XSL дріб’язкової завданням. І що це означає? Платформа. NET пропонує клас, XSLTransform, який полегшує ваше життя. Дуже мило, так? Що найдивовижніше в XSL Перетворення – це те, що ви можете підготувати весь контент (дані, заслання, і т.д.) в XML, і потім перетворити його в що завгодно (текст, html, xml, aspx) за допомогою XSL.
Що дійсно змушує XSL працювати добре, так це те, що ви можете забути про несумісність браузерів і старих браузерах, які не володіють легкістю перетворення XML. XSL Transform разом з CSS будуть так добре форматувати ваш веб-сайт, що навіть ваша мама не зможе знайти відмінностей між перетвореної веб-сторінкою та тієї, що зроблена з великим трудом на HTML. Справді, справжня цінність укладена в швидкості і масштабованості вашої системи – ось чому, якщо ви можете зробити це, вам слід перемістити весь «статичний» контент з бази даних в XML-документи. Коли я кажу «статичний», я маю на увазі дані у вашій базі даних, які не зміняться або дуже не бажано, щоб вони змінювалися.
Ці «статичні» дані можуть бути поміщені у вигляді XML – знижуючи, тим самим, витрати на дорогі запити до бази даних, які можуть бути використовувані для чогось більш корисного, наприклад динамічний пошук в авторському стовпчику. Переміщуючи всю тяжкість з SQL і мережевого трафіку на просте I / O, ви купуєте собі справжню масштабність.
Але, добре. Я помістив всі свої дані в XML і тепер вони виглядають, як якийсь дурниця. Я не можу знайти в них якогось сенсу і хлопці з відділу маркетингу готові зробити криваве вбивство …. Розслабтеся. Ось коли настає час XSL. XSL розшифровується як розширювана мова таблиць стилів (eXtensible stylesheet language) – ви можете ставитися до нього, як до скрипту, який перетворює XML в чудово виглядаючу сторінку. XSL може взяти будь-який XML-документ і зробити з нього все, що вам завгодно – інший XML-документ, текстовий файл або aspx-сторінку. Суть в тому, що XML – це ваш контент, XSL – ваш представницький рівень – а XSLTransform – це клей, який пов’язує їх разом.


Ось код, який я використовував на своєму сайті tiberi.us

Public Function TransformXML(strXMLURL As String, strXSLURL As String) As String

Dim oSW As New System.IO.StringWriter()
Try
Dim oXR As New System.Xml.XmlTextReader(strXMLURL)
Dim oXSLT As New System.Xml.Xsl.XslTransform()

oXSLT.Load(strXSLURL)

Dim oXPath As New System.Xml.XPath.XPathDocument(oXR)
oXSLT.Transform(oXPath, Nothing, oSW)

Catch e As System.Exception

“Put in custom error handler here…
Dim x As String = e.ToString()

End Try

Return oSW.ToString()

End Function “TransformXML


Досить одного погляду на код, щоб побачити міць XSL-процесора.

Public Function TransformXML(strXMLURL As String, strXSLURL As String) As String
“Створення IOStream
Dim oSW As New System.IO.StringWriter()

Try
Dim oXR As New System.Xml.XmlTextReader(strXMLURL)

Два параметри, які ми передаємо в цей метод – це URL XML-файла і URL XSL-файла. Так як у нас є обидва ці параметра, ми можемо перетворити обидва наших файлу в щось корисне. Зверніть увагу, що ми створили об’єкт StringWriter, використовували XMLTextReader і передали йому URL нашого XML-файла.
Отже, ось серце нашого методу …

Dim oXSLT As New System.Xml.Xsl.XslTransform()

oXSLT.Load(strXSLURL)

Об’єкт XSLTransform, який ми продемонстрували, виконує тут всю важку роботу. Після того, як ми дали йому знати, де знаходиться наш XSL-файл і передали його XPathDocument, ми можемо виконувати перетворення.

Dim oXPath As New System.Xml.XPath.XPathDocument(oXR)
oXSLT.Transform(oXPath, Nothing, oSW)

Catch e As System.Exception
“Додайте додаткову обробку помилок тут
Dim x As String = e.ToString()
End Try
Return oSW.ToString()

Зверніть увагу, що метод oXSLT.Transform приймає три аргументи, «вхідне», список аргументів для XSLT і «виходить». Ми передаємо XPathDocument, як «вхідного», NULL, як аргументи, і відправляємо перетворений XML в StringWriter. Не дивлячись на те, що ви можете використовувати перевантажений метод Transform, який безпосередньо надає URL XML-і XSL-файлів, я вирішив вести вас довгим шляхом виконання Transform, щоб ви дізналися, що допускає цей об’єкт.
Хоча ми передаємо NULL як XSLT-аргументів, ми отримуємо перевагу чогось дуже потужного – можливість обробляти порції нашого XML, засновані на параметрах, які пропонуються в наших XSLT аргументах. Ми можемо записати наш XSL таким способом, щоб він передавав параметри, які ми встановили, так само, як цього разу.

 “Створення XsltArgumentList.
Dim xslArg As New System.Xml.Xsl.XsltArgumentList()

Dim oTime As TimeSpan = DateTime.Now.TimeOfDay
xslArg.AddParam(“cur_time”, “”, oTime.ToString())


І в нашій XSL таблиці, ми будемо посилатися на наш параметр, який ми передали в неї, так само, як ми покладаємося на скрипт, поміщений в XSL.

<xsl:stylesheet version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
<xsl:param name=”cur_time”/>
<xsl:template match=”/”>
Current Time: <xsl:value-of select=”$cur_time”/>
</xsl:template>
</xsl:stylesheet>

Щоб отримати XsltArgumentList в наступному кроці, ми можемо обробити умовний вираз, засноване на параметрах, які ви в нього передали через XsltArgumentList.
Тепер, коли у нас є знання про те, як працює XSLTransform, давайте поговоримо ще трохи про масштабованості і про те, як ми можемо ще додати можливостей. Ось три стратегії, які використовує більшість, коли застосовує міць XSLTransformation.


Стратегії XML і XSLT


  1. Перетворення за запитом
  2. Фабрика перетворень
  3. Фабрика кешованих перетворень

Перетворення за запитом

Під час використання стратегії Перетворення по Запиту, HTML-або ASPX-сторінки створюються динамічно, застосовуючи таблиці стилів XSL до XML-документу і використовуючи перетворення об’єкта для створення вихідного документа. Коли користувач звертається із запитом до вашого веб-сайту об’єкт XSL перетворення використовується для форматування ресурсу згідно з розміткою XSL-документа. Ви можете користуватися цією стратегією, якщо створюєте XML-документ використовуючи метод System.Data.SqlClient.WriteXML (), заснований на динамічному запиті вашого кінцевого користувача, якщо ваші XML-або XSL-документи створюються на льоту, або якщо вам потрібно передати кінцевому користувачеві абсолютно динамічну інформацію.


Фабрика перетворень

У Фабриці перетворення HTML-і ASPX-сторінки створюються з XML і XSLT і зберігаються, як «статичні» сторінки. Використовуючи Фабрику перетворень, ви можете створювати сотні статичних сторінок з динамічних джерел і зберігати результати створення цих сторінок за запитом. Ви можете налаштувати Фабрику перетворень на обробку тисяч XML-файлів, застосовуючи XSL і зберігаючи результати в HTML, ASPX або будь-якому іншому форматі за вашим бажанням. Кінцеві користувачі будуть підключатися до цих «статичним» сторінкам без передачі «запиту» на XSL Перетворення. Ви можете захотіти застосувати цю стратегію, якщо ви не хочете створити враження, що ваш веб-сайт або інформація, змінюється. Немає необхідності застосовувати XSL до XML всякий раз, коли кінцевий користувач звертається із запитом до ресурсу на вашому сайті.


Кешовані Перетворення

Кешовані перетворення – це просте перетворення, яке відбувається за встановленим графіком, скажімо, раз на 24 години. Результат XSL Перетворення кешується на день, або до тих пір, поки він потрібний, і надається кінцевому користувачеві. На самих «динамічних» сайтах ця стратегія може мати місце поки вам не потрібно видати динамічну інформацію, яка повинна бути миттєвою – як інформація, необхідна додатком на фондовій біржі. Більшість завдань потребує кешуванні інформації один або два рази на день. Просто Кешуйте кожну сторінку по закінченню 24 годин після кешування. Так само ви можете створити залежність від будь-якого файлу (у даному випадку від XML-файла), щоб у разі зміни файлу, ваш кеш оновлював інформацію про оновлений файлі.

У висновку, XSL-перетворення є дуже майстерною і потрібною технологією. Цей потужний інструмент дозволяє вам створити перевагу входить над вихідним – даючи необхідний відпочинок вашому корпоративному гаманцю.

[Оригінал статті] Переклад з англійської: Віталій Готовцев
Переклад з C #: Гайдар Магдануров


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*