powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с выбором технологии
24 сообщений из 24, страница 1 из 1
Помогите с выбором технологии
    #38775758
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо сделать некое веб-приложение, которое позволит посетителю сформировать список необходимых ему файлов и после оплаты скачать их в виде архива.

Изначально планировалось сделать рнр-страничку на которой посетитель может выбрать из списков те, или иные файлы, после чего инициировать на сервере процесс, который заархивирует все эти файлы во временной папке, принадлежащей этому посетителю, и после подтверждения оплаты отправит посетителю имейл со ссылкой на сценарий, отдающий этот архив на скачивание.

Мне почему-то не очень нравится идея запускать процесс на сервере с помощью веб-приложения. Во-первых, мне кажется, что Java EE дает спецификацию на взаимодействие между клиентской веб-частью приложения и средствами находящимися на сервере. В идеале, по-моему, веб-клиент вообще не должен знать о существовании средств, которыми сервер вернет запрошенные файлы. Возможно должно генерироваться какое-то событие, например, завершение формирования списка. Слушать это событие должно приложение, или класс которое и будет работать с файлами. Была мысль сделать некий семафор, наличие которого было бы указанием на начало обработки файлов. Появление этого семафора проверять по cron например каждые 10-20 секунд. Но это значит увеличение нагрузки на сервер независимо от того, запрашивал ли клиент файлы, или нет. Я правильно рассуждаю, не так ли? В тоже время одновременно может прийти несколько запросов на разные файлы от разных посетителей и здесь, как мне кажется, уже всплывает вопрос многопоточности и параллельности.

Прежде мне не приходилось делать ни чего подобного, поэтому теория у меня хромает. Если я где-то не правильно понимаю то, как подобные задачи должны решаться, пожалуйста поправте меня.

В свое время я почитывал книги по Java EE и мне кажется, что это как раз тот случай, когда стоит к ней обратиться, да и такое решение, по-моему, будет более производительным чем на РНР. Подскажите пожалуйста, где можно почитать о подобных решениях, посмотреть примеры?

Сразу благодарю всех откликнувшихся.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775791
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_j,
Велосипед вместо Корзина покупателя?
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775836
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jМне почему-то не очень нравится идея запускать процесс на сервере с помощью веб-приложения.

На линухе же довольно легковесные процессы. Для винды, конечно же, повод задуматься. А что PHP с файлами не умеет работать?

bob_jВо-первых, мне кажется, что Java EE дает спецификацию на взаимодействие между клиентской веб-частью приложения и средствами находящимися на сервере.
JEE очень слабо чего даёт в плане взаимодействия с клиентской частью. Всё больше про сервер.

bob_jВ идеале, по-моему, веб-клиент вообще не должен знать о существовании средств, которыми сервер вернет запрошенные файлы.

А на PHP разве знает?

bob_jВозможно должно генерироваться какое-то событие, например, завершение формирования списка. Слушать это событие должно приложение, или класс которое и будет работать с файлами.
Направление верно, чего нельзя сказать о выводах ниже.

bob_jБыла мысль сделать некий семафор, наличие которого было бы указанием на начало обработки файлов. Появление этого семафора проверять по cron например каждые 10-20 секунд. Но это значит увеличение нагрузки на сервер независимо от того, запрашивал ли клиент файлы, или нет. Я правильно рассуждаю, не так ли?
Да. Вот только почему вы отбросили "события". Стоит знать что обработка "событий", обычно, организована в виде очередей. А не таймеров с семафорами. Pure JEE аналог это JMS. С другой стороны вполне можно ограничиться асинхронными сервлетами в Servlet 3.0. Хотя API у них немного стремное. Что, впрочем, вполне обычно для JEE.

bob_j В тоже время одновременно может прийти несколько запросов на разные файлы от разных посетителей и здесь, как мне кажется, уже всплывает вопрос многопоточности и параллельности.
Ну, вообще-то любое web приложение уже подразумевает многопоточность и праллельность.

bob_jПодскажите пожалуйста, где можно почитать о подобных решениях, посмотреть примеры?
Я бы Фаулера читал. Enterprise Patterns - сборник типовых решений. Потому как именно недостаток знания различных типовых решений порождает каких-то монстров в виде cron-семафоров.

Можно сделать так
id файлов храним в HttpSession клиента
после оформления покупки запускаем из сервлета асинхронный "процесс" упаковки файлов
http://docs.oracle.com/javaee/7/tutorial/doc/servlets012.htm
по завершении отдаём файл клиенту

