웹 서비스 대 EJB 대 RMI, 장단점?
모든 작업이 거기에서 완료되면 내 웹 서버가 빠르게 과부하됩니다. 데이터를 처리하기 위해 그 뒤에 두 번째 서버를 설치하겠습니다.
RMI에 비해 EJB의 장점은 무엇입니까? 아니면 그 반대의 경우도 마찬가지입니까?
웹 서비스 (SOAP, REST)는 어떻습니까?
EJB는 RMI 위에 구축됩니다. 둘 다 Java 클라이언트와 Bean을 의미합니다. 클라이언트를 다른 것으로 작성해야하는 경우 (예 : .NET, PHP 등) 웹 서비스 또는 HTTP 또는 HTTP 또는 SOAP를 통한 XML과 같은 플랫폼에 구애받지 않는 유선 프로토콜을 사용하는 다른 서비스를 사용하십시오.
RMI를 선택하면 Java EE EJB 앱 서버가 필요하지 않습니다. 클라이언트와 서버 JVM을 동기화 상태로 유지해야합니다. 서버를 업그레이드하지 않고는 클라이언트를 업그레이드 할 수 없습니다. EJB 앱 서버가 제공하는 모든 서비스 (예 : 연결 풀링, 이름 지정 및 디렉터리 서비스, 풀링, 요청 큐잉, 트랜잭션 등)를 작성해야합니다.
RMI는 생각할 때 매우 낮은 수준입니다. CORBA로 돌아가는 이유는 무엇입니까?
더 나은 선택은 EJB 3.0과 Spring입니다. POJO 개발을 좋아하는지, ORM 및 JPA 외에 관계형 기술을 원하는지 여부에 따라 다릅니다.
Java EE 앱 서버 (예 : WebLogic, WebSphere) 비용을 지불하거나 오픈 소스 서버 (JBOSS, Glassfish 및 OpenEJB 및 ActiveMQ)를 사용하거나 Spring을 고수하여 Tomcat, Jetty, Resin 또는 기타 서블릿에 배포 할 수 있습니다. / JSP 엔진.
Spring은 지속성 (Hibernate, iBatis, JDBC, JDO, JPA, TopLink), 원격 (HTTP, Hessian, Burlap, RMI, SOAP 웹 서비스) 등 기술에 구애받지 않는 다양한 선택을 제공합니다.
EJB 3.0은 많은 공급 업체의 사양입니다. Spring은 Spring Source에서만 가질 수 있습니다.
나는 Spring 을 추천 할 것이다 . 매우 견고하고 견인력이 많으며 아무데도 가지 않습니다. 모든 옵션이 열려 있습니다.
웹 서비스는 이론적으로 훌륭하지만주의해야 할 몇 가지 문제점이 있습니다.
- 지연 시간. 파울러의 분산 객체에 대한 첫 번째 법칙 : "하지 마세요!" 많은 세분화 된 분산 SOAP 서비스로 구성된 아키텍처는 우아하고 아름답고 당밀처럼 느립니다. 배포하기 전에 신중하게 생각하십시오.
- XML에서 객체로 마샬링하는 것은 클라이언트가 플랫폼에 구애받지 않는 프로토콜을 말할 수 있도록 허용하는 것 외에 비즈니스 가치를 제공하지 않는 CPU주기를 소비합니다.
- SOAP는 매일 점점 더 부풀어지고 복잡 해지는 표준이지만 많은 도구 지원이 있습니다. 공급 업체는 ESB 판매를 촉진하는 데 도움이되기 때문에이를 좋아합니다. REST는 간단하지만 잘 이해되지는 않습니다. 도구에서 지원하지 않습니다.
Spring의 웹 서비스 모듈은 매우 훌륭하지만 이러한 방식으로 배포 할 때는주의해야합니다. POJO 서비스 인터페이스 측면에서 작성하십시오. 이를 통해 원하는 개념적 격리를 얻고 마지막 순간까지 배포 선택을 연기하며 첫 번째 생각이 제대로 수행되지 않으면 마음을 바꿀 수 있습니다.
EJB와 RMI 사이에서 EJB는 확실히 더 좋을 것입니다. RMI가 가지고있는 모든 것과 컨테이너를 통해 훨씬 더 많은 것을 가지고 있습니다 (객체 풀링, 트랜잭션 관리 등).
EJB와 웹 서비스 사이에서 웹 서비스는 향후 Java가 아닌 앱에서 호출 할 수 있도록하려는 경우 더 많은 이식성을 제공합니다. EJB는 웹 서비스로 "즉시 사용할 수없는"트랜잭션 관리 및 풀링과 같은 기능을 다시 제공합니다.
개인적으로 내가 그것을하고 있다면 아마도 EJB 나 유사한 원격 객체 프레임 워크를 사용할 것입니다 (봄 원격도 떠 오릅니다). 자바가 아닌 앱에서 객체를 호출 할 수있는 기능이 필요한 경우 필요에 따라 언제든지 간단한 웹 서비스 프록시를 사용하여 EJB를 표시 할 수 있습니다.
Re : 웹 서비스 (SOAP, REST) 백엔드 서버가 공개적으로 노출되지 않을 경우 SOAP / REST와 같은 플랫폼 독립적 웹 서비스 인터페이스를 사용하여 이점을 얻지 못합니다.
실제로 원격 호출을 통해 데이터를 래핑하는 XML 태그에 의해 추가 된 모든 오버 헤드로 인해 패널티가 발생합니다. XML을 Java 객체로 마샬링 및 언 마샬링하는 데 따르는 히트는 말할 것도 없습니다.
분산 호출에는 RMI / EJB까지도 일정 수준의 직렬화가 필요하지만 사람이 읽을 수있는 XML로 직렬화 할 때 가격이 더 높습니다.
Java에서 원격 호출을 전혀 코딩 할 필요가 없을 수도 있습니다 . mod_jk 또는 mod_proxy를 사용하여 여러 Java 서버에서로드 균형을 조정하도록 구성된 일반 아파치 httpd 인스턴스로 서비스를 앞당길 수 있습니다.
이러한 모듈은 tomcat / jetty와 같은 서블릿 컨테이너 또는 jboss / glassfish와 같은 ejb 컨테이너간에로드 균형을 조정하는 데 사용할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/2013793/web-services-vs-ejb-vs-rmi-advantages-and-disadvantages
'IT박스' 카테고리의 다른 글
열 이름 목록을 얻는 방법 (0) | 2021.01.06 |
---|---|
인덱스로 NSMutableDictionary의 개체에 액세스 (0) | 2021.01.06 |
FileStream 및 폴더 생성 (0) | 2021.01.06 |
dict 문자열 출력을 멋지게 포맷하는 방법 (0) | 2021.01.06 |
C # 구조체가 변경 불가능한 이유는 무엇입니까? (0) | 2021.01.06 |