Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 26.12.13 14:03
Оценка:
Добрый Всем День!

Вот уже какой день мучаюсь с вопросом: "Где лучше создавать репорты: на серваке или на клиенте?"

Имеем: Корпоративная сеть с удаленными отделами, работающими через web-браузер
Сервер IIS, MSSQL, VBnet

На документах есть рабочие бар-коды. Количество страниц в документе может исчисляться сотнями, в некоторых — более тысячи.

Варианты решения:

1) готовить документы в pdf на серваке, передавать чз http (уверенность в том, что доки будут везде(!) работать)
2) готовить док на клиенте html из json с сервера (смущает обилие страниц, не возможность сделать просто по шаблону, интересует браузерная зависимость.)
3) готовить док на клиенте pdf из json с сервера (знаю только java pludig "джедай-путь" в этом случае, не работал так никогда, не знаю, может и хорошо)

Если готовить на серваке, по получ прим по 10-20мб.
Объем json не мерил.

Сам склоняюсь к pdf на серваке


Что скажете, Бояре ?

Заранее Спасибо, Илья
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
pdf report
Re: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 26.12.13 16:10
Оценка:
P>Сам склоняюсь к pdf на серваке

при таких объёмах я бы броузер-сайд вообще не рассматривал
Re[2]: Где создавать репорты? на сервере или на клиенте?
От: Аноним  
Дата: 27.12.13 05:27
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>при таких объёмах я бы броузер-сайд вообще не рассматривал


Что имеется ввиду ? Вообще как браузер-решение , или то, что точно на серваке нужно все это делать ?
Re[3]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 05:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, avpavlov, Вы писали:


A>>при таких объёмах я бы броузер-сайд вообще не рассматривал


А>, что точно на серваке нужно все это делать ?


да
Re[4]: Где создавать репорты? на сервере или на клиенте?
От: Аноним  
Дата: 27.12.13 07:07
Оценка:
A>да


Почему, объясните плз. Есть какие-то аргументы кроме размера?

В моем понимании для объективного сравнения нужно сделать а-ля два приложения (как минимум) и на одном просто скачать (хотя бы) подготовленный pdf файл, в другом притащить все данные по jsonу и сделать на них хоть какой-нибудь но корявенький html. Затем сравнить что получается во времени. Но ведь это ж надо делать...

Кроме того, есть мнение, что генерация pdf на серваке дело затратное.. Затратное ли оно будет на клиенте ?


Также есть вопрос по архитектуре: отдельный репорт сервис должен быть или хватит встроенного в приложение?
Нужно ли прикручивать в таком случае reporting serive? Если "хорошо бы", то как ? Он (репорт-сервис) должен быть (пока в моем представлении) реализован как отдельная web-служба?
Т.е. грубо говоря, папка основного веб приложения и папка репорт-службы отличается. Кроме того, разные веб-приложения могут ссылаться на репорт-сервис, и он, в зависимости от прав пользователя, взятого из сессии осн приложения, может поставлять тот или иной отчет.

пс: с reporting serive никогда не работал

Спасибо
Re[5]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 07:23
Оценка:
А>В моем понимании для объективного сравнения нужно сделать а-ля два приложения (как минимум) и на одном просто скачать (хотя бы) подготовленный pdf файл, в другом притащить все данные по jsonу и сделать на них хоть какой-нибудь но корявенький html. Затем сравнить что получается во времени. Но ведь это ж надо делать...

Броузер колом встанет на таких объёмах, юзеры начнут теребить рефреш, что ни прибавит производительности ни на клиенте ни на сервере.

Я в 2010 (или 2011, не помню) делал статический хтмл с таблицей на 500т ячеек (по ~40 в строке) — ни один броузер на тот момент этот хтмл открыть не смог. Прошло, конечно, не мало лет, но я не думаю, что броузеры кардинально улучшили для работы с такими объёмами.

А>Кроме того, есть мнение, что генерация pdf на серваке дело затратное.. Затратное ли оно будет на клиенте ?


Затраты и там и там одинаковые, но на сервере у тебя будет больше пространства для маневра, например, генерировать по частям, если сразу целиком будет слишком затратно

А>Также есть вопрос по архитектуре: отдельный репорт сервис должен быть или хватит встроенного в приложение?


Если он отчёты будет потоково делать (== не строить всю можель в памяти), то можно и встроить. А если целиком — лучше отдельно, чтобы рестартовать не жалко было.
Re[6]: Где создавать репорты? на сервере или на клиенте?
От: Аноним  
Дата: 27.12.13 08:03
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>Если он отчёты будет потоково делать (== не строить всю можель в памяти), то можно и встроить. А если целиком — лучше отдельно, чтобы рестартовать не жалко было.


потоково — это имеется ввиду отдавать сразу в http-поток? Как это делается ? Есть примеры?


Вот еще вопрос: Sql Server Reporting Server может упростить мне жизнь в этом вопросе?
Re[7]: Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 27.12.13 08:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, avpavlov, Вы писали:


A>>Если он отчёты будет потоково делать (== не строить всю можель в памяти), то можно и встроить. А если целиком — лучше отдельно, чтобы рестартовать не жалко было.