Я недавно делал парсер файлов. jQuery UI Progressbar + jquery-stream + Servlet 3.0 вполне нормально позволили запилить COMET и мониторить процесс обработки файла на клиенте. Единственной неожиданностью стала небольшая проблема с GZIP.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775860
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что вы просите очено похоже на готовый jenkins. Можно формировать задачи со свободной структурой. Контролировать количество одновременных задач. запускать внешние процессы.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775924
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНа линухе же довольно легковесные процессы. Для винды, конечно же, повод задуматься. А что PHP с файлами не умеет работать?
РНР с файлами конечно умеет работать. Дело в том, что я описал приближенную картину того, как все должно происходить. Веб часть - это только вершина айсберга. Реально на сервере не просто надо будет собрать файлы в архив, но и еще много всяких операций проделать, прежде чем вернуть архив клиенту. Например, надо будет обратиться к 1С, которая на виндовом сервере крутится. Писать серверное приложение на РНР для связи веб-приложения и 1С? Мне не очень такая перспектива по душе. Мне показалось, что в данной ситуации связка Servelt+EJB самое то. Я вроде где-то читал, что Spring предлагает какую-то облегченную замену EJB.

BlazkowiczНу, вообще-то любое web приложение уже подразумевает многопоточность и праллельность. Я имел в виду, что приложение, подготавливающее заказанный архив и делающее всякие другие операции на сервере, должно быть многопоточным.

BlazkowiczЯ бы Фаулера читал. Enterprise Patterns - сборник типовых решений. Потому как именно недостаток знания различных типовых решений порождает каких-то монстров в виде cron-семафоров.

Можно сделать так
id файлов храним в HttpSession клиента
после оформления покупки запускаем из сервлета асинхронный "процесс" упаковки файлов
http://docs.oracle.com/javaee/7/tutorial/doc/servlets012.htm
по завершении отдаём файл клиенту

Я недавно делал парсер файлов. jQuery UI Progressbar + jquery-stream + Servlet 3.0 вполне нормально позволили запилить COMET и мониторить процесс обработки файла на клиенте. Единственной неожиданностью стала небольшая проблема с GZIP. За рекомендации спасибо. Я реально плаваю во многих выше описанных моментах, просто давно хотел разобраться в Java EE и этот случай показался мне весьма подходящим.

Если все же отказаться от Java EE, то как правильно сделать связь между веб-приложением, реализованном на РНР, и серверной частью, которая может быть реализована на чем угодно? У меня большой пробел в знаниях именно об этом моменте. Как организовывается взаимодействие? До этого писал простые сайты на Друпале и с помощью разных фреймворков, но там все решалось внутри самой CMS, или на уровне модели которая работала с БД, но не привлекала ни каких других сторонних ресурсов.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775946
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_j,
Многопоточность и 1С странное сочетание.
Тут только заказ файлов и ждать закрыв Ослик. Т.е. личный кабинет.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775949
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jПисать серверное приложение на РНР для связи веб-приложения и 1С?
Любой interop сейчас через XML SOAP Web Service реализуется. При этом я более чем уверен что в PHP вас ожидает меньше сюрпризов при использовании web сервисов. А в Java вы легко столкнетесь с тем что дефолтная реализация JAX-WS окажется чем-то не совместима с 1С и нужно будет изучать и сторонние реализации вроде CXF. С настороженностью теперь смотрю на перспективы использовать JAXB и JAX-WS. Столько крови попили уже.

bob_jМне показалось, что в данной ситуации связка Servelt+EJB самое то. Я вроде где-то читал, что Spring предлагает какую-то облегченную замену EJB.
EJB сам по себе сложно устроен. Надо его понимать чтобы применять правильно и к месту.
EJB API раньше был нереально перегружен. Но сейчас его сильно упрастили за счет IoC и аннотаций.
Spring более прямолинейный, чем EJB. Но за годы развития он на столько оброс всякой фигней, что тоже надо понимать как всё устроено, прежде чем использовать. Ну, и действительно ли нужны EJB сказать сложно. Нужно знать и понимать требования к проекту.
Отказоустойчивость? Масштабирование?

