2010-09-09 38 views
2

我正在寫一個客戶端/服務器系統。該服務器具有DAL/BLL設計。客戶端負責呈現數據對象並提供對話框和嚮導以允許用戶更新這些對象(即添加/編輯用戶)。DAL/BLL和客戶端/服務器:客戶端是否應該使用BLL或DAL對象進行演示?或者也許另一層(數據傳輸對象?)

最初我以爲我只是讓DAL對象有一個通用的數據提供者對象,以便它們可以被客戶端以及服務器使用。例如,當數據對象被服務器使用時,數據庫就是數據提供者;當數據對象被客戶端使用時,服務器就是數據提供者。所以一個對象在表現層被改變,例如「user」:user-> setName(「Fred」),然後像這樣提交它user-> commit(),commit方法調用數據提供程序的提交方法,然後對該對象進行編碼並將其發送到服務器。服務器然後用業務層對象「裝飾」它並從那裏繼續。

我目前有這個工作作爲原型,DAL對象定義在一個共享的項目中,由客戶端和服務器使用。服務器然後注入它的數據提供者(使用數據庫),並且客戶端注入使用服務器的數據提供者。

我想知道這是否是一種合理的方法?我一直在想,如果我需要另一層,而不是讓DAL對象直接暴露給客戶端。也許是一個數據傳輸對象層,它會給我3層:數據訪問對象,業務邏輯對象和數據傳輸對象。

謝謝。

回答

1

這是不是一個好主意暴露'內部對象'像使用的對象/返回購買DAL。更好地保留隱藏在客戶端的所有內部對象,並擁有一組用於客戶端 - 服務器通信的對象。將一個對象轉換爲另一個對象可能會有一些額外的工作,但是如果服務器和客戶端不一起升級,將會使系統升級變得更容易。

+0

+1在非trival系統中,要在這些圖層之間交換的數據將有所不同。如果你確實想重新使用一些東西,那麼一個接口(實現這些對象)可能沒問題 - 但我從來沒有這樣做過。 – 2010-09-09 22:11:14

相關問題