А>потоково — это имеется ввиду отдавать сразу в http-поток? Как это делается ? Есть примеры?



А>Вот еще вопрос: Sql Server Reporting Server может упростить мне жизнь в этом вопросе?
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Re[7]: Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 27.12.13 08:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>потоково — это имеется ввиду отдавать сразу в http-поток? Как это делается ? Есть примеры?


Это типа рендерить сразу в ResponseStream чтоли ?
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Re[8]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 08:10
Оценка: +1
Здравствуйте, Peshuha, Вы писали:

P>Здравствуйте, Аноним, Вы писали:


А>>потоково — это имеется ввиду отдавать сразу в http-поток? Как это делается ? Есть примеры?


P>Это типа рендерить сразу в ResponseStream чтоли ?


Сразу в респонс стрим — хрупко. Я бы сначала в файл стрим (чтобы память поберечь), а как будет готово — отдать клиенту.

Причем "Потоково" — это не только рендеринг в потом, но и исходные данные не все сразу в память грузятся, а по мере необходимости, и лишние сразу выкидвыаются.
Re[7]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 08:11
Оценка:
А>Вот еще вопрос: Sql Server Reporting Server может упростить мне жизнь в этом вопросе?

Опыта не имею с ним, но, полагаю, что упростить должен.
Re[9]: Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 27.12.13 08:16
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>Сразу в респонс стрим — хрупко. Я бы сначала в файл стрим (чтобы память поберечь), а как будет готово — отдать клиенту.

вот и мне кажется "хрупко". Но стрим — тоже весит..., потому и спросил

Как вариант думал еще давать задание на генерацию в отдельном, не привязанном к request потоке(thread, no stream!), а затем по готовности дать на скачку. Но это ибо гиммор, как мне кажется.
Лучше бы с отдельной службой вопрос решить. Вот только что с аутификацией что делать?..
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Re[8]: Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 27.12.13 08:21
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>Опыта не имею с ним, но, полагаю, что упростить должен.

Я так понял, Вы обошлись без служб. Так ?
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Re[10]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 09:13
Оценка:
Здравствуйте, Peshuha, Вы писали:

P>Здравствуйте, avpavlov, Вы писали:


A>>Сразу в респонс стрим — хрупко. Я бы сначала в файл стрим (чтобы память поберечь), а как будет готово — отдать клиенту.

P>вот и мне кажется "хрупко". Но стрим — тоже весит..., потому и спросил

Файл стрим, считай, ничего не весит, по сравнению с генерацией в памяти.

P>Как вариант думал еще давать задание на генерацию в отдельном, не привязанном к request потоке(thread, no stream!), а затем по готовности дать на скачку. Но это ибо гиммор, как мне кажется.


Одно другому не мешает, и отдельный thread — хорошая идея, если отчет генерируется 30+ сек
Re[9]: Где создавать репорты? на сервере или на клиенте?
От: avpavlov  
Дата: 27.12.13 09:17
Оценка: 3 (1)
Здравствуйте, Peshuha, Вы писали:

P>Здравствуйте, avpavlov, Вы писали:


A>>Опыта не имею с ним, но, полагаю, что упростить должен.

P>Я так понял, Вы обошлись без служб. Так ?

Я только JFreeReport и JasperReports использовал, (и CrystalReports — но очень давно).

Эти 2 — просто библиотеки, если предполагаются большие отчеты в памяти строить, то лучше вынести в отдельное приложение (назови как хочешь), чтобы возможные падения не мешали основному сервису. Если в потоковом режиме (и для входа и для выхода), то много проще их инпроцесс иметь.

Про МС СКЛ репортинг сервис лучше спросить на форему Базы данных
Re[10]: Где создавать репорты? на сервере или на клиенте?
От: Peshuha Россия  
Дата: 27.12.13 09:29
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>Здравствуйте, Peshuha, Вы писали:


P>>Здравствуйте, avpavlov, Вы писали:


A>>>Опыта не имею с ним, но, полагаю, что упростить должен.

P>>Я так понял, Вы обошлись без служб. Так ?

A>Я только JFreeReport и JasperReports использовал, (и CrystalReports — но очень давно).


A>Эти 2 — просто библиотеки, если предполагаются большие отчеты в памяти строить, то лучше вынести в отдельное приложение (назови как хочешь), чтобы возможные падения не мешали основному сервису. Если в потоковом режиме (и для входа и для выхода), то много проще их инпроцесс иметь.


A>Про МС СКЛ репортинг сервис лучше спросить на форему Базы данных


Спасибо, Верои сенкс
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Re: Где создавать репорты? на сервере или на клиенте?
От: pavel783  
Дата: 09.01.14 10:57
Оценка:
P>Варианты решения:

P>2) готовить док на клиенте html из json с сервера (смущает обилие страниц, не возможность сделать просто по шаблону, интересует браузерная зависимость.)


проще всего html в pdf конвертить через phantomjs — это webkit браузер который работает как сервис через консоль, там можно еще и png,jpg экранные скрины делать...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.