經過IObservables試驗後,我決定測試它們是否通過消息總線處理傳入消息。基本上,我得到一個IObservable<Request>
和Request
包含回覆答覆的必要功能。拆分IObservable,然後在處理後合併?
在處理過程中,我必須將數據反序列化並將其從Request轉換爲Command對象,該對象包含實際需要執行的操作。命令與請求無關。
反序列化後,我將其轉換爲正確的響應,但是爲了發送響應,我需要原始的Request對象。我想在保持高代碼可讀性的同時嘗試實現這一點。到目前爲止,我已經使用擴展方法和lambda表達式得到以下(其中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在這裏。 – 2010-03-01 17:15:41