中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Visual Studio開發面向經典分層架構的應用程序

發布時間:2022-01-05 14:42:27 來源:億速云 閱讀:118 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關如何使用Visual Studio開發面向經典分層架構的應用程序,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

時隔一年,繼續我們的Apworks框架之旅。在接下來的文章中,我將逐漸向大家介紹如何在Visual Studio中結合Apworks框架,使用ASP.NET Web API和MVC來開發面向經典分層架構的應用程序。在這一講中,我們首先了解一下分層架構的各個“層”,以及所涉及的Visual Studio項目,然后,我們從領域模型開始,在Visual Studio中開始我們的應用程序開發之旅。

說明:雖然現在微軟已經發布了Visual Studio 2015,但為了照顧廣大的老版本用戶,下面以Visual Studio 2013 with Update 4作為開發工具進行介紹。此外,在某些場景中,會需要用到Visual Studio 2013 Ultimate的部分功能。

Apworks的近況

已經有一段時間沒有向大家介紹Apworks框架的相關內容了,在最近的半年中,我對Apworks做了一些小的重構,具體內容如下:

  1. 將支持的.NET Framework升級到4.5.1

  2. 開始在IEntity接口上支持泛型ID,這也就意味著在經典分層架構的Apworks應用中,實體鍵可以開始支持多種原始數據類型了(組合鍵目前仍不支持),比如整形。這一改動不會對已有的框架產生任何影響,默認的實體鍵類型仍然是Guid

  3. 開始在Unit Of Work的具體實現,也就是RepositoryContext上支持異步Commit的操作:可以使用CommitAsync來進行異步提交。后續版本會支持更多的異步方法

  4. 更新所依賴的第三方框架到最新版本(當然,在寫這篇文章時,這些第三方框架或許又有了版本更新)

  5. 改善了NHibernate Repository的實現

  6. 性能優化

您可以直接點擊 https://github.com/daxnet/Apworks 進入Apworks框架的開源主頁,也可以使用以下命令獲取Apworks的源代碼:

?

1
git clone https://github.com/daxnet/Apworks.git    

案例:個人便簽應用

我又一次試圖從一個應用案例開始向大家介紹整個事情的來龍去脈,希望能夠讓大家看清楚并了解到問題的本質。我記得之前也有很多文章我也是舉了不少例子,有的文章把例子講解完了,有的又是半途而廢,虎頭蛇尾。好吧,不管怎么樣,沒有案例就無法一步步地將問題解釋清楚。畢竟理論也是需要跟實踐相結合的。

這個案例是一個個人便簽應用。剛開始的時候,我把這個小標題稱為《案例:一個簡單的個人便簽應用》,思索之后將“一個簡單的”五個字去掉,我想,簡單的東西不是大家想要的,簡單的東西大家都會做,聽起來似乎甚至不需要任何框架和工具的輔助,就能簡簡單單地把問題解決掉。我想向大家介紹的是一個完整的企業級應用,它不僅應該實現基本的領域邏輯,更應該包含諸如安全、性能等各個方面的內容,所以,綜合起來,這事情就簡單不了。

認識我的圈內朋友應該都知道我自己開發了一個基于云的個人筆記系統Cloud Notes,也有一些文章介紹Cloud Notes的技術和開發過程。不錯,現在我打算使用的這個案例,它的業務背景跟個人筆記系統很像,但為了介紹技術部分,我會讓其業務變得更為簡單,也會介紹一些實現RESTful服務的最佳實踐,因此,該案例會在技術架構層面與Cloud Notes類似,但也會有些細節上的差異。總而言之,盡量以簡潔的形式來說明問題。

本案例涉及的部分包括用戶和權限,從業務上看,每個用戶可以管理自己的便簽,內容就這么多。太復雜了會讓人覺得頭暈目眩,也會降低本文的可讀性。OK,讓我們給這個案例起個名字,就叫EasyMemo吧。

理論:分層架構與技術選型

在我以前的博客中,少不了對分層架構的介紹,尤其是在介紹領域驅動設計的時候,還介紹了與之異構的基于事件的命令查詢職責分離(CQRS)架構。本案例采用經典分層架構進行開發。在此,我覺得還是有必要把架構圖再簡單畫一下,并且標注我們將要使用的微軟技術。這樣做一方面可以讓大家了解到我們使用了哪些技術,另一方面,在后續的介紹中,也可以讓大家看到,我們目前是在討論整個架構的哪個部分。請參見下圖:

如何使用Visual Studio開發面向經典分層架構的應用程序

可以看到,在整個案例的介紹過程中,我們將會使用Entity Framework 6作為數據存儲ORM,后臺數據庫選用Microsoft SQL Server,領域模型層適配Apworks框架,應用層任務協調使用Apworks框架,而通過ASP.NET Web API 2向外界提供RESTful服務。表現層采用ASP.NET MVC 4加上AngularJS實現,當然會用到Twitter Bootstrap的一些特性,畢竟在標準的ASP.NET MVC模板中,默認安裝了Bootstrap的包。

基本架構就這樣,接下來,讓我們一起動手開始在Visual Studio 2013中搭建我們的EasyMemo項目吧。

實踐:開始搭建解決方案

