0

最後嘗試獲得此答案。如何重新構建ASP.NET應用程序的Hibernate DAO層以將其移至Silverlight?

我有一個簡單的ASP.NET應用程序,它使用Hibernate進行數據訪問。 GUI可以調用Customer對象上的方法,如「CalculateTotalSumOfOrders()」。 延遲加載(即使它不是最優)將適用於我,並且在域對象中引用Orders和OrderLines集合時,它們將自動從數據庫中提取。

現在讓我們假設我正在將相同的應用程序重寫爲Silverlight,因爲它看起來比ASP.NET好。 因爲Silverlight客戶端在瀏覽器中運行,所以我不再能夠執行延遲加載或數據訪問。 我怎樣才能解決這個問題,而不用過多考慮用什麼樣的服務來獲取數據到Silverlight客戶端?

回答

0

你想嘗試一下與你的數據庫進行交互的服務器端應用程序,並進行延遲加載,並將其轉換爲客戶端應用程序而無需太多工作?對不起,這只是不起作用。你需要的是對你的應用程序進行重新設計。

對不起......

+0

沒關係,因爲我在那裏很早。你將如何重新構建它以最小的開銷支持ASP.NET,Silverlight和Windows客戶端? – badbadboy 2008-11-20 22:11:53

1

支持所有這些平臺的最佳選擇是使用Web服務。如果您使用的是Silverlight,您可以選擇使用許多不同的風格,.NET 2.0 Web服務(ASMX),WCF,REST,您可能需要考慮使用WCF + LINQ to SQL,該工具的演示here。這種組合也可以用於ASP.NET(如果在.NET 3.5上運行)和Windows桌面應用程序(又是.NET 3.5)。

另外一個名爲InterLinq的開源項目可能會讓你感興趣,基本上它允許你在客戶端建立LINQ to SQL查詢,然後通過WCF將它們傳輸到執行查詢並返回結果的服務器。那可以找到here。我過去曾嘗試過它,它運行得很好。

1

將支持Silverlight和Windows客戶端的一個選項是.NET 3.5 SP1中的新ADO.NET Data Services。這些是一組通過WCF界面公開數據庫模式的服務。然後,您可以使用WCF客戶端從Silverlight或Windows客戶端檢索數據。

正如@McWafflestix所說,你將無法再進行延遲加載,但在我看來,這是一件好事,因爲檢索數據現在是一個更「昂貴」的操作。

0

*

「這沒關係,因爲我很早就 那裏。你將如何重新架構它向 既支持ASP.NET,Silverlight和以最小的開銷 窗戶 客戶?」

*

我知道我在回答這個問題的方式過去的到期,總之在這裏不用。我建議你使用MVP設計模式;這將幫助您構建多個「視圖」以與您的模型配合使用。爲了確保您支持Windows客戶端,您必須使用服務層公開您的業務層(讀取WCF)。

相關問題