2009-08-13 4 views
4

기존 RESTful API를 중심으로 wrapper을 개발 중입니다. 기본적으로 기본 API를 호출하는 사전 처리 작업과 중간에 약간의 캐시가있는 일부 사전 처리 작업을 수행해야합니다. API는 http를 통한 RESTful 액세스를 위해 특별히 고안되었습니다.로컬 http 호출을 사용하는 오버 헤드

제 질문은 API를 리팩터링해야 코드를 통해 호출 할 수 있습니다. 또는 로컬 http 호출을해야합니까? 이 두 번째 옵션은 디커플링을 증가시키기 때문에 좋지만 HTTP 요청/응답을 생성하면 성능에 심각한 영향을 미칠 수 있습니다. 나는 그 couchDB (그 api는 RESTful이고 http를 통해 액세스되는)과 같은 것을하지만 그래도 들었습니다.

+3

측정하여보십시오. – skaffman

+4

@skaffman 나는 그것을 측정 할 수 있는지 질문을하지 않았을 것이다. 내가 직접 전화를 할 수 있도록 API를 리팩토링하는 것은 내가 묻는 것과 유사한 것을 한 사람들로부터 피드백을받는 것을 피하려고 노력하는 지루한 작업이다. –

답변

4

현재 RESTful API 구현 방식에 크게 의존하기 때문에 어느 누구도이 문제에 답변 할 수 없습니다. 예를 들어, 소켓에서 수신 대기하고 HTTP 요청을 처리하는 상대적으로 간단한 C 프로그램을 작성할 수 있습니다. 다른 HTTP 메소드에 대한 응답으로 RESTful 일을 수행하면 RESTful API를 구현하고 오버 헤드가 매우 적을 수 있습니다. 기본 함수를 직접 (HTTP없이) 호출합니다. 반면에, 당신은이 비 대한, 무거운 Java EE 몬스터로 프로그램을 작성할 수 있습니다 - 그 경우 오버 헤드가 상당히 클 수 있습니다.

따라서 스카프 맨은 "측정하고보고"라고 말하기가 정확합니다. 이것은 의미있는 대답을 얻는 유일한 방법입니다.

당신이이 질문을하는 경우, 당신은 실제로 Google 규모의 문제에 직면하지 않는다는 것이 좋으므로 리팩터링이 많은 작업이되고 HTTP 요청을 차단하는 것이 쉬운 경우 그렇다면 먼저 HTTP 래퍼를 사용하여 필요한 기능을 얻고 성능 최적화에 대해 염려하는 작업 제품을 시작해야만하는 것이 좋습니다.

+0

+1 "부풀고 무거운 JEE 괴물"Javzilla! LOL –

0

리팩토링하고 싶습니다. 이전에는 RESTful API에 의해 노출 된 일부 기능을 사용했습니다. 이제 RESTful API와 래퍼에 의해 노출 된 일련의 기능을 갖게되었다. 코드를 리펙토링하여 둘 다 수행 할 수 있도록해야합니다. 코드가 합리적으로 잘 구성되어 있다면 쉽습니다.

0

의심의 여지가없는 경우 작업이 적게되는 편입니다. 래퍼를 작성하고 테스트하십시오. 필요하면 리팩토링하십시오.

2

계층화 된 시스템에 대한 REST Dissertation 섹션의 5.1.6을 참조하십시오. 실제로 설명하고있는 것은 계층화 된 아키텍처에 대한이 아이디어에 매우 적합합니다. 효과적으로 들어오는 요청을 가로 챌 수있는 HTTP 프록시를 구축하고 작업 한 후 다음 계층으로 전달합니다.