Являются ли серверы приложений (с EJB) единственным способом взаимодействия клиента и сервера Java EE?
-
03-07-2019 - |
Вопрос
Представьте себе клиент-серверное ERP-приложение Java, обслуживающее до 100 одновременных пользователей, как веб-клиентов, так и клиентов Swing.Для устойчивости мы можем использовать Persistence API и Hibernate.Но когда дело доходит до связи клиент/сервер, есть ли у нас действительно альтернатива использованию AS с EJB для снижения затрат на программирование удаленной связи?
Кажется, это очень сложное решение — добавить EJB и сервер приложений только для удаленного управления.Существует также стандартный способ использования RMI, но кто сегодня хочет все кодировать самостоятельно...
Я знаю, что вы получите множество функций бесплатно с AS в дополнение к удаленной части.И, возможно, это правильный путь.Но существуют ли на самом деле какие-либо другие альтернативы AS (с низкой стоимостью программирования) для обеспечения связи клиент/сервер для корпоративного приложения?
Решение
Лично я считаю Seam идеальным решением проблемы, которой у меня нет, но помимо этого, существует множество вариантов, и для большинства из них используется Spring:
- РМИ;
- Гессен (двоичный протокол на основе HTTP);
- HTTP-вызовы (сериализация Java через HTTP);
- Веб-сервисы;или
- Даже JMS.
Преимущество методов удаленного взаимодействия на основе HTTP заключается в том, что они легко подключаются к моделям безопасности Spring.Плюс тогда вы получите доступ к таким вещам, как перехватчики.
Другие советы
Вы можете использовать легкие рамки удаленного взаимодействия. У Spring есть несколько опций в этом разделе.
Если вы спросите меня одно слово для обоих, я предложу два. Шов или Весна. Сам я люблю Seam, но для облегченного удаленного взаимодействия Spring имеет более жизнеспособные решения и поддержку. Опять же, если ваша AS - JBoss, подумайте над Шов . р>
Сервер приложений - это довольно тяжелое решение. В зависимости от ваших требований, я постараюсь убедиться, что вы можете работать в простом контейнере сервлетов (например, Tomcat). Я считаю, что удаленное взаимодействие гораздо проще с Spring-remoting вместо этого полного EJB. Spring-remoting предоставляет абстракцию от используемой техники удаленного взаимодействия. Гессиан имеет хорошую репутацию как легкий протокол.
Хорошая вещь - иметь какую-то серверную инфраструктуру (AS или контейнер сервлета), поскольку вам не нужно так много думать обо всех проблемах низкого уровня (установление соединения, многопоточность, ...).