2009-11-30 46 views
3

什麼是使我的C#源代碼UI的大部分獨立的基本技術?如何實現UI獨立應用程序?

例如,我想寫我的Winforms桌面應用程序的源代碼,我將能夠插入到asp.net web應用程序或一個WPF應用程序,只需稍作更改。即無論UI技術如何,我都能夠使用相同的源代碼,使其具有面向未來的特點。

我知道CSLA framework可以做到這一點。

但是,如果我不使用CSLA(學習新框架需要一些時間,而目前我沒有太多時間花在它上面),那麼應該注意什麼點來實現這種類型在我的C#代碼的能力?

你能舉個例子嗎?我已經在我的應用程序中使用了Business Objects和分層技術。但即便如此,我也看到它需要大量編碼才能將我的代碼插入新的UI技術。

請不要給我任何膚淺的答案。

回答

10

執行UI獨立編碼的最佳方法是將演示文稿中的邏輯分開。看看MVC pattern.

這更多的是你的設計的一個紀律問題,而不是一個框架問題。框架不能強迫你設計正確。如果您正確設計應用程序,它可以使事情變得更加簡單,但始終存在執行方法。

+0

你能舉個例子嗎?我已經在我的應用程序中使用BO和分層技術。但即便如此,我也看到它需要大量編碼才能將我的代碼插入新的UI技術。 – anonymous 2009-11-30 21:00:32

+1

BO?你是什​​麼意思? – monksy 2009-11-30 21:01:29

+0

@Steven - 「商業對象」 - 但這是一個純黑暗的商業對象 – ChrisF 2009-11-30 21:03:24

4

要使您的代碼UI獨立,請將不依賴於UI的邏輯放入單獨的圖層或程序集中。與演示分開的邏輯。這就是MVC,MVP和MVVM之類的所有模式。它是軟件結構的基礎,它應該根植於你身上;如果不是這樣,就這樣做。

與演示文稿分開的邏輯。學習它。活着吧。愛它。

編輯:

你能給我一個例子嗎?我已經在我的應用程序中使用BO和分層技術。但即便如此,我也看到它需要大量編碼才能將我的代碼插入新的UI技術。

請不要給我任何膚淺的答案。

我看到你已經編輯了。請允許我闡述:

有沒有得到來自遠一些邏輯是UI依賴。 UI不是一個shell;他們仍然有邏輯和功能。但是,該功能應該只針對用戶交互。顯示數據。收集資料。花哨的圖形技巧和動畫,如果你的喜好在這個方向。

其餘的去業務層,東西可以重複使用。如果分層正確,則可以避免在每次爲新的UI框架編寫程序時重寫核心功能。

但你仍然需要重寫UI的東西。

+1

+1。作爲一般規則,您不應該在業務層中導入'System.Web'或在UI層中聲明'System.Data'。 – 2009-11-30 21:44:41

+1

@Chetan Sastry:我同意90%。對於'System.Web'我完全同意。然而'System.Data'包含'DataSet'和'DataTable',並且在UI層的數據綁定中都經常使用它們。我個人更喜歡並推薦POCO將數據傳遞給UI層,但事實是有相當多的人仍然使用這兩個類。然而,對於命名空間中的其他所有內容,我同意。 – Randolpho 2009-12-01 02:23:24

+0

不過,很好的一般規則。 – Randolpho 2009-12-01 02:23:59

3

如果你正在構建一個多層應用程序,你的業務邏輯,數據訪問等應該已經被分離成完全獨立於你的UI的類。將這些庫重新用於不同的目標平臺 - 桌面與網絡等 - 應該是從新應用程序中引用現有庫的簡單事情。

這是軟件開發的基本規則。雖然像MVC等模式和框架強制執行此操作,但最終要由您來正確設計您的應用程序。這類任務不需要學習新技術 - 只是常識和一點經驗。

+0

我已經在我的應用程序中使用BO和分層技術。但即便如此,我也看到它需要大量編碼才能將我的代碼插入新的UI技術。 – anonymous 2009-11-30 21:02:09

+4

「新編碼」應限制爲特定於用戶界面的行爲。如果不是,你應該重新檢查你的BO和DAL。 – 2009-11-30 21:03:24