2012-08-02 3 views
3

여기에이 일이 :DDD 및 Node.js : 비동기 콜백이있는 저장소를 사용하는 것이 좋습니다.

  • 하는 클라이언트가 저장소에 사용되는 지속성 메커니즘을 인식하지 않아야
  • 말, 지속성 저장소로 MongoDB를 가진 저장소를 구현, 값을 검색하는 비동기 통해 수행 될 때, -callbacks
  • sync 호출은 여전히 ​​콜백을 사용하여 구현 될 수 있지만 async-call은 콜백을 사용하여 구현되어야합니다. (또는 선물 등,하지만 거기에 가고 싶지 않다.)

내게는 구현이 동기 적이기는하지만 인터페이스에 콜백이 정의되어 있어야 함을 의미합니다. 예 :/D 같은 필요가 영속 계층에서 오류보고 주로 발생 C/U에 대한

var repo = { 
    getById: function(id,callback){ 
     mongoose.findOne({_id:id},callback); 
    } 
} 

IMHO :

var repo = { 
    cache: {}, 
    getById: function(id,callback){ 
     callback(null,this.cache[id]); 
    } 
} 

이 때문에 내가 좋아하는 뭔가 곧이 변경 (것) 수 .

요약 : 비동기 콜백을 사용하는 저장소 (실제로는 관련이 없지만 Nodejs)를 정의하는 것이 가장 좋습니다.

답변

1

주변 응용 프로그램 코드의 나머지 부분이 비동기이면 좋은 사례라고 생각합니다. 리포지토리는 IO 바운드이며 호출 스레드 차단을 유지하는 데 아무런 의미가 없으므로 기술적 인면에서 좋은 방법입니다. 문제는 비동기 콜백이 continuation-passing style이되어 대부분의 언어에서 학습 곡선과 마찰을 유발한다는 것입니다.

+0

감사합니다. 연속 통과 스타일을 사용하여 (노드라고 불렀다는 것을 몰랐다.) 노드를 통해, 비록 약간의 호출이 가장 복잡하기는하지만 때로는 성가시다. –

관련 문제