2012-06-13 49 views
0

我是一名初級.NET程序員。 我必須開發一個應用程序,爲小部分用戶(大約8個)處理本地環境中的銷售,客戶和提供者(還有其他很多事情)。 整個事情應該爲集中式數據庫的本地使用而創建。 我的架構從上到下會是這樣的:關於.net中集中數據庫應用程序的設計/體系結構的建議

1.在windows窗體上。

2.Controller用於處理用戶請求

3.Bussines對象是實體框架生成的對象

4.SQL數據庫。

很顯然,我已經知道這不是架構的最佳方法,但我希望儘可能簡單。 我已經做了大量的研究,但問題的數量似乎變寬了,所以我一直在尋找一些關於這個特定問題的指導,所以我可以在推薦一個我感到滿意的建築之後專注於研究。對於這個問題的解答抱歉,我只是不知所措。

Tnx幫助newb。

+0

MSDN擁有一個帶有示例項目的實體框架概述。 http://msdn.microsoft.com/en-us/library/bb399567.aspx SO是針對特定的編程問題。 – Paparazzi

+0

謝謝,我用EF4決定其他技術的文章,但它並沒有接近分層問題。 – LECHIP

+0

然後中間層看看WCF Windows Communication Foundation。中間層作爲服務託管(通常在IIS中),WCF用於從客戶端與服務進行通信。考慮爲您的客戶端的表單WPF。 – Paparazzi

回答

0

你所描述的似乎是一個來自初級開發人員的好方法。

有許多因素會影響適合項目的架構。時間,日程安排,資金,簡單或複雜性,可維護性和未來發展擴展與一次性完成的應用程序。無論如何,由於數據模型或與未知系統的集成,未來版本可能會需要大規模重寫嗎?

第一次迭代後沒有任何應用是完美的。任何優秀的開發人員在完成項目後都會找到無數改進項目的方法,因爲他們的技術技能和知識都在增長。這就是說,數據庫和實體框架的一面是完全正確的。 EF將幫助您快速關注功能而不是基礎設施。您可能已經對EF與其他對象模型套件或傳統的基於存儲過程的方法進行了權衡。

用戶界面可能是由客戶或業務需求決定的。這裏唯一的另一個重大決定可能是內聯網的Web應用程序,所以你不必擔心在用戶的機器上安裝軟件。

控制器/類庫/業務層有意義,因此您不必直接在您的winforms代碼中針對EF編寫查詢。這使您可以更輕鬆地拆分UI並將其替換爲其他行。

你沒有概述什麼都不知道確切的情況拋出任何紅旗。用這種方法繼續前進,看看它是如何發展的。完成之後,請考慮架構的哪些方面具有挑戰性,是多餘的或麻煩的。

+0

謝謝你的回答,很高興知道我在正確的軌道上!另一個問題,如果我切換到一個Web應用程序,而不是使用Windows窗體,我會需要什麼額外的圖層,我知道我必須有一個服務層提供給網站,然後我不知道是否我應該使用業務層中的相同對象從UI中來回傳輸服務器。 – LECHIP

+0

另外,我應該在哪裏進行驗證?總是對我感到困惑,哪裏是添加驗證規則的最佳地點。 – LECHIP

+0

回覆:如果是web應用程序:你不一定需要任何額外的圖層。標準的asp.net網站/ webapp的代碼隱藏頁面應該能夠直接調用控制器/業務層的方法。如果您有多個需要訪問相同數據/功能的不同應用程序,則提供數據服務的單獨服務將非常有用。如果你只有一個應用程序,那麼不需要服務(還)。 – ulty4life

0

由於正如您所說,實體框架對象已生成,您可能希望在控制器和實體對象之間具有一個或多個模型級別。很多時候,一個特定的視圖數據來自多個實體。如果您沒有控制器可以訪問的其他級別的模型,通常會發生的情況是業務邏輯遷移到控制器。

換句話說,控制器會創建模型,模型會知道如何與實體進行交互。

請注意,我假設您使用MVC模式,因爲您參考#2中的控制器。

+0

雖然MVC是爲UI創建的框架。我沒有看到實體和模型之間的區別,對我來說,它們在我的設計中是一樣的。 – LECHIP

+0

我的控制器,其中實際的類採取用例並分成不同的步驟來實現完整的操作 – LECHIP

+0

只有MVC中的視圖用於UI。控制器處理請求,模型包含數據並執行業務邏輯。我使用非常鬆散的術語模型,實體是模型。 所以一般在MVC中,Controller不會對實體起作用。它只是接受HTTP請求並將其作爲參數轉換爲對數據執行操作的模型。 看起來您正在使用更多的服務基礎方法,因此通常只需將模型作爲服務層即可。 –

相關問題