我有一個(gè)類,該類調(diào)用Web服務(wù)以異步檢索數(shù)據(jù)。為了提高性能,我實(shí)現(xiàn)了客戶端緩存,該緩存檢查請(qǐng)求的數(shù)據(jù)是否在本地可用。該類返回存儲(chǔ)在緩存中的所有數(shù)據(jù),并調(diào)用Web服務(wù)以獲取剩余數(shù)據(jù)。我可以將緩存的數(shù)據(jù)返回給呼叫者,然后繼續(xù)進(jìn)行網(wǎng)絡(luò)呼叫,還是我必須進(jìn)行呼叫并返回完整的數(shù)據(jù)集?在同步環(huán)境中,我可以yield return與Tasks一起使用,并且無(wú)法實(shí)現(xiàn)異步/等待收益。我怎么解決這個(gè)問(wèn)題?
2 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
這些建議都無(wú)法完美地解決我的問(wèn)題,但可以結(jié)合使用。
首先,我使用TPL DataFlow庫(kù)創(chuàng)建了一個(gè)管道來(lái)從我的源中獲取數(shù)據(jù)。然后將結(jié)果發(fā)布到BufferBlock<T>
末尾的,作為暴露給最終用戶IObservable<T>
。這具有額外的好處,即我現(xiàn)在可以通過(guò)其他塊輕松查詢相關(guān)數(shù)據(jù)。
- 2 回答
- 0 關(guān)注
- 191 瀏覽
添加回答
舉報(bào)
0/150
提交
取消