打開Visual Studio 2013,當然,目前我們還不需要使用Ultimate版本,因為解決方案的搭建過程不會涉及任何與Visual Studio 2013 Ultimate相關的特性。為了能讓解決方案中各項目的組織更為合理,建議首先在Visual Studio 2013中新建一個空白的解決方案,.NET Framework版本請選擇4.5.1,因為今后要用的Apworks框架是基于4.5.1的:

如何使用Visual Studio開發面向經典分層架構的應用程序

單擊“確定”按鈕后,Visual Studio就會在【解決方案資源管理器】中顯示一個空白的解決方案。接下來,我們就相繼往該解決方案中創建以下新項目:

  • EasyMemo.Common:提供包括公共類型以及基礎結構層的那些可以適用于其它各層的類型和組件

  • EasyMemo.Domain:包含領域模型的類型,以及這些類型的擴展方法

  • EasyMemo.Repositories:倉儲實現庫,提供與領域模型對象倉儲相關的類型定義以及實現

  • EasyMemo.Services:一個ASP.NET Web API應用程序,用以向外界提供RESTful服務。在【新建項目】對話中選擇【Visual C# –> Web】分類,在該分類中選擇【ASP.NET Web應用程序】,在彈出的【新建ASP.NET項目】對話框中,選擇【Empty】,在【為以下對象添加文件夾和核心引用】分組中,選擇Web API:

    如何使用Visual Studio開發面向經典分層架構的應用程序

  • EasyMemo.Web:EasyMemo的主頁網站,向用戶提供操作界面,接收用戶請求,并將請求轉發到RESTful服務。在【新建項目】對話中選擇【Visual C# –> Web】分類,在該分類中選擇【ASP.NET Web應用程序】,在彈出的【新建ASP.NET項目】對話框中,選擇【MVC】:

    如何使用Visual Studio開發面向經典分層架構的應用程序

創建完成后,EasyMemo的解決方案中應該包含如下5個項目,每個項目中都只包含了Visual Studio項目模板自帶的默認類型:

如何使用Visual Studio開發面向經典分層架構的應用程序

為了能夠在編譯整個解決方案的時候,讓Visual Studio自動下載每個項目所依賴的NuGet包,強烈建議在EasyMemo解決方案上單擊鼠標右鍵,選擇【啟用NuGet程序包還原】選項:

如何使用Visual Studio開發面向經典分層架構的應用程序

現在,我們就從領域模型的設計開始,一步步地完成整個應用程序的開發。

邁向領域建模的第一步

首先,在EasyMemo.Domain項目上,單擊鼠標右鍵,選擇【管理NuGet程序包】,在彈出的對話框的【搜索聯機】文本框中,輸入關鍵字【Apworks】,然后在程序包列表中選擇【Apworks】并單擊【安裝】按鈕:

如何使用Visual Studio開發面向經典分層架構的應用程序

在安裝時會提示許可協議對話框,單擊【我接受】按鈕即可。

然后,在EasyMemo.Domain上再新增一個AggregateRoot抽象類,使其實現Apworks中的IAggregateRoot接口:

?

1
2
3
4
5
6
7
using      System;    
using      Apworks;    
public      abstract      class      AggregateRoot : IAggregateRoot    
{    
     public      Guid ID {      get      ;      set      ; }    
}    

再新建一個Account類,使其繼承AggregateRoot類,它表示在EasyMemo整個應用程序中的“用戶賬戶”的概念,為了今后的實現更為方便快捷,Account類僅提供以下屬性:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/// <summary>    
/// 表示EasyMemo中“用戶賬戶”的概念    
/// </summary>    
public      class      Account : AggregateRoot    
{    
     /// <summary>    
     /// 獲取或設置賬戶名。    
     /// </summary>    
     public      string      Name {      get      ;      set      ; }    
     /// <summary>    
     /// 獲取或設置賬戶密碼。    
     /// </summary>    
     public      string      Password {      get      ;      set      ; }    
     /// <summary>    
     /// 獲取或設置郵箱地址。    
     /// </summary>    
     public      string      Email {      get      ;      set      ; }    
     /// <summary>    
     /// 獲取或設置顯示名稱。    
     /// </summary>    
     public      string      DisplayName {      get      ;      set      ; }    
     /// <summary>    
     /// 獲取或設置賬戶創建日期。    
     /// </summary>    
     public      DateTime DateCreated {      get      ;      set      ; }    
     /// <summary>    
     /// 獲取或設置最近一次登錄日期。    
     /// </summary>    
     public      DateTime? DateLastLogon {      get      ;      set      ; }    
}    

編譯EasyMemo.Domain,編譯通過,表示我們已經正常安裝并引用Apworks程序包了,可以繼續對領域模型進行設計了。

關于如何使用Visual Studio開發面向經典分層架構的應用程序就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东源县| 德钦县| 宜春市| 万山特区| 抚顺市| 九龙城区| 宁津县| 岳阳市| 云南省| 琼结县| 龙里县| 英山县| 曲阳县| 蓝田县| 秭归县| 九台市| 开鲁县| 洛隆县| 阜新市| 金坛市| 日土县| 积石山| 肇东市| 延安市| 平南县| 镇巴县| 上思县| 德保县| 云梦县| 彝良县| 乌兰县| 库车县| 汨罗市| 鹤壁市| 兴隆县| 静海县| 青神县| 怀仁县| 凤山市| 汝城县| 大同市|