|
|
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KЯ так рассуждаю: передать файл, как File, от клиента к серверу через RMI не получится, потому что он проксироватьсян не будет. Ну если конечно путь будет не одинаковый с сервера и клиента, а это утопия. Значит надо как-то сериализировать... java.io.File это API для работы со структурой файловой системы. Задлянафига его куда-то передавать - загадка. Vladmir K Код: java 1. 2. 3. 4. 5. fileName не нужен. size не нужен. DTO тогда для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 08:33 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kпередать файл, как File, от клиента к серверу через RMI не получится сначала разбирают Основной прецендент. Это у теюя 80% автоматом закачка файлов без участия клиентов . Так? А то как в анекдоте: Ищем пропавшие часы где светло, а не там где пропали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 10:43 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123сначала разбирают Основной прецендент. Это у теюя 80% автоматом закачка файлов без участия клиентов . Так? Не так, потому задача решена, когда покрыто 100% случаев. Отсутствие 20% ручных загрузок делает бессмысленным автоматические 80% И при чем тут анекдот про часы? Более удачный пример: Нога сломана в бедре и в ступне. В бедре сложнее перелом. Задача: Давайте вылечим человека. Ты: давайте вылечим только бедро! Но ходить, то он все равно не сможет, потому что ступня не работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 13:44 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczfileName не нужен. size не нужен. DTO тогда для чего? В моем конкретном случае не нужно. В общем - чтобы тупо иметь какие-то метаданные.... Может я захочу сохранить обработанный файл в какое-то хранилище, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 13:47 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KНе так, потому задача решена, когда покрыто 100% случаев. Отсутствие 20% ручных загрузок делает бессмысленным автоматические 80% Нет. Тебе выше сказали - зачем метаданные? Это постановка задачи. Если автомат загрузки, то появляются 2 модуля. Один загрузка из постоянного места с XML парсером и таймером. Второй чтобы кинуть в то место файл. Если не походит просто кинуть на ФТП хранилище в проводнике файл, то обзови свою тему отдельно. Причём тут вообще XML и какой то код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:01 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir Kклиент Swing в swing нет компонента для загрузки файла на сервер? В БД или просто в папку на сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:04 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123Один загрузка из постоянного места с XML парсером и таймером. Второй чтобы кинуть в то место файл. Если не походит просто кинуть на ФТП хранилище в проводнике файл, то обзови свою тему отдельно. Причём тут вообще XML и какой то код? Вооот! Вот я и пытаюсь выяснить, почему нельзя файл тупо передать как параметр в сессион бин. Почему обязательно нужно его куда-то сохранить в доступное место? (у меня, кстати, такого нет, но это уже другой вопрос) Petro123Если не походит просто кинуть на ФТП хранилище в проводнике файл, то обзови свою тему отдельно. Причём тут вообще XML и какой то код? Чтобы был понятен юз кейс В целом вообще тему можно закрывать. Ход мысли я понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:18 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir K, т.е. при такой поставновке (2 модуля) никакого дублирования кода не происходит. Об этом вроде топик был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:19 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123Vladmir Kклиент Swing в swing нет компонента для загрузки файла на сервер? В БД или просто в папку на сервер? Я такой не знаю... К тому же, доступ к файловой системе сервера приложений - не безопасно. имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:19 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir KК тому же, доступ к файловой системе сервера приложений - не безопасно. имхо админы могут что угодно. Им просто проще на прогера кинуть задачу. Можно ФТП папку настроить хоть в Урюпинске. А Оракл будет оттуда доставать по расписанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:22 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir K, у меня Оракл заказчика доставал с нашей папки и нашего сервера фирмы разразработчиков ИС. Т.е. ФТП сервер в вебе был на нашем обслуживании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:24 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Petro123Vladmir K, т.е. при такой поставновке (2 модуля) никакого дублирования кода не происходит. Об этом вроде топик был? Топик был "почему плохо передавать файл как параметр". Дублирование кода - причина вопроса, причину нужно устранить. Остальное я понимаю и соглашаюсь и с тобой и Blazkowicz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:25 |
|
||
|
Передача файла как параметр (клиент - сервер)
|
|||
|---|---|---|---|
|
#18+
Vladmir K, OK Swing я не знаю. Не писал на нём. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 14:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123930]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 427ms |

| 0 / 0 |
