2015-01-07 9 views
0

우리는 완전한 SOA 워크샵 (Java 만 해당)이며 우리는 데이터 전송을 위해 SOAP를 사용합니다. 현재 특정 구성 요소에 대한 데이터베이스 작업을 중앙 집중화하는 과정에 있으므로 다른 구성 요소는 SOAP을 사용하여 한 응용 프로그램에서 데이터를 가져올 수 있습니다.서비스 지향 아키텍처에 대한 제안이 필요합니다.

필자의 주장은 중앙 집중화하는 것이 좋지만 데이터베이스 호출간에 비누를 추가 할 때 많은 대기 시간을 추가한다는 것이다. 직렬화 된 객체를 얻고 마샬링 오버 헤드를 줄이기 위해 RMI/EJB 유형의 구현이 필요합니다. 나는 Ejbs가 구현되고 그것을 사용하기를 좋아한다. 그러나 우리가 반환하는 데이터는 하나의 테이블에서 전혀 나오지 않으므로 데이터베이스 테이블 엔티티를 반환 할 수 없으며 데이터는 다른 20 개 이상의 테이블에서 가져온 것일 수 있습니다.

따라서 현재 시스템에는 무거운 SQL 쿼리에 매핑하기 위해 생성 된 사용자 지정 엔터티가 있습니다. (하나의 테이블과 관련 없음)

이 유형의 환경에 사용할 수 있습니까? 그렇다면 쿼리 결과를 엔티티에 매핑하는 데 사용할 수있는 라이브러리가 있습니까?

불행히도 우리 사내 시스템은 매우 오래되었고, 우리는 자바 1.4를 사용합니다.

답변

1

이것은 수행 할 수 있지만 고통 스러울 것입니다. EJB 3.0 엔티티 bean이 작성된 이유가있었습니다. 이런 종류의 복잡한 요구 사항을 다루는 것은 오래된 2.x 엔티티 빈 xml 파일을 통해 매핑하기가 정말 어렵 기 때문입니다.

데이터베이스 컨텐츠를 표현하기 위해 새로운 SOA 계층을 실제로 구축하는 경우, 거의 10 년 동안 쓸모없는 기술로 왜이 작업을 수행 할 수 있습니까?

EJB 2.x로 이것을 빌드 한 다음 RMI/EJB를 사용하면 다른 모든 응용 프로그램을 이와 동일한 구형 기술에 바인딩 할 수 있습니다. 매우 소수의 사람들이 새로운 EJB 2.1 프로젝트를 시작하려고합니다.

정직하게도 EJB 대신 서비스를 위해 SOAP을 사용하는 것이 더 좋다고 생각합니다. 적어도 당신을 쓸모없는 플랫폼에 연결시키지 않을 것입니다. 현재 모범 사례는 엔티티 전송에 REST를 선호하며 RPC 스타일의 상호 작용을 위해 SOAP를 저장하지만 데이터베이스 테이블을 SOAP 매핑으로 처리하는 데 유용한 라이브러리가 많이 있습니다.이 중 많은 라이브러리가 RDMS의 기본 기능입니다.

마지막으로이를 수행하기로 결정한 경우 먼저 테스트를 수행하십시오. SOAP 역 직렬화가 중요한 비용 요소인지 실제로 확인하기위한 테스트 프레임 워크를 작성하십시오. 네트워크 전송 비용과 비교하십시오. 이러한 엔터티가 메가 바이트 범위에 있지 않는 한 deserialization은 전체 응용 프로그램 시간의 아주 작은 부분 일 것입니다.

+0

'EJB 3.0 엔티티 bean이 작성된 이유가 있습니다. 이런 종류의 복잡한 요구 사항을 다루기 때문에 하나 이상의 테이블에있는 컬럼이 하나의 엔티티에 매핑된다는 것을 의미합니까? – Zeus