1

我有一個架構決策問題: 我們即將構建一個新的應用程序,我們已經決定我們將使用ASP.NET MVC實體框架(數據庫第一可能)。在第一個情況下,我們只會爲常規瀏覽器構建一個Web應用程序,但將來我們可能會添加移動應用程序。 (SOA?)建築決策:ASP.NET MVC和實體框架

我的問題是現在什麼是構建應用程序體系結構的最佳方式?

這是正確的嗎?

  1. MvcProject
    • 型號
    • 查看
    • 控制器
  2. DAL項目
    • EDMX的保全和T4模板

我一直在尋找的例子,模式和最佳實踐,但我似乎無法找到適合的東西。

謝謝!

+0

你也應該將業務邏輯,如果你打算在某個階段 –

+0

寫一個新的前端分離的確, 這就說得通了。你能用一個例子來闡述一下嗎? – bjornruysen

+0

它更多的是關於解決方案結構和技術堆棧的問題,然後是架構。 –

回答

9

我正常組織我的解決方案的方式(編輯適合的NuGet)

  1. 網站(MVC)
    • 控制器
    • 查看
    • 內容(腳本,CSS,圖像等。)
  2. 演示模型(簡單,開工項目將在網站上嵌入)
    • 視圖模型
    • 模型映射器
  3. 業務邏輯
    • 規則
    • 本地擴展(網頁和常規)
  4. 數據(如果複雜,使用每個上下文/回購/模型獨立的子文件夾)可能作爲單獨的溶液可用經由
    • 實體模型
    • 數據上下文和配置
  5. 網頁庫(本地NuGet)
    • 擴展(對於MVC/Web類)
    • 幫助程序類 =屬性
  6. 總庫(也許是作爲單獨的解決方案,可通過當地的NuGet)
    • 擴展
    • 輔助類

依賴流了這種結構,即事以上可能會引用下面的內容,但反之亦然。每個項目我也會有一個單獨的測試項目。在某些情況下,我使用與NuGet一起打包並駐留在本地存儲庫上的Web /常規類的外部共享庫。

對於手機來說,如果您要通過網絡,我會使用jQuery Mobile和移動感知視圖引擎直接將其構建到WebSite中。如果您認爲原生的,那麼我會添加一個WebAPI圖層,該圖層可能與用於API傳遞的網站共享相同的視圖模型,也可能與該網站共享相同的視圖模型,並針對API在此結構之外開發移動應用程序。最有可能的是,API具有自己的模型,並且位於業務層上方的獨立堆棧中。在我目前的項目中,我們將數據放在單獨的解決方案中,並正在使用不同的解決方案開發API和網站,並通過NuGet軟件包共享模型。

+0

您的解決方案結構看起來很整潔,但我無法理解所包含的某些文件夾類型。例如。 WebSite和Presentation模型的分離,View模型和這些模型的集成。你能否指出任何解釋這些概念的文章或項目? – BigBoss

+0

@BigBoss我還沒有寫過任何描述這個的文章。這是我個人的喜好,誠實地說,它是一種「最大」的組織。如果他們沒有與一個單獨的API項目共享,我可能會將視圖模型嵌入到網站(應用程序)項目中。 「通用」庫實際上可能是它自己的解決方案並作爲NuGet包導入。 – tvanfosson

0

我覺得你選擇了一個正確的應用架構,我們也使用了相同的應用程序架構在我們的項目之一...

MvcProject 
Model 
View 
Controller 

DAL project 
Holds edmx and T4 templates 
2

它聽起來並不像你的團隊有足夠的信息,以使決定。我知道這就是爲什麼你在這裏問這個問題,但你不應該依賴你得到的任何答案。 ASP.NET MVC和EF 可能是你一個很好的解決方案,但你不應該沒有至少已經經過書呆子晚餐或Music Store輔導工作選擇它。

當你這樣做後,你將能夠回答你自己關於架構的問題,並且可能還會發現一些其他問題。

+0

你在這裏做出絕對的好處。謝謝! – bjornruysen

+0

不客氣。祝你好運,並有興趣構建你的新應用程序。 –

1

的基本策略可包含以下內容:

  • 數據項目
    • EF模型
    • 的entites/T4世代
  • 邏輯項目
    • 應用規則
    • 邏輯不與數據的呈現
  • 現場項目
    • 演示/聚集邏輯(在控制器/觀看次數)
    • 瀏覽
    • 腳本/資產
    • 模型(用於之間的通信控制器和視圖)
  • 移動項目
    • 相同的東西,網站,但對於移動目標
0

請記住,最好的建築是直接與預算和時間相關。

MVC將花費比普通asp.net更多:

  • MVC迫使開發人員使用3層在任何時候都
  • MVC開發更加昂貴,並且很難獲得

我當你說DAL項目時,假設你的意思是常規的asp.net。如果是這樣,則情況:

  • ASP.NET開發比MVC更快
  • ASP.NET網站將允許您使用更復雜的第三方電網等
  • 在廣泛使用人才USA

對於移動開發,您選擇的網站無關緊要。您的移動應用程序應該使用設備的本地語言(IOS,Android等)進行開發。然後你通過SSL和JSON與應用進行通信。

1

首先,您必須決定如何實施您網站的移動版本。 基本上你有兩種選擇:

  • 爲您的移動頁面創建單獨的視圖/控制器。這個解決方案是最昂貴的,但也是最靈活的。 (查看MVC 4中的移動支持)
  • 爲您的網站創建響應式佈局(http://jquerymobile.com/)通常我更喜歡此選項。

通常情況下我使用3個項目

  • DAL
    • 包含EDMX,T4模板
  • 服務
    • 服務類與CRUD操作(我不是使用知識庫,因爲它們是矯枉過正的)
    • 個視圖模型
  • 網絡
    • 控制器,視圖,...