Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
Приветствую всех. В данный момент есть Web-проект (Web-клиент к базе) в котором очень часто выводятся различные табличные данные из базы данных. Web-сервер IIS 7.5, сайт на ASP.NET+jQuery База данных на MS SQL Server 2008 R2. В данный момент данные из базы выводятся в Xml и в самом SQL сервере же транслируются в html-таблицу путем XSLT-шаблона. При этом применяются различные свойства (классы) для тэгов td, tr в зависимости от значений данных в базе, т.е. активно используются инструкции if, case в XSLT-шаблонах. Также генерация различных handler'ов на события click в ячейки или в тэги th. В данный момент ищу способ перенести преобразование xml-данных в таблицу на стороне клиента. Возможно, средствами jQuery, но при этом было бы хорошо использовать xslt-шаблоны, без глюков на современных браузерах, буду использоватся если не самые последние браузеры, то хотя бы релизы последних 2х лет. Цель, уменьшить нагрузку на сервере переключив трансофрмацию на клиентской стороне, и уменьшить трафик, так как передача xml-данных с небольшими атрибутами для кастомизации отображения в любом случае меньше html-данных. Понимаю что выигрыш в килобайтах не большой может быть, но на счету дорог каждый байт. Так как большая часть клиентов используют дорогой тариф мобильного интернета, и отдаленность клиентов тоже влияет на скорость передачи данных. Может быть кто-то уже переходил с решения xml+xslt на более эффективный способ трансформации xml-данных в html? Читал про yate yandex'а, но он привязан к json и в данный момент мало документирован. Из-за этого хотел услышать мнения про эффективные (по скорости и по возможностям кастомизации) преобразования xml-данных в html-таблицу. Спасибо за внимание и жду советов от "бывалых" ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 22:24 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
Если отдавать голый xml с инструкцией xml-stylesheet, то могут всплывать разные сюрпризы в разных браузерах. Например, хром как раз двухгодичной давности внезапно потерял способность делать трансформацию, что вызвало волну кирпичей по всему миру, и эта способность к нему вернулась лишь несколько версий спустя. Все проблемы решаемы, но есть один баг в ie9 — вместо русского текста он может нарисовать белиберду (см. рис.). Поэтому основную страницу лучше отдавать в html, а через ajax можно и xml, трансформируя его скриптом. Но в этом случае возникает вопрос, где взять xsl? Если с сервера, то это будет лишний запрос, что никак не повысит быстродействие ни сервера ни интерфейса. Можно xsl вставить в сам xml, но это приведет к появлению моря мелких xsl, в котором несложно утонуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 10:14 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
Т.е. предлагаете оставить все как есть? А передача xml с трансформацией через xslt на стороне клиента, это "море браузеров с кучей подводных камней"? И в конечном счете больше проигрыша чем выигрыша? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 12:46 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
Т.е. предлагаете оставить все как есть?да. И в конечном счете больше проигрыша чем выигрыша?На крупных трансформациях больше выигрыша в плане ресурсов сервера, на мелких — проигрыша. И в любом случае это проигрыш на клиентах в принципе не способных на трансформацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 20:55 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
За такую «архитектуру» нужно увольнять из компании и бить розгами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 17:03 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУ, За XML+XSLT на стороне клиента? или на стороне сервера? Или вообще за XML+XSLT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 09:29 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekМСУ, За XML+XSLT на стороне клиента? или на стороне сервера? Или вообще за XML+XSLT? Я про xml + xslt = html. Наследие прошлого, когда хотели полностью отделить логику от представления. Сейчас есть asp.net mvc, его и используем. А грабли типа xslt - большой жирный гроздь в производительность, в поддержку, в рефакторинг и в сопровождение. Скорость разработки шаблона в разы выше, чем разработка на родных движках webforms / mvc. Нужна правильная архитектура и быстрое качественное решение? Юзай полноценные фреймворки, а это гумно на лопате - удел кривомыслящих архитекторов с идиотской идеей универсализировать мир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 13:10 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУorunbekМСУ, За XML+XSLT на стороне клиента? или на стороне сервера? Или вообще за XML+XSLT? Я про xml + xslt = html. Наследие прошлого, когда хотели полностью отделить логику от представления. Сейчас есть asp.net mvc, его и используем. А грабли типа xslt - большой жирный гроздь в производительность, в поддержку, в рефакторинг и в сопровождение. Скорость разработки шаблона в разы выше, чем разработка на родных движках webforms / mvc. Нужна правильная архитектура и быстрое качественное решение? Юзай полноценные фреймворки, а это гумно на лопате - удел кривомыслящих архитекторов с идиотской идеей универсализировать мир. В моем проекте xml+xlst предназначено не для построения всего сайта или шаблона для всего сайта, а для вывода готового html из базы данных. К примеру не надо циклично строить таблицу перебирая каждую строку из результатирующего рекордсета, а сразу внутри хранимой процедуры в SQL Server'е, получаю данные в виде XML, которые посредством трансофрмации шаблоном xlst преобразую в html-данные. Вопрос именно в этом, т.е. в более быстром (чтобы меньше ресурсов сервера уходило, т.е. web-сервис возвращает сразу xml-данные) и экономичном (сами xml-данные "меньше" будут весить чем html-таблица к примеру) способе передачи полученных данных от сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 18:59 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУ, дополню еще, у меня еще не было опыта в использовании MVC-фреймворков, в основном небольшие проекты обращающиеся к БД и возвращающие различные данные. Есть ли способы в ASP.NET MVC 3ей версии или в 4ой версии, более быстрые варианты преобразования xml-данных в html-таблицу к примеру, ежели связка xml+xslt? Например, следующий xml Код: xml 1. 2. 3. 4. 5. 6. 7. в таблицу вида: Код: html 1. 2. 3. 4. 5. 6. 7. 8. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 19:08 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
извиняюсь, забыл добавить еще количество строк может превышать 500-1000 записей, т.е. действительно быстрый способ формирования данных должен быть при этом возможны дополнительные наложения html-кодов onlclick и т.д. на опредленные тэги таблицы, в зависимости от исходных данных. Даже если xslt это пережиток, в данный момент он с этой задачей справляется, просто хотел перекинуть преобразование в таблицы на клиенсткие браузеры уже и снизить трафик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 19:11 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekвнутри хранимой процедуры в SQL Server'е, получаю данные в виде XML, которые посредством трансофрмации шаблоном xlst преобразую в html-данные. Всё запрещено, причем сильно. Архитектора такого решения на свалку. Не нужно в слой бд закладывать вопросы представления (хтмл) или модели (xml). База данных предназначена для хранения данных и только для этого. Обращение к базе и выдача результата должна быть как можно быстрой. Никаких преобразований в xml средствами базы, только данные, правильно поставленные индексы и всё. После того, как данные попадают на сервер приложений, их в сыром виде конвертируют в модель (представления), которую скармливают самому представлению (через контроллер, если это мвц). Никаких преобразований xml, xslt. Так работают всё нормальные движки, которые рендерят html (webforms, mvc - razor, aspx, ...). Ты же используешь свой наколенный движок рендеринга на основе xslt, да еще и в слой бд прибил xml. Жуть, разумеется весь этот навоз будет нереально тормозить. Особенно на большом кол-ве данных и при большой нагрузке (в т.ч. при пиках) на сайт. Два варианта - переписать этот бред на нормальном движке либо оставить всё как есть и насладиться тормозами. Я бы начал переписывать отдельные части проекта, при наличии ресурсов, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 19:57 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekДаже если xslt это пережиток, в данный момент он с этой задачей справляется, просто хотел перекинуть преобразование в таблицы на клиенсткие браузеры уже и снизить трафик Для задач генерации html это действительно пережиток прошлого. Ладно бы еще отдельные веб-контролы, небольшие веб-части по такому принципу рендерить, но чтобы весь сайт так строить, это батенька пестец чистой воды. Про клиентский рендерринг коллеги ж уже высказались, что не понятно? Забудь. xslt хорош для небольших вычислительных мощностей, где небольшая нагрузка с вызывающей стороны. Как только появляется более или менее серьезная нагрузка - всё, приплыли. Нужна внешняя динамика - не вопрос, плагиностроение. Создаем сборки, подключаем, пользуемся. Например, классическая задача «подключаемые тарифы». CodeDom в руки и вперед. Что-то я отвлекся и меня понесло :) Просто я негодую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:06 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУВсё запрещено, причем сильно. Всё запущено... Сорри, т9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:10 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУorunbekвнутри хранимой процедуры в SQL Server'е, получаю данные в виде XML, которые посредством трансофрмации шаблоном xlst преобразую в html-данные. Всё запрещено, причем сильно. Архитектора такого решения на свалку. Не нужно в слой бд закладывать вопросы представления (хтмл) или модели (xml). База данных предназначена для хранения данных и только для этого. Обращение к базе и выдача результата должна быть как можно быстрой. Никаких преобразований в xml средствами базы, только данные, правильно поставленные индексы и всё. После того, как данные попадают на сервер приложений, их в сыром виде конвертируют в модель (представления), которую скармливают самому представлению (через контроллер, если это мвц). Никаких преобразований xml, xslt. Так работают всё нормальные движки, которые рендерят html (webforms, mvc - razor, aspx, ...). Ты же используешь свой наколенный движок рендеринга на основе xslt, да еще и в слой бд прибил xml. Жуть, разумеется весь этот навоз будет нереально тормозить. Особенно на большом кол-ве данных и при большой нагрузке (в т.ч. при пиках) на сайт. Два варианта - переписать этот бред на нормальном движке либо оставить всё как есть и насладиться тормозами. Я бы начал переписывать отдельные части проекта, при наличии ресурсов, конечно. Понимаю недовольство, особенно в свете решений MVC. Данный проект перекочевал из ASP Classic в ASP.NET, и там и там скорость преобразования данных (recordset'а) в html, скажем так цикличным построением tr, td жутко тормозил, а после переноса решения в xml+xslt все летает, и при оочень больших объемах данных и при больших нагрузках тоже. Я на этот вариант перешел именно из-за торможения, при цикличном преобразовании данных из базы в html-таблицу на стороне ASP.NET приложения. Архитектурно, конечно может быть и неправильно, но все работает. Сопровождать в принципе не сложно, xslt-шаблоны записаны в таблице шаблонов, и при вызове определенной хранимки, данные выдаются в xml (посредством инструкции t-sql FOR XML), и там же преобразуются в html-таблицу путем вызова .NET CLR хранимки трансформации xml через xslt. Все работает, добавляется новый отчет? Добавляю новый шаблон в таблицу и добавляю формирование отчета в хранимку и указываю какой шаблон использовать и все. Если есть быстрый и опробованный способ преобразования данных из базы, скажем datareader'а в html таблицу, скиньте линк пожалуйста, для ликбеза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:13 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
Вот представляю себе извращенца, который в xslt готовит html-шаблон... Мрак. Ни интеллисенса, ни человечески читаемого html, ни плюшек в виде серверных контролов, ни мвц-хелперов, ни отлова ошибок. Не так тег закрыл, всё, шаблон накрылся медным тазом и вся страница завалится. А еще ко всему этому добавить тормозов, всё. Харакири - верный друг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:16 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekЕсли есть быстрый и опробованный способ преобразования данных из базы, скажем datareader'а в html таблицу, скиньте линк пожалуйста, для ликбеза Вот, пошли правильные вопросы. Конечно есть! Если вебформ, то эта чудо-технология называется байдинг. Есть серверный контрол GridView, у него есть свойств DataSource. Заглянешь туда сырые данные из бд и асп.нет рендерит тебе на клиенте родной table. Всё, очень быстро и правильно. Я так и думал, что ты с классики перелез. Это всё с асп пришло... Совет - возьми нормальную книжку и изучи богатые возможности платформы. Про xslt забудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:21 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУ, У меня web-forms в связке с jQuery работает, вызывается метод wcf-сервиса, который получает из БД готовый html, который и вставляется в внутренность определенного div'а Подскажите плз метод трансформации данных sql в WCF-сервисе в таблицу со сложными правилами, т.е. подитожывание, проверка значений и добавление onclick и других event'ов в код таблицы и при этом без потери скорости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:27 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
для меня желательно не использовать server'ные контролы наподобие GridView, так как они достаточно тяжеловесны очень много ajax'а и поэтому со стороны web-сервиса должны возвращаться готовые данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:30 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
О, да тут и вцф сервис есть Еще раз говорю - это задача сайта, а не бд или сервиса. Сервис должен возвращать DTO объект (или коллекцию их), а задача веб-формс всё это отрендерить через родной движок. А у тебя сборная солянка какая-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:32 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekЯ на этот вариант перешел именно из-за торможения, при цикличном преобразовании данных из базы в html-таблицу на стороне ASP.NET приложения. Странно все это. Вы что, всю базу в html выгружаете? А на странички там разбить? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:33 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbekдля меня желательно не использовать server'ные контролы наподобие GridView, так как они достаточно тяжеловесны очень много ajax'а и поэтому со стороны web-сервиса должны возвращаться готовые данные Они не тяжеловесны в прямых руках. И уж тем более не тяжеловесней, чем твоя сборная солянка :) Юзай родной рендерринг вебформс и будет щастье. В некоторых случаях вообще хватит клиентских контролов. Но упаси боже никаких xml и xslt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:36 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
orunbek, Возвращайте не ХML, а JSON. Можно в вэб-приложении (на сишарпе, например) трансформировать XML2JSON, а в браузере - дело техники. Можно ExtJs заюзать, например, или ручками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:36 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУО, да тут и вцф сервис есть Еще раз говорю - это задача сайта, а не бд или сервиса. Сервис должен возвращать DTO объект (или коллекцию их), а задача веб-формс всё это отрендерить через родной движок. А у тебя сборная солянка какая-то. Я это полностью понимаю в плане правильной архитектуры, но такой вариант я использовал только для эффективной и быстрой выборки данных. Конечно можно сделать так, чтобы хранимка в сервере БД возвращала просто xml-набор данных, а преобразованием в html-таблицу будет заниматься Web-сервер. Но даже в этом случае, знаю только один способ быстрого преобразования в html-таблицу из xml. Цикличная обработка сразу отпадает. А все перенес в SQL из-за того, что t-sql может очень быстро возвращать набор записей в xml-виде и остается только преобразовать посредством xslt-трансформации и для того, чтобы не хранить xlst-шаблоны локально на сервере, а прям из базы вытаскивать и трансформировать ПарамонorunbekЯ на этот вариант перешел именно из-за торможения, при цикличном преобразовании данных из базы в html-таблицу на стороне ASP.NET приложения. Странно все это. Вы что, всю базу в html выгружаете? А на странички там разбить? ) Нет конечно, просто специфика задачи есть, которая не позволяет использовать постраничное деление данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:42 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУНи интеллисенсаДля xsl интеллисенс есть, для html он нафиг не нужен. МСУ ни человечески читаемого htmlЧеловечески читаемого html нет как раз в мвц. Но это наверное дело вкуса. МСУНе так тег закрылСтудия тут же выкатит ошибку. Чтобы страница завалилась, нужно вообще нихрена не обращать внимания на сообщения студии. МСУасп.нет рендерит тебе на клиенте родной tableКаком еще клиенте? Клиент получает готовый html. И рендерит его лишь в графическом смысле слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:43 |
|
||
|
Альтернатива XML+XSLT=HTML
|
|||
|---|---|---|---|
|
#18+
МСУorunbekдля меня желательно не использовать server'ные контролы наподобие GridView, так как они достаточно тяжеловесны очень много ajax'а и поэтому со стороны web-сервиса должны возвращаться готовые данные Они не тяжеловесны в прямых руках. И уж тем более не тяжеловесней, чем твоя сборная солянка :) Юзай родной рендерринг вебформс и будет щастье. В некоторых случаях вообще хватит клиентских контролов. Но упаси боже никаких xml и xslt. Может быть, но для меня проще использовать "чистый" html с возможностями jquery ShSergeorunbek, Возвращайте не ХML, а JSON. Можно в вэб-приложении (на сишарпе, например) трансформировать XML2JSON, а в браузере - дело техники. Можно ExtJs заюзать, например, или ручками. В простых наборах данных так и делаю, т.е. WCF-сервис обращается к базе, вызывает хранимку, получает результат и возвращает их в JSON-наборах данных. Основная проблема в преобразовании табличных данных из базы в html-таблицу Может быть действительно xml+xslt это старье, но возможности xslt-шаблонов (условное конструкции, циклы, проверка последних строк, группировка) меня устраивают и позволяют создавать простые шаблоны для формирования сложных табличных данных. В принципе Yandex.Mail тоже сравнительно недавно перешел на другие способы формирования данных, но и то в их случае это шаблонизатор. В моем же случае простой, быстрый и гибкий способ формирования html-таблицы из базы, с условиями формирования и проверки исходных данных в xslt-шаблоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 20:50 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=37968977&tid=1359100]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
57ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 332ms |

| 0 / 0 |
