2009-07-10 33 views
1

我有一個3層應用程序需要能夠根據用戶請求進行數據過濾,我正在與fluentnhibernate一起管理我的實體的垃圾。過濾3層應用程序流程的基礎設施

我的問題是我如何將客戶端的過濾器傳遞給服務器(通過wcf)。

fn的過濾器類不可序列化。

任何解決方案?

+0

刪除WPF標記爲問題與該技術沒有任何關係。 – 2009-07-11 06:18:14

回答

1

簡而言之:創建一個包含過濾規範的可序列化的對象。對於簡單的過濾器來說,枚舉應該沒問題。然後,在您的WCF服務中,將此過濾器規範映射到應用程序的較低層理解的內容。 NHibernate(和其他對象關係映射器)與數據庫檢索綁定在一起。對於你的客戶端UI來說,它與你的持久性系統緊密耦合並且試圖使用NHibernate的過濾器對象,你將會使用它們來實現他們沒有設計的東西。

我見過的一些應用程序有多個層,每個層都有自己的數據類型:一個用於UI,一個用於UI上的驗證邏輯,一個用於客戶端和服務之間的數據傳輸,一個用於在服務器上的域名,以及一個用於持久性的域名。這可能看起來極端,但這意味着對象可以正確反映每個特定問題的需求。

例如,您可能需要妥協您的數據類型以使對象在服務邊界上序列化。使用UI和業務邏輯層中使用的不同對象可以隱藏任何醜陋。

+0

你不覺得它更好地使用nhibernate的abstarvct restrest嗎? – 2009-07-17 17:16:31