2012-04-18 3 views
0

곧 공용 API (웹 API)를 구현해야 할 것입니다. 요청 중 하나는 동일한 작업 (예 : REST 및 SOAP)을 수행하는 여러 가지 방법을 제공해야 할 것이므로 초기 접근 방식은 이와 같습니다.공용 API 구현

는 SOAP

를 사용하여 REST와 SOAP 인터페이스에서 요청을 처리하는 일반적인 외관 클래스의 컨트롤러를 확인합니다 REST 에 대한 컨트롤러을하기 위해선, 외관 클래스의 내부 접근을 담당 할 것이다 시스템 (직접 또는 간접적으로 돔 DAO가 사용될 수 있습니다 ... 등).

코드는 Java로 작성되며, 대부분 다른 기술자들 사이에서는 Spring MVC를 사용합니다.

여기에 질문이 있습니다. 너에게 이해가 되니? 너무 불합리한가? 과도한 건축물을 여기에서 느끼십니까? 모든 제안/경험/모범 사례?

감사합니다.

+1

나는 REST 요청과 SOAP 요청을 위해 spring-mvc 컨트롤러를 사용한다. 서비스 클래스는 컨트롤러에서 똑같다. 컨트롤러에서 REST 요청과 SOAP 요청을 구별하는 다른 경로를 사용한다. – Tom

+0

버전 관리 (다른 API 버전은 어떻게 처리하나요?) –

+0

죄송합니다. 실제로 코멘트를 잘못 입력했는데 실제로 spring-mvc와 spring-ws를 사용하므로 비누 요청은 컨트롤러가 아닌 내 엔드 포인트 클래스로 이동합니다. – Tom

답변

1

당신의 접근 방식은 나에게 의미가 있습니다. Spring MVC는 REST 엔드 포인트를 처리하여 XML 및/또는 JSON을 받아 들일 수있다. SOAP의 경우 Spring-WS 또는 Apache CXF과 같은 추가 프레임 워크가 필요합니다.

MVC 패턴을 사용하는 경우 실제 작업을 컨트롤러에 주입 된 다른 bean에 위임하여 가능한 한 컨트롤러를 작게 유지하는 것이 가장 좋습니다. 이러한 다른 빈은 종종 서비스 기반 또는 저장소 유형을 따릅니다 (도메인 기반 디자인 용어 사용). 이러한 서비스 및 저장소 Bean은 REST 및 SOAP 끝점에서 재사용 할 수 있습니다. 제 3 단락에서 이것이 의미하는 바라고 생각합니다. 그렇다면 올바른 길을 가고 있습니다.

1

이 정보가 적절한가요?

예.

너무 불합리한가요?

No.

여기에 오버 아키텍처가 있습니까?

모든 제안/경험/우수 사례가 있습니까?

수행중인 작업을 설명하는 디자인 패턴을 찾을 수 있습니다. 예를 들어 GoF adapter pattern은 "컴퓨터 프로그래밍에서 어댑터 패턴 (래퍼 패턴 또는 단순히 래퍼라고도 함)은 클래스의 인터페이스 하나를 호환 가능한 인터페이스로 변환하는 디자인 패턴입니다." App Controller (adaptee)는 REST와 SOAP의 두 인터페이스에서 특수화 (어댑터)되어 있습니다.