|
|
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Есть приложение: клиент Swing, Сервер - Ejb Допустим есть функционал: загрузить курсы валют из xml файла. Сервер тянет по расписанию. Пользователь тоже может загрузить файл, выбрав его со своего локального диска. Сейчас в приложении логика по обработке файлов дублируется: - Клиент разгребает файл локально и обращается к серверу только сохранить уже сформированные сущности. - У сервера, собственно, свой фасадный метод, который не используется клиентом. Мне такое дублирование кода не нравится. Я бы передал с клиента файл (например даже через byte[]), делегировав всю логику серверу. Передавать файл на сервер не нравится архитектору. Проясните меня, пжста, чем ему не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 14:34 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kклиент Swing, Сервер - Ejb Протокол RMI? Vladmir KМне такое дублирование кода не нравится. Ну, не дублируйте код, кто вас заставляет? Vladmir KЯ бы передал с клиента файл (например даже через byte[]), делегировав всю логику серверу. Передавать файл на сервер не нравится архитектору. Проясните меня, пжста, чем ему не нравится? Ну, тут есть разумное зерно. Зачем делать на сервере то что можно сделать на клиенте. XML парсинг не самая быстрая штука. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 14:44 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczVladmir Kклиент Swing, Сервер - Ejb Протокол RMI? Да BlazkowiczVladmir KМне такое дублирование кода не нравится. Ну, не дублируйте код, кто вас заставляет? Сделать общий класс, использовать его и на сервере и на клиенте? Меня смущает - что логика на сервере в сешионбине, в котором инжектится правильно логер, т.д. Как это все богатство затянуть на клиент? И дело даже не в простом парсинге xml, чтобы загрузить, считываются доп настройки/плюшки. BlazkowiczНу, тут есть разумное зерно. Зачем делать на сервере то что можно сделать на клиенте. XML парсинг не самая быстрая штука. Вот я всегда наивно полагал обратное, что клиент - чем тупее, тем лучше.... Сервер - по определению мощнее, зачем на клиенте делать "небыстрые" штуки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 14:56 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KСделать общий класс, использовать его и на сервере и на клиенте? Не обязательно класс. Мавеном что ли не пользуетесь? Общий код отдельным модулем. Vladmir KМеня смущает - что логика на сервере в сешионбине, в котором инжектится правильно логер, т.д. Как это все богатство затянуть на клиент? Зачем вам логировать детали разбора XML. Vladmir KИ дело даже не в простом парсинге xml, чтобы загрузить, считываются доп настройки/плюшки. Ну, что-то всё равно останется на сервере. А то что от сервера не зависит, можно пользовать на клиенте. Промежуточный результат передавать. Что не так-то? Vladmir KВот я всегда наивно полагал обратное, что клиент - чем тупее, тем лучше.... Сервер - по определению мощнее, зачем на клиенте делать "небыстрые" штуки? Сервер труднее масштабировать. Нагрузки на клиента минимальные. А сервер обслуживает тысячи клиентов. В 90х у нас были полностью тупые клиенты-браузеры. И где они сейчас? Сплошной DHTML вокруг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:05 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kчто клиент - чем тупее, тем лучше.... не всегда. Поэтому у тебя и есть архитектор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:13 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczVladmir KСделать общий класс, использовать его и на сервере и на клиенте? Не обязательно класс. Мавеном что ли не пользуетесь? Общий код отдельным модулем. Класс - модуль. Суть та же. Ясно. BlazkowiczЗачем вам логировать детали разбора XML. Да я и пытаюсь объяснить, что помимо простого разбора xml, есть еще подготовительные этапы: считать доп параметры, принять решение, что делать в зависимости от параметров, т.д. BlazkowiczНу, что-то всё равно останется на сервере. А то что от сервера не зависит, можно пользовать на клиенте. Промежуточный результат передавать. Что не так-то? Видимо, так и придется рефакторить.... Я дублирование логики так и нашел - открылся баг. Начал копать. В двух разных классах (один на клиенте, второй на сервере) 90% кода совпадает. Даже методы такие же (по семантике). Общего модуля нет... BlazkowiczСервер труднее масштабировать. Сервер на горячую можно передеплоить. А если расширяемость тугая, тут уж архитектурой попахивает, имхо BlazkowiczНагрузки на клиента минимальные. Ага, лишь бы не забыться... и не переборщить. BlazkowiczВ 90х у нас были полностью тупые клиенты-браузеры. И где они сейчас? Хорошее было время! :) Графику оптимизировали до боли, комментарии удаляли, чтоб облегчить файлы! И да, они были тупыми! По мне - так это хорошо :) BlazkowiczСплошной DHTML В такие моменты я с ужасом начинаю думать, что если переписывать такой толстый клиент (как у нас со Свинга на веб), то ... мама не горюй! Спасибо за разъяснения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:32 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123не всегда. Вот я за расшифровкой и обратился на форум. Petro123Поэтому у тебя и есть архитектор. Благодарю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:35 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KДа я и пытаюсь объяснить, что помимо простого разбора xml, есть еще подготовительные этапы: считать доп параметры, принять решение, что делать в зависимости от параметров, т.д. зовётся одним словом - бизнес-логика (БЛ). В толстом клиенте - на клинте. В тонком клиенте - на сервере. Плюс вариации про 3-х звенку и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:45 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KВидимо, так и придется рефакторить.... Я дублирование логики так и нашел - открылся баг. Начал копать. В двух разных классах (один на клиенте, второй на сервере) 90% кода совпадает. Даже методы такие же (по семантике). Общего модуля нет... обычное каждодневное дело прогера. Не дублируй. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:48 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KСервер на горячую можно передеплоить. В теории. На практике получается далеко не у всех. Vladmir KА если расширяемость тугая, тут уж архитектурой попахивает, имхо Она просто сложнее в любом случае. Клиента масштабировать нет надобности в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:48 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123Плюс вариации про 3-х звенку и т.д. Ну вот я и пытаюсь собрать инфу о камнях от умных людей при трехзвенке с БЛ на сервере при передаче сериализированного файла от клиента серверу. Пока собрал - масштабируемость сервера и нагрузку. Blazkowicz, как обычно, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 15:52 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Если в процессе загрузки могут происходить какие-то события, требующие диалога с пользователем (GUI), то перенести на сервер "все не так очевидно" ( C ) дочь офицера IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:02 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KНу вот я и пытаюсь собрать инфу слишком общие вопросы. Я бы например: - при десктопе минимальные классы на сервере и все классы на клиенте. - на сервере только то что поддерживает целостность Модели данных. Например, отношения один ко многим, связи и т.д. Всё. Дублировать нечего за исключением небольшой валидации чего либо при движении мышкой над контролами). IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:08 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЕсли в процессе загрузки могут происходить какие-то события, требующие диалога с пользователем (GUI), то перенести на сервер "все не так очевидно" ( C ) дочь офицера В данном случае, пользователь выбирает только файл. Остальное делается по алгоритму, без доп уточнений пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:12 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123- при десктопе минимальные классы на сервере и все классы на клиенте. Фасады больше не в моде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:14 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KPetro123- при десктопе минимальные классы на сервере и все классы на клиенте. Фасады больше не в моде? Фасад обычно прикрывает какю то кухню внутри или скрывает её недостатки. Давай конкретнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:19 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KВ данном случае, пользователь выбирает только файл. Остальное делается по алгоритму, без доп уточнений пользователя. Модель данныйх какая для курса валют? Табличка Дата и Курс? Тогда на сервере только INSERT, а всё остальное на клиенте. Т.к. парсер XML к Модели данных на сервере не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:25 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123Фасад обычно прикрывает какю то кухню внутри или скрывает её недостатки. - Считать доп настройки для конкретного подразделения: смещать ли дату (например на завтра) курса из файла, локальная валюта подразделения (RUB, GBP, etc) - Распарсить xml - собрать модель валюты. Сойдет за кухню? Petro123Модель данныйх какая для курса валют? Табличка Дата и Курс? примерно да: дата - валюта С - валюта В Petro123Тогда на сервере только INSERT, а всё остальное на клиенте. ИМХО, зачем такой клиент? Переход на другой клиент = новый проект! Petro123Т.к. парсер XML к Модели данных на сервере не имеет отношения тут я согласен. Вопрос только: как организовать автоматическую загрузку по расписанию? Если логика и парсинг на клиенте, а запуск задачи на сервере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 16:46 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KПереход на другой клиент = новый проект! если новый это веб клиент, то да. А как иначе? Если новый клиент опять десктоп, то нафига он нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 17:31 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kкак организовать автоматическую загрузку по расписанию? Если логика и парсинг на клиенте, а запуск задачи на сервере... тут надо определятся что в приоритете. Если автомат и по расписанию, то всё что я говорил забыть. Серверные методы и классы тянут файлы из расшаренной папки или FTP или .... Если вдруг с клиента надо подтолкнуть, то просто данный шедулер выставляется на время минутой позже чем сейчас. Делать это JOB'ом СУБД или на АппСервере исключительно вопрос в наличии программиста по данному ЯП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 17:35 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123тут надо определятся что в приоритете. 80% автоматом 20% пользователь Petro123Если вдруг с клиента надо подтолкнуть, то просто данный шедулер выставляется на время минутой позже чем сейчас. В динамике выставлять расписание шедуллера, при этом такие привилегии должны быть у юзера? Сомнительно. А моя фраза Vladmir KПользователь тоже может загрузить файл, выбрав его со своего локального диска. вообще перечеркивает такую концепцию! :( Потому что не подтолкнуть, а совсем другой файл загрузить... В итоге, подожду аргументы архитектора, и скорее всего, будет некий общий модуль, как и советовал Blazkowicz, ну что и очевидно... Хотя мое мнение, что фасад тут совсем не лишний, а серьезных технических камней против сериализации файла в том или ином виде, я не услышал..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 21:44 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KВ динамике выставлять расписание шедуллера, при этом такие привилегии должны быть у юзера? Сомнительно. какие привилегии? Если мы про оракла код, то: В JOB у сервера написана одна строка вызова хранимой процедуры ИМЯ_ПАКЕТА.ЗагрузитьВсёВ_общейПапке; Ты правда боишься вызвать эту хранимку с клиента? Vladmir KХотя мое мнение, что фасад тут совсем не лишний я лично не вижу у одной строки выше фасада)). Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 22:13 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kа серьезных технических камней против сериализации файла в том или ином виде, я не услышал..... дал поиск по слову сериализация по топику. Нет ни слова. Ты про что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 22:16 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
И как файл можно сериализовать? Это вообще как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 22:19 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123дал поиск по слову сериализация по топику. Нет ни слова. Petro123ИМЯ_ПАКЕТА.ЗагрузитьВсёВ_общейПапке; Ты правда боишься вызвать эту хранимку с клиента? Нет, хранимку, конечно, не боюсь Но вот если какой-то внешний шедуллер, например в данном проекте, quartz, то доступ к конфигурационнику не хочется давать клиенту. Ибо это привилегия одминов. Petro123я лично не вижу у одной строки выше фасада)). Удачи! спасибо :) Petro123дал поиск по слову сериализация по топику. Нет ни слова. Leonid KudryavtsevИ как файл можно сериализовать? Это вообще как? Я так рассуждаю: передать файл, как File, от клиента к серверу через RMI не получится, потому что он проксироватьсян не будет. Ну если конечно путь будет не одинаковый с сервера и клиента, а это утопия. Значит надо как-то сериализировать... Варианта, на мой взгляд, два приходят на ум: 1. В частном случае, файл текстовый - можно передать в виде строки 2. Можно создать некий DTO: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 23:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39265732&tid=2123930]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 471ms |

| 0 / 0 |