bob_jЯ имел в виду, что приложение, подготавливающее заказанный архив и делающее всякие другие операции на сервере, должно быть многопоточным.
ОК. Это всегда принимается по-умолчанию для любого серверного приложения. Поэтому утверждать очевидное не стоит.

bob_jпросто давно хотел разобраться в Java EE и этот случай показался мне весьма подходящим.
Ну, вот с этого надо было начинать. Если есть желание изучить JEE, то берем и применяем полный стэк JEE: JMS, Session Beans, JPA, CDI.

bob_jЕсли все же отказаться от Java EE, то как правильно сделать связь между веб-приложением, реализованном на РНР, и серверной частью, которая может быть реализована на чем угодно? У меня большой пробел в знаниях именно об этом моменте. Как организовывается взаимодействие? До этого писал простые сайты на Друпале и с помощью разных фреймворков, но там все решалось внутри самой CMS, или на уровне модели которая работала с БД, но не привлекала ни каких других сторонних ресурсов.
Концептуально разницы никакой нет на чем это писать.
Пришел клиент его состояние живет в сессии - реализация есть везде
Захотел клиент забрать файлы - создали событие, положили в очередь - реализация есть везде
Обработчик событий в очереди параллельными потоками разгребает события, пакует файлы, дергает 1С. В общем, запускат бизнес-процесс. - релизация есть везде.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775966
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЗахотел клиент забрать файлы - создали событие, положили в очередь - реализация есть везде Я что-то туплю в последнее время, сказалась бессонная ночь :( , не соображу как поисковый запрос гуглу сформулировать. Очередь обработки событий, так? Вы это имели в виду? Подскажите пожалуйста, где можно глянуть?
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775981
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jЯ что-то туплю в последнее время, сказалась бессонная ночь :( , не соображу как поисковый запрос гуглу сформулировать. Очередь обработки событий, так? Вы это имели в виду? Подскажите пожалуйста, где можно глянуть?
Java, PHP или теория? Google -> Message Queue, Event Queue, Asynchronous processing
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775987
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем городить такие сложности?
всё это решается через простейший сайт на jsp, если хочется использовать java.
если требуется связь с 1с - то тут отдельная проблема (не зависит от того на чем реализовано)
если нужна полная асинхронность то можно использовать websocket.
в общем задача - простейший интернет-магазин
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38775995
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJava, PHP или теория?Наверное все, и первое и второе и третье. Чтобы определиться на чем все таки делать.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776006
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он не знает что он хочет даже на ПХП
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776008
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадязачем городить такие сложности?
всё это решается через простейший сайт на jsp, если хочется использовать java.
если требуется связь с 1с - то тут отдельная проблема (не зависит от того на чем реализовано)
если нужна полная асинхронность то можно использовать websocket.
в общем задача - простейший интернет-магазин
По большому счету действительно магазин. Просто мне не приходилось прежде связывать сайты с приложениями не имеющими прямого отношения к вебу (1С в данном случае) и меня как раз этот механизм взаимодействия и интересует, а Java EE, как мне показалось, предлагает именно это решение.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776052
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитав все выше написанное я хочу немного переформулировать и уточнить вопрос.

Повторюсь. Посетитель через сайт выбирает список файлов, оплачивает его и скачивает. Сайт может быть хоть на РНР, хоть на Python, хоть на Java. Это внешняя сторона, то, что видно посетителю. Подготовку файлов должен выполнять не скрипт, который крутится под управлением веб-сервера, а некое независимое приложение, назовем его упаковщик , которое ждет информацию о том, что на сайте произошло событие - пользователь заказал файлы. Получив уведомление о сообытии упаковщик обращается через какой-то интерфейс к 1С, или к API банка и получает подтверждение оплаты (по большому счету 1С тоже может сгенерировать событие, которое упаковщик должен слушать). После этого упаковщик подготавливает архив запрошенных файлов, кладет их в определенное место и генерирует событие готовности к отправке. Веб приложение должно обработать это событие, отправляя покупателю заказанные файлы.

Собственно, мне нужно организовать обработку событий. Вот этот момент мне сейчас и не понятен. Как фактически независимые приложения заставить слушать друг друга и обрабатывать возникающие события. Я думал, что Java EE как раз и есть средством для решения данной проблемы, но получается, что Java тут как бы и не при чем.

Резюме
Мне нужно разобраться с созданием и обработкой событий. Подскажите, где можно найти документация, примеры, спецификация и т.д. по данной теме?
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776061
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С логикой вам нужно разобраться.
Т.к. файлы - неисчерпаемый ресурс, то упаковщик должен включаться в работу тогда, когда заказ уже оплачен, а не тогда, когда он (только) сделан.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776062
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jПо большому счету действительно магазин. Просто мне не приходилось прежде связывать сайты с приложениями не имеющими прямого отношения к вебу (1С в данном случае) и меня как раз этот механизм взаимодействия и интересует, а Java EE, как мне показалось, предлагает именно это решение.

У 1С есть свои решения для создания "витрин" 1С.
Поищите на их сайте.
Там даже есть свой интернет-магазин.
Возможно даже ничего и писать не надо будет.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776064
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_j,
С 1 и начни. Либо через файлы либо СОМ либо веб сервис.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776073
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jМне нужно разобраться с созданием и обработкой событий. Подскажите, где можно найти документация, примеры, спецификация и т.д. по данной теме?
https://www.google.com/search?q=PHP async tasks
https://www.google.com/search?q=PHP async jobs
https://www.google.com/search?q=PHP message queue
https://www.google.com/search?q=Java async tasks
https://www.google.com/search?q=Java async jobs
https://www.google.com/search?q=Java message queue
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776083
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovС логикой вам нужно разобраться.
Т.к. файлы - неисчерпаемый ресурс, то упаковщик должен включаться в работу тогда, когда заказ уже оплачен, а не тогда, когда он (только) сделан.Да, Вы правы, но это на данном этапе не важно. Важно то, как организовать обработку событий. Я просто не представляю что именно мне надо прочитать.

По совету Blazkowicz пойду читать Message Queue, Event Queue, Asynchronous processing.

1С приведен как пример всем известной программы. Я вообще склоняюсь к API банка. Т.е. этот момент тоже сейчас не важен. Это просто черный ящик подтверждающий оплату.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776086
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczbob_jМне нужно разобраться с созданием и обработкой событий. Подскажите, где можно найти документация, примеры, спецификация и т.д. по данной теме?
https://www.google.com/search?q=PHP async tasks
https://www.google.com/search?q=PHP async jobs
https://www.google.com/search?q=PHP message queue
https://www.google.com/search?q=Java async tasks
https://www.google.com/search?q=Java async jobs
https://www.google.com/search?q=Java message queue

Спасибо большое. Буду разбираться.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776092
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда это:
если "клиент просит архив" и "заказ не оплачен"
то "попросить подождать"
иначе
или "отдать содержимое архива"
или "отдать страничку со ссылкой на архив"

"По-моему так" (ц) Винни-Пух
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776144
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob_jСпасибо большое. Буду разбираться.
Хочу сраз рассказать один момент. Возможно его сразу так не ведзе разъясняют.
Концепции Async Job от Message Queue - в плане реализации внутри слабо чем отличаются. Но есть важное различие в том как они используются.
Async Job - подразумевает что нужно выполнить фоновую задачу. И вам всё равно как именно это произойдёт. Т.е. вы указываете "системе" запустить некий код асинхронно. А "система" за вас создаёт поток, помещает код в очередь и вам лишь предоставляет API для того чтобы узнать результат асинхронного выполнения.

Message Queue отличатеся тем, что у вас на руках ещё и контроль над тем очередью. Вы заботитесь о том чтобы туда поместить событие и потом его вычитать. У вас больше контроля над состоянием очереди. И, зачастую, у вас есть способы её, например, персистить.

То есть принцип работы один и тот же. Просто в материалах будет разное описание и разные API. Async - более простой для изучения и использованя. Message Queue - больше даст понимания что как устроено и что с этим можно делать и какие вообще бывают сценарии.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776170
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо.
...
Рейтинг: 0 / 0
Помогите с выбором технологии
    #38776332
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут надо сначало разобраться с задачей - если требуется полная автоматизация (абсолютно полная)
то единственная проблема - это связь с 1с. а имено фиксация факта прихода денег.
тут надо знать как это делается в конкретном случае- если сидит бух и вводдит ручками - то проще в 1с вставить кнопку и по ней осуществлять запуск процессов проверки оплаты и прочее.
а потоки и прочее в данном случае это для самообразования. потому как выйгрыша от их применении нет, даже пройгрыш.
всё упрётся в быстродействии файловой системы. и чем больше потоков с ней будутработать - тем медленнееситема будет в целом.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с выбором технологии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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