2014-05-09 3 views
0

우리는 시스템에 일련의 내부 서비스를 호출하는 공개적으로 액세스 할 수있는 서비스 세트를 제공 할 계획이며 모두 ServiceStack을 사용하여 구현됩니다.ServiceStack 다중 계층 아키텍처에서 사용할 통신 프로토콜

제 질문은이 교차 서비스 통신에 대한 최상의 방법 (성능, 안정성 및 코드 유지 관리 측면에서)은 무엇입니까?

예. 내 공공 ​​서비스가 ServiceStack 클라이언트를 사용하여 내부 서비스를 호출하거나 Rabbit/Redis 메시징 시스템을 사용해야합니까? 후자의 경우 두 개 이상의 내부 서비스를 비동기 적으로 호출 할 수 있으며 두 가지 모두의 응답을 기다릴 수 있습니까?

답변

1

단방향 통신의 경우 Messaging offers a lot of benefitsRabbit MQ Broker을 설치하는 경우 Rabbit MQ이 더 많은 산업 강도 옵션을 제공합니다.

요청이 일시적이며 두 끝점 모두 가동되어야하는 요청/응답 서비스의 경우 입력 된 C# Service Clients은 덜 움직이는 부분과 더 많은 직접/디버그 가능 지점 간 통신을 허용합니다.

고객 비동기 API의 사용하면 쉽게 예 : 병렬로 다중 호출을 만들 수 있도록 사용

:

//fire off to 2 async requests simultaneously... 
var task1 = client.GetAsync(new Request1 { ... }); 
var task2 = client.GetAsync(new Request2 { ... }); 

//additional processing if any... 

//Continue when first response is received 
var response1 = await task1; 

//Continue after 2nd response, if it arrived before task1, call returns instantly 
var response2 = await task1; 

위의 코드는 Request1이 완료된 후, 당신은 또한 첫번째 완료 한 적 요청을 처리하기 위해 Task.WhenAny()를 사용하고 있습니다.

관련 문제