1

我一直在用silverlight 4研究RIA服務並考慮使用它。從ASP切換到Silverlight讓我對數據驅動應用程序的Silverlight成熟度產生一些擔憂。RIA服務如何提高關係數據效率?

我在看關係數據查詢。比方說,我有一個'人'的桌子和'汽車'的桌子。多輛車可以與一個人相關聯。現在,如果我使用關係數據進行查詢,則必須指定包含從服務器返回給客戶端的附加表。如下圖所示:

http://timheuer.com/blog/archive/2010/01/05/master-details-with-ria-services-and-includedresults.aspx

我有點關心效率。如果我做這樣的事情,看起來我可能會從汽車表中爲每個人行發送多行(因爲它是一對多)。但是,我可能只想要汽車的名稱而不是其他列。有一堆關係連接到其他表格的更復雜的例子可能會變得很難看。有什麼辦法可以解決這個問題嗎?我沒有看到關於定製/複雜類型或ria服務如何處理數據庫視圖的更多信息。

我的另一個想法是,如果我有關係數據自行循環將鎖定查詢。例如,如果人員鏈接到汽車並且汽車鏈接到其他表格並且該表格鏈接回到人員。它可能似乎永遠循環?

回答

2

RIA服務傳輸(或不傳輸)的數據量完全取決於您。您不需要包含所有子表數據。是的,可以編寫真正低效的數據請求,但也可以使它們最優化。

無限循環通常不會發生在ER模型中。在SQL中的表上運行聯接沒有什麼不同。

如果您真的關心最高效率(最初不太可能),那麼您可能會在服務器端使用SQL存儲過程,並使用特定參數觸發這些過程來完成繁瑣的工作。

我已經用Silverlight 3構建了幾個大型系統,現在正在與4一起工作,並且我個人現在很難回到ASP.Net。它更容易開發(一旦你知道它的怪癖),實際上很有趣:)

希望這會有所幫助。

+0

對於複雜的查詢,你通常會包括這些表,或者你只是拉外鍵ID然後調用另一個查詢(例如getNameFromID(int id))? – Adam 2010-08-19 17:14:46

+0

主要爲了防止網絡流量,我們通過id請求特定項目。如果我們要求一個項目列表(例如用於選擇目的),我們通常會返回成對的ID和顯示名稱,而不是其他項目(假設我們將在需要時根據每個項目獲取完整詳細信息)。 – 2010-08-19 19:09:44