문제

Session Façade Core J2EE 패턴의 장점과 단점은 무엇입니까?

그 뒤에 숨겨진 가정은 무엇입니까?

이러한 가정이 특정 환경에서 유효한가요?

도움이 되었습니까?

해결책

Session Facade는 환상적인 패턴입니다. 실제로는 Business Facade 패턴의 특정 버전입니다.아이디어는 비즈니스 기능을 TransferMoney(), Withdraw(), Deposit()...과 같은 개별 번들로 묶는 것입니다.따라서 UI 코드는 낮은 수준의 데이터 액세스나 걱정할 필요가 없는 기타 세부 정보 대신 비즈니스 운영 측면에서 사물에 액세스합니다.

특히 Session Facade의 경우 - Session EJB를 사용하여 비즈니스 Facade로 작동합니다. 이는 모든 J2EE 서비스(인증/권한 부여, 트랜잭션 등)를 활용할 수 있는 좋은 이유입니다.

도움이 되길 바랍니다...

다른 팁

Session Facade 패턴의 주요 장점은 J2EE 애플리케이션을 비즈니스 기능별로 논리적 그룹으로 나눌 수 있다는 것입니다.Session Facade는 UI에서 POJO에 의해 호출됩니다(예:비즈니스 대리인), 적절한 데이터 액세스 개체에 대한 참조가 있습니다.예:PersonSessionFacade는 PersonBusinessDelegate에 의해 호출된 다음 PersonDAO를 호출할 수 있습니다.PersonSessionFacade의 메소드는 최소한 CRUD 패턴(생성, 검색, 업데이트 및 삭제)을 따릅니다.

일반적으로 대부분의 Session Facade는 무상태 세션 EJB로 구현됩니다.또는 트랜잭션에 AOP를 사용하는 Spring 영역에 있는 경우 트랜잭션 관리자의 모든 조인 포인트가 될 수 있는 서비스 POJO를 생성할 수 있습니다.

SessionFacade 패턴의 또 다른 장점은 약간의 경험을 가진 J2EE 개발자라면 누구나 즉시 이해할 수 있다는 것입니다.

SessionFacade 패턴의 단점:이는 J2EE 1.4 사양의 제한에 의해 제한되는 특정 엔터프라이즈 아키텍처를 가정합니다(이러한 비판에 대해서는 Rod Johnson의 책 참조).가장 치명적인 단점은 필요 이상으로 복잡하다는 것입니다.대부분의 기업에서는 편물 애플리케이션의 경우 서블릿 컨테이너가 필요하며 웹 애플리케이션의 스트레스 대부분은 HttpRequests 또는 데이터베이스 액세스를 처리하는 계층에 있습니다.결과적으로 EJB 컨테이너와 별도의 프로세스 공간에 서블릿 컨테이너를 배포하는 것은 가치가 없어 보입니다.즉.EJB에 대한 원격 호출은 이득보다 더 많은 고통을 야기합니다.

Rod Johnson은 Session Facade를 사용하려는 주된 이유가 컨테이너 관리 트랜잭션을 수행하는 경우라고 주장합니다. 이는 Spring과 같은 최신 프레임워크에서는 필요하지 않습니다.

그는 비즈니스 로직이 있다면 POJO에 넣으라고 말합니다.(저도 이에 동의합니다. 세션 EJB를 구현하는 것보다 객체 지향적인 접근 방식에 더 가깝다고 생각합니다.)http://forum.springframework.org/showthread.php?t=18155

대조적인 주장을 듣게 되어 기쁩니다.

J2EE와 관련된 어떤 것에 대해 이야기할 때마다 사람들이 어떤 식으로든 가정하는 이면에는 항상 수많은 가정이 있어 혼란을 야기하는 것 같습니다.(아마도 질문을 더 명확하게 할 수 있었을 것입니다.)

(a) EJB 사양을 통해 엄격한 의미에서 컨테이너 관리 트랜잭션을 사용한다고 가정하면

세션 파사드는 좋은 아이디어입니다. 왜냐하면 세션 파사드는 더 높은 수준의 애플리케이션 트랜잭션 관리를 제공할 수 있도록 낮은 수준의 데이터베이스 트랜잭션을 추상화하기 때문입니다.

(b) 세션 파사드의 일반적인 아키텍처 개념을 의미한다고 가정하면 -

서비스와 소비자를 분리하고 이에 더해 친숙한 인터페이스를 제공하는 것이 좋습니다.컴퓨터 과학은 '간접 레이어를 추가'하여 많은 문제를 해결했습니다.

Rod Johnson은 "원격 인터페이스가 있는 SLSB는 RMI를 통해 구축된 분산 애플리케이션을 위한 매우 우수한 솔루션을 제공합니다.그러나 이는 소수의 요구 사항입니다.경험에 따르면 요구 사항에 따라 강제되지 않는 한 분산 아키텍처를 사용하고 싶지 않은 것으로 나타났습니다.필요한 경우 공동 배치된 좋은 개체 모델 위에 원격 외관을 구현하여 원격 클라이언트에 서비스를 제공할 수 있습니다." (Johnson, R "EJB 없는 J2EE 개발" p119.)

(c) EJB 사양(특히 세션 파사드 구성 요소)이 좋은 디자인의 지형을 방해한다고 가정하면 다음과 같습니다.

Rod Johnson은 "일반적으로 Spring은 EJB보다 더 유능한 선언 거래 관리를 제공하기 때문에 Spring Application에서 로컬 SLSB를 전혀 사용할 이유가 많지 않습니다. CMT는 일반적으로 로컬 SLSB를 사용하는 주요 동기입니다.따라서 EJB 레이어가 전혀 필요하지 않을 수도 있습니다." http://forum.springframework.org/showthread.php?t=18155

웹 서버의 성능과 확장성이 주요 관심사이고 비용이 문제인 환경에서는 세션 퍼사드 아키텍처가 덜 매력적으로 보입니다. 데이터베이스와 직접 대화하는 것이 더 간단할 수 있습니다(이것은 계층화에 관한 것이지만).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top