Java - Framework для "APIzize" любого класса и сделать его доступным по TCP? - PullRequest
0 голосов
/ 25 августа 2011

У меня есть приложение, в котором и бэкэнд, и веб-интерфейс встроены в Java.Бэкэнд предоставляет некоторые функции, такие как доступ к БД и т. Д. Хотя внешний интерфейс, встроенный в Struts, вызывает эти функции.

Я ищу способ сделать любой класс Java легко вызываемым по TCP, в идеале, на мой взгляд, этоможно сделать, расширив определенный класс, скажем:

public class MyClass extends ThisIsAnAPI

, сделав таким образом все публичные функции, вызываемые по сетевому протоколу.

С такой структурой интерфейс может быть легкореализован на других языках, таких как Ruby (On Rails), путем отправки сетевых запросов к интерфейсным API, написанным на Java и предоставляемым по TCP.

Есть какие-нибудь советы?

Ответы [ 5 ]

1 голос
/ 25 августа 2011

Если вы, скорее всего, перейдете на пользовательский интерфейс JavaScript / Ajax, я бы потратил время на то, чтобы представить бэкэнд в качестве сервисов RESTful. Использование JAX / RS - это несколько строк кода, несколько аннотаций и интерфейс.

Если вы используете чистую Java, в наши дни довольно просто превратить POJO в удаленно вызываемый EJB-компонент: всего лишь пара аннотаций.

Это может показаться излишним, но с точки зрения усилий и затрат (учитывая бесплатный сервер приложений, такой как WebSphere CE или JBoss), это не так уж и сложно. Однако, если вы не обращаетесь к EJB, вам нужно рассмотреть две большие проблемы:

  1. Security. У вас есть некоторые TCP-вызываемые сервисы. Насколько чувствительны эти услуги? Нужна ли им аутентификация и авторизация? Вы слишком легко можете открыть конфиденциальные базы данных для всей компании или даже для Интернета.
  2. Устойчивость и масштабирование. Как вы будете управлять сценариями сбоев? EJB-объекты, предоставляемые через RMI / IIOP, можно кластеризовать, и, следовательно, вы можете масштабировать и обрабатывать ошибки. Если вы начнете с технологии, способной сделать это, даже если вам сейчас не нужна эта функциональность, у вас хорошие перспективы на будущее.
0 голосов
/ 25 августа 2011

Поскольку несколько человек упомянули RMI, вы можете посмотреть пружину, которая поддерживает это, и я сам успешно использовал. http://static.springsource.org/spring/docs/2.0.x/reference/remoting.html

0 голосов
/ 25 августа 2011

Попробуйте Hessian , который является протоколом низкого уровня TCP, также имеющим привязки для нескольких других платформ, так что вы получите C # / C ++ / Flash / ... бесплатно.Я думаю, что с ним немного проще работать по сравнению с RMI.

Если вам нужно больше переносимости в будущем, рассмотрите возможность использования POJO через SOAP / REST (большинство стеков WS имеют такую ​​возможность, требуется всего несколько дополнительных аннотаций).если есть).

0 голосов
/ 25 августа 2011

Возможно, вы захотите взглянуть на JMS . Это довольно высокий уровень и простой в использовании, но вам нужно запустить брокер сообщений. Это немного другая архитектура для двухточечной связи.

0 голосов
/ 25 августа 2011

Я бы начал с RMI, которая предназначена для этого. Вы создаете интерфейс, который использует клиент, а сервер реализует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...