Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача файла как параметр (клиент - сервер) / 25 сообщений из 39, страница 1 из 2
30.06.2016, 14:34
    #39265542
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Есть приложение:
клиент Swing, Сервер - Ejb

Допустим есть функционал: загрузить курсы валют из xml файла.
Сервер тянет по расписанию.
Пользователь тоже может загрузить файл, выбрав его со своего локального диска.

Сейчас в приложении логика по обработке файлов дублируется:
- Клиент разгребает файл локально и обращается к серверу только сохранить уже сформированные сущности.
- У сервера, собственно, свой фасадный метод, который не используется клиентом.

Мне такое дублирование кода не нравится. Я бы передал с клиента файл (например даже через byte[]), делегировав всю логику серверу.
Передавать файл на сервер не нравится архитектору.

Проясните меня, пжста, чем ему не нравится?
...
Рейтинг: 0 / 0
30.06.2016, 14:44
    #39265557
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir Kклиент Swing, Сервер - Ejb

Протокол RMI?

Vladmir KМне такое дублирование кода не нравится.
Ну, не дублируйте код, кто вас заставляет?

Vladmir KЯ бы передал с клиента файл (например даже через byte[]), делегировав всю логику серверу.
Передавать файл на сервер не нравится архитектору.
Проясните меня, пжста, чем ему не нравится?
Ну, тут есть разумное зерно. Зачем делать на сервере то что можно сделать на клиенте. XML парсинг не самая быстрая штука.
...
Рейтинг: 0 / 0
30.06.2016, 14:56
    #39265573
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
BlazkowiczVladmir Kклиент Swing, Сервер - Ejb

Протокол RMI?
Да

BlazkowiczVladmir KМне такое дублирование кода не нравится.
Ну, не дублируйте код, кто вас заставляет?
Сделать общий класс, использовать его и на сервере и на клиенте?
Меня смущает - что логика на сервере в сешионбине, в котором инжектится правильно логер, т.д. Как это все богатство затянуть на клиент?

И дело даже не в простом парсинге xml, чтобы загрузить, считываются доп настройки/плюшки.

BlazkowiczНу, тут есть разумное зерно. Зачем делать на сервере то что можно сделать на клиенте. XML парсинг не самая быстрая штука.
Вот я всегда наивно полагал обратное, что клиент - чем тупее, тем лучше....
Сервер - по определению мощнее, зачем на клиенте делать "небыстрые" штуки?
...
Рейтинг: 0 / 0
30.06.2016, 15:05
    #39265589
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KСделать общий класс, использовать его и на сервере и на клиенте?

Не обязательно класс. Мавеном что ли не пользуетесь? Общий код отдельным модулем.

Vladmir KМеня смущает - что логика на сервере в сешионбине, в котором инжектится правильно логер, т.д. Как это все богатство затянуть на клиент?

Зачем вам логировать детали разбора XML.

Vladmir KИ дело даже не в простом парсинге xml, чтобы загрузить, считываются доп настройки/плюшки.

Ну, что-то всё равно останется на сервере. А то что от сервера не зависит, можно пользовать на клиенте. Промежуточный результат передавать. Что не так-то?

Vladmir KВот я всегда наивно полагал обратное, что клиент - чем тупее, тем лучше....
Сервер - по определению мощнее, зачем на клиенте делать "небыстрые" штуки?
Сервер труднее масштабировать. Нагрузки на клиента минимальные. А сервер обслуживает тысячи клиентов. В 90х у нас были полностью тупые клиенты-браузеры. И где они сейчас? Сплошной DHTML вокруг.
...
Рейтинг: 0 / 0
30.06.2016, 15:13
    #39265599
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir Kчто клиент - чем тупее, тем лучше....
не всегда.
Поэтому у тебя и есть архитектор.
...
Рейтинг: 0 / 0
30.06.2016, 15:32
    #39265616
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
BlazkowiczVladmir KСделать общий класс, использовать его и на сервере и на клиенте?

Не обязательно класс. Мавеном что ли не пользуетесь? Общий код отдельным модулем.
Класс - модуль. Суть та же. Ясно.

BlazkowiczЗачем вам логировать детали разбора XML.
Да я и пытаюсь объяснить, что помимо простого разбора xml, есть еще подготовительные этапы:
считать доп параметры, принять решение, что делать в зависимости от параметров, т.д.

BlazkowiczНу, что-то всё равно останется на сервере. А то что от сервера не зависит, можно пользовать на клиенте. Промежуточный результат передавать. Что не так-то?
Видимо, так и придется рефакторить....
Я дублирование логики так и нашел - открылся баг. Начал копать. В двух разных классах (один на клиенте, второй на сервере) 90% кода совпадает. Даже методы такие же (по семантике). Общего модуля нет...
BlazkowiczСервер труднее масштабировать.
Сервер на горячую можно передеплоить.
А если расширяемость тугая, тут уж архитектурой попахивает, имхо

