Вопрос
Может ли кто-нибудь (может быть, поклонник XSL?) помочь мне найти какие-либо преимущества в обработке представления данных на веб-странице с помощью XSL по сравнению с ASP.NET MVC?
Существуют две альтернативы:
ASP.NET (MVC/ WebForms) с помощью XSL
Получение данных из базы данных и преобразование их в XML, который затем отображается на разных страницах с помощью XSL-шаблонов.ASP.NET MVC
Получение данных из базы данных в виде объектов C # (или LinqToSql / EF-objects) и отображение их с помощью встроенного кода на MVC-страницах.
Основным преимуществом XSL было согласованное отображение данных на множестве различных страниц, таких как WebControls.Итак, поправьте меня, если я ошибаюсь, ASP.NET MVC можно использовать таким же образом, но со строго типизированными объектами.Пожалуйста, помогите мне понять, есть ли какие-либо преимущества в XSL.
Решение
Я вижу, что основным преимуществом использования XSLT для преобразования ваших данных и отображения их пользователю было бы следующее:
- Данные уже представлены в формате XML
- Данные обрабатываются по четко определенной схеме (это значительно упрощает использование таких инструментов, как XMLSpy).
- Данные должны быть преобразованы в несколько различных выходных форматов, напримерPDF, WMP и HTML
Если это должен быть единственный вывод для ваших данных, и он не в формате XML, то XSLT может оказаться не лучшим решением.
Аналогично, если требуется взаимодействие с пользователем (например, редактирование данных), то в конечном итоге вы все равно будете использовать внутренний код для обработки обновлений, что может оказаться слишком сложной технологией...
Другие советы
Я всегда обнаруживал две основные проблемы при работе с преобразованиями XML:
Во-первых, они имеют тенденцию быть довольно медленными, весь XML-файл должен быть проанализирован и проверен, прежде чем вы сможете что-либо с ним сделать. Будучи XML, он также слишком многословен и, следовательно, больше, чем нужно.
Во-вторых, то, как работают преобразования, немного болезненно для кода - пользовательские инструменты, такие как справка XmlSpy, но это все же модель, отличная от той, к которой привыкло большинство разработчиков.
В настоящий момент MVC очень быстр и выглядит многообещающе, но страдает от традиционного упадка веб-разработки <%
и %>
пчел во всем вашем коде. Использование преобразований XML позволяет избежать этого, но гораздо сложнее читать и поддерживать.
Я использовал эту технику в прошлом, и есть приложения, где мы используем ее на моем нынешнем месте работы. (Я признаю, я не совсем фанат этого, но я буду играть адвоката дьявола) На самом деле это одна из главных новинок, и продвижение этой идеи может быть довольно аккуратным. Вы можете динамически создавать xsl на лету и изменять внешний вид страницы по своей прихоти. Возможно ли это сделать с помощью других методов ... да, но действительно легко создать программу для изменения документа xml / xsl на лету.
Если вы думаете об использовании XSL для преобразования одного XML-документа в другой и отображения его в виде HTML (что на самом деле и делает), вы открываете свою систему, чтобы другие программы могли получить доступ к данным на странице. через XML. Вы можете сделать это с помощью других методов, но использование преобразования xsl заставляет его каждый раз выводить xml.
Я бы легкомысленно пошёл на создание системы таким способом. Вы найдете много ошибок, которые вы не ожидаете, и если вы не очень хорошо знаете xsl, то также будет кривая обучения.
Проверьте это, если вы хотите использовать XSLT и ASP.MVC
http://www.bleevo.com/2009/ 06 / ASPnet-MVC-XSLT-iviewengine / р>
Джафар Хусейн предлагает несколько преимуществ в своем предложении для Pretty XSL , в первую очередь кэширование таблицы стилей для увеличения загрузки страницы и уменьшения размера ваших данных. Стив Сандерсон предложил немного другой подход с использованием JavaScript в качестве контроллера здесь .
Другой, похожий подход - использовать XForms , хотя Лучшая поддержка для этого - библиотека JavaScript .
Если вы собираетесь отображать данные только из шаблонов DB XSL, это может быть удобным решением, но если вы собираетесь обрабатывать взаимодействие с пользователем. Хм ... я не думаю, что это вообще можно будет обслуживать.