2016-04-06 173 views
2

我有一個應用程序結構分爲兩層(客戶端(使用MVVM的WPF)和數據在一個SQL服務器中的表示和業務邏輯),但我面臨的問題是它使用太多由於需要大量的對象來操作客戶端中的RAM。使用WCF的三層體系結構

所以我想換成三層體系結構,在服務器中添加一個服務來處理所有的業務邏輯,併爲客戶提供他們需要使用WCF顯示的內容,以降低內存需求。

我的問題是關於如何正確地做到這一點。這個服務器和數據之間的通信(在SQL服務器中)非常直接,但是我應該從服務器發送給客戶端?

例如,遵循MVVM方法,我應該發送(從服務器到客戶端)模型,視圖模型還是什麼?如果視圖模型的屬性引用了模型,而我只發送​​ViewModels列表,客戶端是否可以讀取信息?

你能提供一些這樣的真實世界的例子嗎?

+2

添加服務/業務層? https://programmers.stackexchange.com/questions/159283/mvvm-ddd-and-wpf-layered-application-project-structure-guidance –

回答

1

考慮添加一個服務層連同業務對象將數據從服務器攜帶到客戶端。

從微軟的Microsoft Application Architecture Guide

自定義業務對象。這些是描述系統中實體的公共語言運行庫(CLR) 對象。一個對象/關係映射 (O/RM)技術,如ADO.NET實體框架(EF)或 NHibernate的可以用來創建這些對象

你的問題,「要我送(從服務器到客戶端)模型,視圖模型或什麼「將UI模式(MVVM)的責任與從服務器向客戶端發送數據混合在一起。

通過添加服務層,您可以避免內存問題並管理攜帶對象的負擔。考慮使用對象關係映射器來處理這些對象,如Microsoft的實體框架,或者爲了提高性能,使用像StackOverflow's own Dapper.net這樣的輕量級ORM。最後careful utilization of delayed query executionIEnumerable你應該能夠解決你的性能問題。

由於您可以採用此設計的方向很多,因此高級別討論對此階段很有幫助。有關設計此類系統的進一步指導,請參閱Microsoft的應用程序體系結構指南,Chapter 5: Layered Application Guidelines。雖然下面的圖片可能會描述比您需要的圖層更多的圖層,但它是一個有用的參考。服務層可以管理呈現給客戶的業務對象:

enter image description here