真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用VisualStudio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

這篇文章將為大家詳細(xì)講解有關(guān)如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元雙灤做網(wǎng)站,已為上家服務(wù),為雙灤各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

時(shí)隔一年,繼續(xù)我們的Apworks框架之旅。在接下來的文章中,我將逐漸向大家介紹如何在Visual Studio中結(jié)合Apworks框架,使用ASP.NET Web API和MVC來開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序。在這一講中,我們首先了解一下分層架構(gòu)的各個(gè)“層”,以及所涉及的Visual Studio項(xiàng)目,然后,我們從領(lǐng)域模型開始,在Visual Studio中開始我們的應(yīng)用程序開發(fā)之旅。

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

Apworks的近況

已經(jīng)有一段時(shí)間沒有向大家介紹Apworks框架的相關(guān)內(nèi)容了,在最近的半年中,我對(duì)Apworks做了一些小的重構(gòu),具體內(nèi)容如下:

  1. 將支持的.NET Framework升級(jí)到4.5.1

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

  3. 開始在Unit Of Work的具體實(shí)現(xiàn),也就是RepositoryContext上支持異步Commit的操作:可以使用CommitAsync來進(jìn)行異步提交。后續(xù)版本會(huì)支持更多的異步方法

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

  5. 改善了NHibernate Repository的實(shí)現(xiàn)

  6. 性能優(yōu)化

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

?

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

案例:個(gè)人便簽應(yīng)用

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

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

認(rèn)識(shí)我的圈內(nèi)朋友應(yīng)該都知道我自己開發(fā)了一個(gè)基于云的個(gè)人筆記系統(tǒng)Cloud Notes,也有一些文章介紹Cloud Notes的技術(shù)和開發(fā)過程。不錯(cuò),現(xiàn)在我打算使用的這個(gè)案例,它的業(yè)務(wù)背景跟個(gè)人筆記系統(tǒng)很像,但為了介紹技術(shù)部分,我會(huì)讓其業(yè)務(wù)變得更為簡單,也會(huì)介紹一些實(shí)現(xiàn)RESTful服務(wù)的最佳實(shí)踐,因此,該案例會(huì)在技術(shù)架構(gòu)層面與Cloud Notes類似,但也會(huì)有些細(xì)節(jié)上的差異。總而言之,盡量以簡潔的形式來說明問題。

本案例涉及的部分包括用戶和權(quán)限,從業(yè)務(wù)上看,每個(gè)用戶可以管理自己的便簽,內(nèi)容就這么多。太復(fù)雜了會(huì)讓人覺得頭暈?zāi)垦?,也?huì)降低本文的可讀性。OK,讓我們給這個(gè)案例起個(gè)名字,就叫EasyMemo吧。

理論:分層架構(gòu)與技術(shù)選型

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

如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

可以看到,在整個(gè)案例的介紹過程中,我們將會(huì)使用Entity Framework 6作為數(shù)據(jù)存儲(chǔ)ORM,后臺(tái)數(shù)據(jù)庫選用Microsoft SQL Server,領(lǐng)域模型層適配Apworks框架,應(yīng)用層任務(wù)協(xié)調(diào)使用Apworks框架,而通過ASP.NET Web API 2向外界提供RESTful服務(wù)。表現(xiàn)層采用ASP.NET MVC 4加上AngularJS實(shí)現(xiàn),當(dāng)然會(huì)用到Twitter Bootstrap的一些特性,畢竟在標(biāo)準(zhǔn)的ASP.NET MVC模板中,默認(rèn)安裝了Bootstrap的包。

基本架構(gòu)就這樣,接下來,讓我們一起動(dòng)手開始在Visual Studio 2013中搭建我們的EasyMemo項(xiàng)目吧。

實(shí)踐:開始搭建解決方案

打開Visual Studio 2013,當(dāng)然,目前我們還不需要使用Ultimate版本,因?yàn)榻鉀Q方案的搭建過程不會(huì)涉及任何與Visual Studio 2013 Ultimate相關(guān)的特性。為了能讓解決方案中各項(xiàng)目的組織更為合理,建議首先在Visual Studio 2013中新建一個(gè)空白的解決方案,.NET Framework版本請(qǐng)選擇4.5.1,因?yàn)榻窈笠玫腁pworks框架是基于4.5.1的:

如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

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

  • EasyMemo.Common:提供包括公共類型以及基礎(chǔ)結(jié)構(gòu)層的那些可以適用于其它各層的類型和組件

  • EasyMemo.Domain:包含領(lǐng)域模型的類型,以及這些類型的擴(kuò)展方法

  • EasyMemo.Repositories:倉儲(chǔ)實(shí)現(xiàn)庫,提供與領(lǐng)域模型對(duì)象倉儲(chǔ)相關(guān)的類型定義以及實(shí)現(xiàn)

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

    如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

  • EasyMemo.Web:EasyMemo的主頁網(wǎng)站,向用戶提供操作界面,接收用戶請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)到RESTful服務(wù)。在【新建項(xiàng)目】對(duì)話中選擇【Visual C# –> Web】分類,在該分類中選擇【ASP.NET Web應(yīng)用程序】,在彈出的【新建ASP.NET項(xiàng)目】對(duì)話框中,選擇【MVC】:

    如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

創(chuàng)建完成后,EasyMemo的解決方案中應(yīng)該包含如下5個(gè)項(xiàng)目,每個(gè)項(xiàng)目中都只包含了Visual Studio項(xiàng)目模板自帶的默認(rèn)類型:

如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

為了能夠在編譯整個(gè)解決方案的時(shí)候,讓Visual Studio自動(dòng)下載每個(gè)項(xiàng)目所依賴的NuGet包,強(qiáng)烈建議在EasyMemo解決方案上單擊鼠標(biāo)右鍵,選擇【啟用NuGet程序包還原】選項(xiàng):

如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

現(xiàn)在,我們就從領(lǐng)域模型的設(shè)計(jì)開始,一步步地完成整個(gè)應(yīng)用程序的開發(fā)。

邁向領(lǐng)域建模的第一步

首先,在EasyMemo.Domain項(xiàng)目上,單擊鼠標(biāo)右鍵,選擇【管理NuGet程序包】,在彈出的對(duì)話框的【搜索聯(lián)機(jī)】文本框中,輸入關(guān)鍵字【Apworks】,然后在程序包列表中選擇【Apworks】并單擊【安裝】按鈕:

如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序

在安裝時(shí)會(huì)提示許可協(xié)議對(duì)話框,單擊【我接受】按鈕即可。

然后,在EasyMemo.Domain上再新增一個(gè)AggregateRoot抽象類,使其實(shí)現(xiàn)Apworks中的IAggregateRoot接口:

?

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

再新建一個(gè)Account類,使其繼承AggregateRoot類,它表示在EasyMemo整個(gè)應(yīng)用程序中的“用戶賬戶”的概念,為了今后的實(shí)現(xiàn)更為方便快捷,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
///    
/// 表示EasyMemo中“用戶賬戶”的概念    
///    
public      class      Account : AggregateRoot    
{    
     ///    
     /// 獲取或設(shè)置賬戶名。    
     ///    
     public      string      Name {      get      ;      set      ; }    
     ///    
     /// 獲取或設(shè)置賬戶密碼。    
     ///    
     public      string      Password {      get      ;      set      ; }    
     ///    
     /// 獲取或設(shè)置郵箱地址。    
     ///    
     public      string      Email {      get      ;      set      ; }    
     ///    
     /// 獲取或設(shè)置顯示名稱。    
     ///    
     public      string      DisplayName {      get      ;      set      ; }    
     ///    
     /// 獲取或設(shè)置賬戶創(chuàng)建日期。    
     ///    
     public      DateTime DateCreated {      get      ;      set      ; }    
     ///    
     /// 獲取或設(shè)置最近一次登錄日期。    
     ///    
     public      DateTime? DateLastLogon {      get      ;      set      ; }    
}    

編譯EasyMemo.Domain,編譯通過,表示我們已經(jīng)正常安裝并引用Apworks程序包了,可以繼續(xù)對(duì)領(lǐng)域模型進(jìn)行設(shè)計(jì)了。

關(guān)于如何使用Visual Studio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)頁名稱:如何使用VisualStudio開發(fā)面向經(jīng)典分層架構(gòu)的應(yīng)用程序
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jhgepg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部