2012-10-24 5 views
1

가 최근에 내가 아키텍처 이벤트 구동 조언

Spring3.1

를 사용하여 이벤트 기반 아키텍처에 내 응용 프로그램 작업을 업그레이드 한 당신은 어떻게 생각하십니까 궁금해했다 :

  1. 각 클래스의 DAO 인스턴스를 가지고있는 (정규 방도)

  2. DAO (jms/channels/whatever)를 통해 메시지를 보내야하며 메시지 내용은 내가해야 할 일의 지침이 될 것입니다. (DB에 레코드 삽입/업데이트/etc)

느슨한 커플 링 매너에서 어떻게 2 번 방식이 좋습니까?

어쩌면 잔인합니까?

또는 다른 제안이나 조언을 환영합니다.

감사합니다. 레이.

+0

2 실제로 별개의 구성 요소로 분할해야하고 DAO 모듈을 사용하는 두 개 이상의 모듈체가 있거나 성능상의 이유로 (다소 시나리오가 아님) 클러스터 된 DAO 집합 (및 공유 된 데이터베이스)이있는 경우에만 의미가 있습니다. –

+0

"DAO 모듈을 사용하는 모듈이 두 개 이상 있습니다." 내 프로젝트에서 특정 클래스 또는 구성 요소를 참조하는 모듈? 같은 DAO를 사용하는 몇 가지 클래스가 있기 때문입니다. – rayman

+0

모듈이란 별도의 애플리케이션을 의미합니다. A와 B가 별도의 응용 프로그램이 아닌 경우 왜 메소드 호출 대신 메시지를 보냅니 까? 단일 응용 프로그램에서 느슨한 copuling 들어, DI 컨테이너 (봄, Guice, CDI) 일반적으로 충분하다. 질문에 나열된 작업에 메시지를 사용하려면 매우 구체적인 필요 또는 사용 사례가 있어야합니다. –

답변

3

느슨한 결합은 응용 프로그램 (메시지 대기열 등)에 더 많은 구체적인 레이어를 "추가"하는 것을 의미하지 않습니다. "서비스"구현 클래스가 인터페이스를 통해 DAO 레이어와 상호 작용하면 (스프링 DAO 빈 주입은 마음에 드는 완벽한 사용 사례이다), 당신은 추상적 수준에서 거의 작동한다.

그런 다음 메시지를 다른 서비스에 게시하는 메시징 클라이언트로 구체적인 DAO 클래스 삽입을 스왑하면 코드는 이전과 같이 중요한 변경없이 계속 작동합니다. 물론, 블로킹/비 블로킹 접근 사이에는 항상 단절이 있지만 좋은 추상화로는 해결할 수없는 것은 없습니다. 제 제안은 새로운 레이어를 추가하는 것과는 대조적으로 응용 프로그램의 초기 초안/리펙터를 작성하는 Guice와 같은 프레임 워크/라이브러리를 조사하는 것입니다. 그렇다면 어떤 시점에서 비 차단 DB 호출이 갈 길이 멀다고 생각하면 쉽게 구현할 수 있습니다. 그 논리를 선행하면 기술 부채가 증가 할뿐입니다.

관련 문제