2011-04-18 35 views
2

我發現這是很常見的情況下,我有多個查詢/實體,我想在RIA服務中加載所有相關的,以及一次回調,處理數據一次負載全部完成。但是,我沒有看到用RIA Services完成這項工作的乾淨而簡單的方法,而沒有添加自己的樣板代碼來計算回調(如果我有三個負載,那麼在回調中有一個類變量可以增加並返回if仍然是< 3),或通過鏈接負載,這會浪費時間,因爲負載調用可能是併發的。.Net RIA服務:多個負載到一個回調

我開始認爲我的最佳選擇是創建一個單獨的,可重用的小類,稱爲「LoadGroup」,它接受多個加載查詢和回調函數,並且只在所有加載完成後才調用回調。我的問題是:我在這裏重新發明輪子嗎? RIA服務的功能是否已經基本實現了這個功能(或者設計模式比我建議的更好)?或者我應該繼續寫我自己的小班的計劃嗎?

感謝,

- 羅伯特

+0

我很驚訝,這個問題是不是很受歡迎... – gitsitgo 2013-09-26 16:12:50

回答

1

沒有鏈接機制,使您的選項設置一個主處理器是正常的路線。另一種方式來退出這個功能是簡單地暴露通過調用它封裝了所有的呼叫到一個結果,以使三個調用模型:

IQueryable<SomeType1> GetSomeType1() 
{ 
} 

IQueryable<SomeType2> GetSomeType2() 
{ 
} 

IQueryable<SomeType2> GetSomeType2() 
{ 
} 

可以返回

(模擬類)
public class SomeModel() 
{ 
    public List<SomeType1> FirstCall() 
    public List<SomeType2> SecondCall() 
    public List<SomeType3> ThirdCall() 
} 

公開爲調用:

[Invoke] 
    public SomeModel GetMultiple(IQueryable<SomeType1> first, IQueryable<SomeType2> second, IQueryable<SomeType3> third) 
+0

嗯,有趣的方法。感謝您的想法!當我說「鏈接」時,我的意思是使用lambdas作爲回調,以便第一個負載的回調調用第二個負載,第二個負載的回調調用第三個負載,...,然後是最後一個負載有真正的回調。但顯然這會消除所有併發性並減慢速度,所以它不是理想的。 – JoeCool 2011-04-18 19:47:06

+0

我以爲你打算把這些調用捆綁到一個單一的編排功能中,作爲一個組失敗或成功。這個模型更接近我們的理想。我沒有在我的Silverlight項目中使用MVVM,但實際上這只是採取了一種方法來公開一個可以在一次調用中重新生成的View Model。 – 2011-04-18 20:05:36

相關問題