Построение системы отчетов

13 views
Skip to first unread message

Serg Gulko

unread,
Nov 4, 2011, 1:12:35 PM11/4/11
to Kiev Perl Users Group
Коллеги, поделитесь опытом...

Работаем над web приложением(на Catalyst), где часть функционала -
построение разнообразных отчетов. Отчеты строятся на стороне
клиента(графики, таблицы) на основании данных, получаемых с сервера. У
нас тут возник философский спор, как было бы лучше реализовать данную
часть приложения.

Идея первая: весь функционал по формированию данных для отчетов
выносится в отдельный класс(независимый от web). В Catalyst создается
контроллер reports, который занимается просто передачей параметров на
вход упомянутого выше класса. Например: /reports?
report=ReportA&accounts=1,2,3&date=A

Идея вторая: тот же самый контроллер reports наполняется конкретными
реализациями отчетов(или функциями, передающими запросы классам
логики). Например: /reports/reporta?accounts=1,2,3&date=A

Оба подхода более-менее взаимозаменяемы, но какой было бы лучше
выбрать? Или есть еще другие варианты, которые мы упустили?

Yaroslav Korshak

unread,
Nov 4, 2011, 1:20:21 PM11/4/11
to kiev-perl-...@googlegroups.com
Привет Сергей!

On 11/04/2011 07:12 PM, Serg Gulko wrote:
> В Catalyst создается
> контроллер reports, который занимается просто передачей параметров на
> вход упомянутого выше класса.
>

> Идея вторая: тот же самый контроллер reports наполняется конкретными
> реализациями отчетов(или функциями, передающими запросы классам
> логики).

Этот вопрос для похож на "MVC или просто VC" ? И раз этот вопрос вообще
возник, значит модель будет достаточно большой.
Я бы пошел по пути MVC - уже потому, что модель будет намного проще
тестировать. Я уже не говорю о возможном повтороном использовании кода.

--
Regards
yko

Виктор Турский

unread,
Nov 4, 2011, 1:39:38 PM11/4/11
to kiev-perl-...@googlegroups.com
Я, всегда отчеты выношу в независимый от веба отдельный класс. А
контроллер обычно только преобразовывает данные в подходящий формат
(например под fusion charts) и отправляет клиенту.

ИМХО, выносить реализацию отчетов в контроллер - это далеко ну лучший
вариант. И кроме того, он усложнит тестирование логики отчетов.

--
З повагою,
Віктор Турський

Nab

unread,
Nov 4, 2011, 5:22:58 PM11/4/11
to kiev-perl-...@googlegroups.com
04.11.11 в 20:20 Yaroslav Korshak в своём письме писал(а):

Боюсь тут имеется ввиду вопрос MVC vs (VC + отдельная логика)

Я выступаю за MVC потому как оно самодостаточно. А писать отдельный
универсальный контроллер, который будет заниматся диспетчеризацией
запросов к внешней логике имхо лишне. Собственно этим уже сам каталист
занимается. Диспетчеризирует вызовы к собственным моделям.

Внешняя логика переносима и более тестируемв, но при этом добавляется еще
один уровень абстракции.

--
С Уважением, Николай aka Nab.

Dmitrii

unread,
Nov 5, 2011, 1:16:57 AM11/5/11
to Serg Gulko, Kiev Perl Users Group

:D

"пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅ, пїЅ пїЅпїЅпїЅ" пїЅ Bearman (пїЅпїЅпїЅ пїЅпїЅпїЅ-пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ)

--- пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ---
пїЅпїЅ пїЅпїЅпїЅпїЅ: "Serg Gulko" <s.g...@gmail.com>
пїЅпїЅпїЅпїЅ: "Kiev Perl Users Group" <kiev-perl-...@googlegroups.com>
пїЅпїЅпїЅпїЅ: 4 пїЅпїЅпїЅпїЅпїЅпїЅ 2011, 20:12:39
пїЅпїЅпїЅпїЅ: пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ


> пїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ...
>
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ web пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ(пїЅпїЅ Catalyst), пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ -
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅ(пїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ) пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅ
> пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
>
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ: пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ(пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ web). пїЅ Catalyst пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ reports, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ: /reports?
> report=ReportA&accounts=1,2,3&date=A
>
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ: пїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ reports пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ(пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅ). пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ: /reports/reporta?accounts=1,2,3&date=A
>
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ-пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅ? пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ?

Serg V. Gulko

unread,
Nov 5, 2011, 5:11:02 AM11/5/11
to Dmitrii, Kiev Perl Users Group
Это типа - лучше вообще ничего не делать:)?
В Сбт, 05/11/2011 в 07:16 +0200, Dmitrii пишет:
:D

"говно будет и так, и так" © Bearman (или кто-то другой)



 --- Исходное сообщение ---
 От кого: "Serg Gulko" <s.g...@gmail.com>
 Кому: "Kiev Perl Users Group" <kiev-perl-...@googlegroups.com>
  Дата: 4 ноября 2011, 20:12:39
 Тема: Построение системы отчетов
 


> Коллеги, поделитесь опытом...
> 
> Работаем над web приложением(на Catalyst), где часть функционала -
> построение разнообразных отчетов. Отчеты строятся на стороне
> клиента(графики, таблицы) на основании данных, получаемых с сервера. У
> нас тут возник философский спор, как было бы лучше реализовать данную
> часть приложения.
> 
> Идея первая: весь функционал по формированию данных для отчетов
> выносится в отдельный класс(независимый от web). В Catalyst создается
> контроллер reports, который занимается просто передачей параметров на
> вход упомянутого выше класса. Например: /reports?
> report=ReportA&accounts=1,2,3&date=A
> 
> Идея вторая: тот же самый контроллер reports наполняется конкретными
> реализациями отчетов(или функциями, передающими запросы классам
> логики). Например: /reports/reporta?accounts=1,2,3&date=A
> 
> Оба подхода более-менее взаимозаменяемы, но какой было бы лучше
> выбрать? Или есть еще другие варианты, которые мы упустили?

Serg V. Gulko

unread,
Nov 5, 2011, 5:19:08 AM11/5/11
to kiev-perl-...@googlegroups.com

Внешняя логика переносима и более тестируемв, но при этом добавляется еще  
один уровень абстракции.

Скорее, обертку.

Nickolay Briginetc

unread,
Nov 5, 2011, 5:36:03 PM11/5/11
to kiev-perl-...@googlegroups.com
В дейстивельности если имеется ввиду, что отчеты возможно будут
отображатся не каталистом,а каким либо его конкурентом или еще как, то
я вариантс с внешней логикой поддерживаю на все сто. Но при этом мой
внутренний архитектор ежится где то в уголках разумности :)

05.11.11, Serg V. Gulko<s.g...@gmail.com> написал(а):


>
>
>> Внешняя логика переносима и более тестируемв, но при этом добавляется еще
>>
>> один уровень абстракции.
>>
>
> Скорее, обертку.
>


--
Best Regards!
Nickolay Briginetc.

Reply all
Reply to author
Forward
0 new messages