BlazkowiczНагрузки на клиента минимальные.
Ага, лишь бы не забыться... и не переборщить.
BlazkowiczВ 90х у нас были полностью тупые клиенты-браузеры. И где они сейчас?
Хорошее было время! :)
Графику оптимизировали до боли, комментарии удаляли, чтоб облегчить файлы!
И да, они были тупыми! По мне - так это хорошо :)


BlazkowiczСплошной DHTML
В такие моменты я с ужасом начинаю думать, что если переписывать такой толстый клиент (как у нас со Свинга на веб), то ... мама не горюй!

Спасибо за разъяснения.
...
Рейтинг: 0 / 0
30.06.2016, 15:35
    #39265619
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123не всегда.
Вот я за расшифровкой и обратился на форум.

Petro123Поэтому у тебя и есть архитектор.
Благодарю :)
...
Рейтинг: 0 / 0
30.06.2016, 15:45
    #39265636
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KДа я и пытаюсь объяснить, что помимо простого разбора xml, есть еще подготовительные этапы:
считать доп параметры, принять решение, что делать в зависимости от параметров, т.д.
зовётся одним словом - бизнес-логика (БЛ).
В толстом клиенте - на клинте.
В тонком клиенте - на сервере.
Плюс вариации про 3-х звенку и т.д.
...
Рейтинг: 0 / 0
30.06.2016, 15:48
    #39265639
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KВидимо, так и придется рефакторить....
Я дублирование логики так и нашел - открылся баг. Начал копать. В двух разных классах (один на клиенте, второй на сервере) 90% кода совпадает. Даже методы такие же (по семантике). Общего модуля нет...
обычное каждодневное дело прогера. Не дублируй.
Удачи!
...
Рейтинг: 0 / 0
30.06.2016, 15:48
    #39265640
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KСервер на горячую можно передеплоить.

В теории. На практике получается далеко не у всех.

Vladmir KА если расширяемость тугая, тут уж архитектурой попахивает, имхо

Она просто сложнее в любом случае. Клиента масштабировать нет надобности в принципе.
...
Рейтинг: 0 / 0
30.06.2016, 15:52
    #39265642
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123Плюс вариации про 3-х звенку и т.д.
Ну вот я и пытаюсь собрать инфу о камнях от умных людей при трехзвенке с БЛ на сервере при передаче сериализированного файла от клиента серверу.

Пока собрал
- масштабируемость сервера и нагрузку. Blazkowicz, как обычно, +1
...
Рейтинг: 0 / 0
30.06.2016, 16:02
    #39265656
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Если в процессе загрузки могут происходить какие-то события, требующие диалога с пользователем (GUI), то перенести на сервер "все не так очевидно" ( C ) дочь офицера

IMHO
...
Рейтинг: 0 / 0
30.06.2016, 16:08
    #39265667
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KНу вот я и пытаюсь собрать инфу
слишком общие вопросы.
Я бы например:
- при десктопе минимальные классы на сервере и все классы на клиенте.
- на сервере только то что поддерживает целостность Модели данных. Например, отношения один ко многим, связи и т.д.
Всё.
Дублировать нечего за исключением небольшой валидации чего либо при движении мышкой над контролами).
IMHO
...
Рейтинг: 0 / 0
30.06.2016, 16:12
    #39265674
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Leonid KudryavtsevЕсли в процессе загрузки могут происходить какие-то события, требующие диалога с пользователем (GUI), то перенести на сервер "все не так очевидно" ( C ) дочь офицера
В данном случае, пользователь выбирает только файл. Остальное делается по алгоритму, без доп уточнений пользователя.
...
Рейтинг: 0 / 0
30.06.2016, 16:14
    #39265677
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123- при десктопе минимальные классы на сервере и все классы на клиенте.
Фасады больше не в моде?
...
Рейтинг: 0 / 0
30.06.2016, 16:19
    #39265687
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KPetro123- при десктопе минимальные классы на сервере и все классы на клиенте.
Фасады больше не в моде?
Фасад обычно прикрывает какю то кухню внутри или скрывает её недостатки.
Давай конкретнее.
...
Рейтинг: 0 / 0
30.06.2016, 16:25
    #39265699
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KВ данном случае, пользователь выбирает только файл. Остальное делается по алгоритму, без доп уточнений пользователя.
Модель данныйх какая для курса валют?
Табличка Дата и Курс?
Тогда на сервере только INSERT, а всё остальное на клиенте.
Т.к. парсер XML к Модели данных на сервере не имеет отношения.
...
Рейтинг: 0 / 0
30.06.2016, 16:46
    #39265732
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123Фасад обычно прикрывает какю то кухню внутри или скрывает её недостатки.
- Считать доп настройки для конкретного подразделения: смещать ли дату (например на завтра) курса из файла, локальная валюта подразделения (RUB, GBP, etc)
- Распарсить xml
- собрать модель валюты.

