IObservables를 실험 한 후에는 메시지 버스를 통해 들어오는 메시지를 처리하도록 IObservables를 테스트하기로 결정했습니다. 본질적으로 나는 IObservable<Request>
을 얻고 Request
은 응답에 응답하는 데 필요한 기능을 포함합니다.IObservable을 분할 한 후 처리 후 결합 하시겠습니까?
처리 중 한 지점에서 데이터를 deserialize하고 Request에서 실제로 수행해야하는 내용이 포함 된 Command 개체로 변환해야합니다. 명령이 요청과 관련이 없습니다.
deserialize 한 후에 응답을 보내려면 원래의 Request 개체가 필요합니다. 나는 높은 코드 가독성을 유지하면서 이것을 시도하고 달성하기를 원한다. 지금까지 나는 얻을 확장 방법과 람다 표현식을 사용했습니다 다음 (requests
은 어디 IObservable<Request>
) :
requestProcessor = requests
.Deserialize<IdentityRequest>()
.Where(idRequest => idRequest.Address != null)
.Select(idRequest => new IdentityResponse() {Identity = identityTable[idRequest.Address.Address]})
.Serialize()
.Zip(requests, (response, request) => new {request = request, response = response})
.Subscribe(data => data.request.Respond(data.response, ObjectTypes.IdentityResponse));
Zip
기능 걸릴 시간 전에 모든 명령을 처리 할 수 있기 때문에 내 질문은 의지의 Zip
입니다 일정한 메시지 스트림이있는 경우 동일한 입력 개체 (예 : 원본 입력 및 별도 처리 입력)에서 작동합니다. 어떻게 테스트 할 수 있습니까?
더 좋은 방법이 있나요?
사용중인 프레임 워크의 버전에 따라 터플이 4.0에서 도움이 될 수 있습니다. –