Сойдет за кухню?


Petro123Модель данныйх какая для курса валют?
Табличка Дата и Курс?
примерно да:
дата - валюта С - валюта В


Petro123Тогда на сервере только INSERT, а всё остальное на клиенте.
ИМХО, зачем такой клиент? Переход на другой клиент = новый проект!

Petro123Т.к. парсер XML к Модели данных на сервере не имеет отношения
тут я согласен.
Вопрос только: как организовать автоматическую загрузку по расписанию? Если логика и парсинг на клиенте, а запуск задачи на сервере...
...
Рейтинг: 0 / 0
30.06.2016, 17:31
    #39265783
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KПереход на другой клиент = новый проект!
если новый это веб клиент, то да. А как иначе?
Если новый клиент опять десктоп, то нафига он нужен?
...
Рейтинг: 0 / 0
30.06.2016, 17:35
    #39265790
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir Kкак организовать автоматическую загрузку по расписанию? Если логика и парсинг на клиенте, а запуск задачи на сервере...
тут надо определятся что в приоритете.
Если автомат и по расписанию, то всё что я говорил забыть. Серверные методы и классы тянут файлы из расшаренной папки или FTP или ....
Если вдруг с клиента надо подтолкнуть, то просто данный шедулер выставляется на время минутой позже чем сейчас.
Делать это JOB'ом СУБД или на АппСервере исключительно вопрос в наличии программиста по данному ЯП.
...
Рейтинг: 0 / 0
30.06.2016, 21:44
    #39265923
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123тут надо определятся что в приоритете.
80% автоматом
20% пользователь
Petro123Если вдруг с клиента надо подтолкнуть, то просто данный шедулер выставляется на время минутой позже чем сейчас.
В динамике выставлять расписание шедуллера, при этом такие привилегии должны быть у юзера? Сомнительно.

А моя фраза
Vladmir KПользователь тоже может загрузить файл, выбрав его со своего локального диска.
вообще перечеркивает такую концепцию! :( Потому что не подтолкнуть, а совсем другой файл загрузить...

В итоге, подожду аргументы архитектора, и скорее всего, будет некий общий модуль, как и советовал Blazkowicz, ну что и очевидно...
Хотя мое мнение, что фасад тут совсем не лишний, а серьезных технических камней против сериализации файла в том или ином виде, я не услышал.....
...
Рейтинг: 0 / 0
30.06.2016, 22:13
    #39265935
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir KВ динамике выставлять расписание шедуллера, при этом такие привилегии должны быть у юзера? Сомнительно.
какие привилегии?
Если мы про оракла код, то:
В JOB у сервера написана одна строка вызова хранимой процедуры
ИМЯ_ПАКЕТА.ЗагрузитьВсёВ_общейПапке;
Ты правда боишься вызвать эту хранимку с клиента?

Vladmir KХотя мое мнение, что фасад тут совсем не лишний
я лично не вижу у одной строки выше фасада)).
Удачи!
...
Рейтинг: 0 / 0
30.06.2016, 22:16
    #39265937
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Vladmir Kа серьезных технических камней против сериализации файла в том или ином виде, я не услышал.....
дал поиск по слову сериализация по топику. Нет ни слова.
Ты про что?
...
Рейтинг: 0 / 0
30.06.2016, 22:19
    #39265941
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
И как файл можно сериализовать? Это вообще как?
...
Рейтинг: 0 / 0
30.06.2016, 23:50
    #39265966
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача файла как параметр (клиент - сервер)
Petro123дал поиск по слову сериализация по топику. Нет ни слова.
Petro123ИМЯ_ПАКЕТА.ЗагрузитьВсёВ_общейПапке;
Ты правда боишься вызвать эту хранимку с клиента?
Нет, хранимку, конечно, не боюсь

Но вот если какой-то внешний шедуллер, например в данном проекте, quartz, то доступ к конфигурационнику не хочется давать клиенту. Ибо это привилегия одминов.
Petro123я лично не вижу у одной строки выше фасада)).
Удачи!
спасибо :)

Petro123дал поиск по слову сериализация по топику. Нет ни слова.

Leonid KudryavtsevИ как файл можно сериализовать? Это вообще как?

Я так рассуждаю:
передать файл, как File, от клиента к серверу через RMI не получится, потому что он проксироватьсян не будет. Ну если конечно путь будет не одинаковый с сервера и клиента, а это утопия.
Значит надо как-то сериализировать...

Варианта, на мой взгляд, два приходят на ум:
1. В частном случае, файл текстовый - можно передать в виде строки
2. Можно создать некий DTO:
Код: java
1.
2.
3.
4.
5.
class FileDTO implements Serializable {
  String fileName;
  Long size;
  byte[] data;
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача файла как параметр (клиент - сервер) / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]