用MVC5+EF6+WebApi 做一個小功能(三) 項目搭建

来源:https://www.cnblogs.com/buyixiaohan/archive/2018/01/13/8279858.html

一般一個項目開始之前都會有啟動會,需求交底等等,其中會有一個環節,大講特講項目的意義,然後取一個高大上的項目名字,咱這是一個小功能談不上項目,但是名字不能太小氣了。好吧,就叫Trump吧。沒有任何含義,玩嘛! 項目分層結構也要在這裡說一下,這次這個小功能仿照DDD的分層模式,一定記住我說的是仿照。因... ...

一般一個項目開始之前都會有啟動會,需求交底等等,其中會有一個環節,大講特講項目的意義,然後取一個高大上的項目名字,咱這是一個小功能談不上項目,但是名字不能太小氣了。好吧,就叫Trump吧。沒有任何含義,玩嘛!

項目分層結構也要在這裡說一下,這次這個小功能仿照DDD的分層模式,一定記住我說的是仿照。因為我也不懂DDD,我就畫個皮。

DDD這個東西中文名字應該叫領域驅動設計,園子很多大神分享過、講解過。看了很多博客很多書,依然沒太理解這麼複雜的東西(沒有實踐,紙上得來終覺淺)。這裡簡單說說自己的理解,把業務邏輯儘量的集中在領域層(Domain),如果項目是人體,那領域層就是人體的大腦了,以現在的科技,身上的零件除了大腦基本都可替換。也許可以把大腦換到另一個人身上,但是,整個身子還是要聽大腦的指揮。如果身體沒有了大腦,基本上就是一灘肉,失去了作為機體的功能。

另外作為一個機體,還遠遠沒有達到想電腦那樣的低耦合度,所以大部分零件更換的成本都很高。即使是一臺電腦,要更換零件也是要考慮到整體平臺的架構等等信息,所以談到低耦合,可替換的時候在不是萬般無奈情況下,使用的幾率很小。

放到項目上的一個例子,比如引入工作單元、倉儲層的概念,就是為了隔離領域與數據持久化,但是真正項目上線,要替換數據持久化的那一層談何容易。基於項目現有應用場景,然後進行技術選型的時候,要綜合開發效率,開發成本,可擴展性,可維護性等等,並不是什麼高大上就用什麼,什麼概念都要涉及,那樣只會成為一場技術點堆砌而難以實際應用。

比如我們這個項目,就是一個小的功能,現在可預估的用戶量就是你我他,你非要在還沒上線沒成型就考慮百萬級用戶的擴展,估計這個項目永遠都沒法上線了。

技術沒有好壞,只有適合不適合!當然,php是最好的語言,這是世間真理!

以一種領域專家、設計人員、開發人員都能理解的通用語言作為相互交流的工具,在交流的過程中發現領域概念,然後將這些概念設計成一個領域模型;
由領域模型驅動軟體設計,用代碼來實現該領域模型;

由此可見,領域驅動設計的核心是建立正確的領域模型

要詳細瞭解DDD的概念可以打開上面的鏈接,包括下方圖片,也是從文章中粘過來的,在此我們只是用他的分層,並沒有實踐DDD。

 

領域驅動設計的經典分層架構

 

小功能的分層

 

我們這個小項目分四層,分別為

  • Trump.Domain 主要存放模型,不引用任何項目
  • Trump.EF 實現數據持久化內容,本案中使用EF6,所以這裡會有大量EF CRUD實現的操作,依賴Domain項目
  • Trump.Application 實現數據與UI的交互,經過EF處理的數據在這一層轉接為DTO返回到UI層,依賴Domain、EF項目
  • Trump.ExamApp UI層實現,使用MVC5+Web Api+jQuery+Bootstrap構建,依賴Domain、Application層。

一般項目中還會有一個幫助類的項目,提供一些常用方法封裝,擴展方法等,並不作為任何項目獨有,所以這裡就不列出來了。

 

創建解決方案及創建項目(Vs 2017)

來吧來吧,新建空白解決方案,然後添加MVC項目,名字叫Trump.ExamApp,這個很基礎很基礎的,只列一下註意點

1.選擇ASP.NET Web應用程式.NET Framework ,上面那個是傳說中的跨平臺版本。比較落伍,看了幾回視頻都是第幾集。

image

2.選擇MVC,同時勾選Web API(不勾選亦可以,可以通過Nuget添加),身份驗證那裡選擇不進行身份驗證。()

image

 

身份驗證:

不進行身份驗證:不使用net自帶的身份管理

個人用戶賬號:集成Asp.Net Identity v2(.NET Framework) or v3+(.NET Core)版本

image

3.創建完畢後如圖

image

4.使用Nuget管理項目中的引用

在項目上右鍵,管理Nuget程式包,移除“Microsoft.ApplicationInsights”。Application Insights 是可擴展的應用程式性能管理 (APM) 服務,可讓 Web 開發人員在多個平臺上生成和管理應用。暫時用不到,但是package有好幾個,習慣性移除掉,然後就是升級一下除了jQuery外所有的包。

註意:因為相容性問題,jQuery版本不要隨便變更

image

 

好了。到此為止,這個項目基本完畢,接下來就是按照約定的名字創建其他幾個項目,選擇類型為類庫(.NET Framework)。

 

都創建完畢後,刷新一下,然後生成解決方案。把Web項目設置為啟動項目,F5啟動調試,我們整個項目的架子基本搭建完畢。


您的分享是我們最大的動力!

更多相關文章
  • 簡介 過多發佈的內容相對比較簡單,因此,我只打算把原文中的一些關鍵信息翻譯一下。原文鏈接如下: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-basic-c ...
  • 簡介 那些通過請求(如查詢字元串和表單數據)指定重定向URL的Web程式可能會被篡改,而把用戶重定向到外部的惡意URL。這種篡改就被稱為開發重定向攻擊。 場景分析 假設有一個正規網站http://nerddinner.com/,還有一個惡意網站或釣魚網站http://nerddiner.com/(註 ...
  • 簡介 CSRF(Cross-site request forgery跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。XSS利 ...
  • 在多線程環境下,使用BlockingCollection以及ConcurrentQueue來消費生產者生產的資源,這是我自己寫的多生產者多消費者的作法,其實也是基於單個task下的阻塞隊列的IsComplete來識別的。 使用阻塞隊列更簡單但是內部的消費者線程比較適合使用單獨的線程不適合使用線程池, ...
  • 因為要部署項目到雲伺服器,不想在伺服器上裝SqlServer,所以需要把項目改為Mysql。 項目初始化 1、下載項目壓縮包,前面文章已經說到,可以加群到群文件里下載。解壓縮下載的項目源碼,使用VS2015打開項目 這裡需要還原包,選擇解決方案 右鍵(還原NuGet包),現在還原NuGet包比之前快 ...
一周排行
  • 如題 報錯提示: 使用 JSON JavaScriptSerializer 進行序列化或反序列化時出錯。字元串的長度超過了為 maxJsonLength 屬性設置的值。","StackTrace 解決方案 在web.config 中configuration節點 插入 ...
  • 前言 這是一個國內TOP1000000000000學校畢業生的個人感想啊~~~ 最近真的很熱啊,自己在公司附近租的房子也沒有空調,淚奔。。。大學畢業也有半個月的時間了,墨跡了很長時間,才用github page把博客搭個差不多。歡迎大家去我的博客去看看啊~~~ 點擊這裡,去看看我的博客啊~~~ 從大 ...
  • EF Core中Fluent Api如何刪除指定數據表中的行 ...
  • 概述 Windows Community Toolkit 3.0 於 2018 年 6 月 2 日 Release,同時正式更名為 Windows Community Toolkit,原名為 UWP Community Toolkit。顧名思義,3.0 版本會更註重整個 Windows 平臺的工具實 ...
  • 1、前言 分散式已經成為了當前最熱門的話題,分散式框架也百花齊放,群雄逐鹿。從中心化服務治理框架,到去中心化分散式服務框架,再到分散式微服務引擎,這都是通過技術不斷積累改進而形成的結果。esb,網關,nginx網關 這些中心化服務治理框架現在都是各個公司比較主流的架構,而最近幾年大家炒的比較火的去中 ...
  • 推薦加【QQ49300063】專業盜取微信密碼,破解微信密碼,查詢微信聊天記錄,不成功不收費!!!! 隨著信息時代的來臨,很多人使用上了微信,微信的出現使得人們的生活變的十便利。人們不僅在工作中使用它,在社交中也讓其發揮了重要的作用。微信現在已經漸漸成為了人們生活中不能缺少的一部分。使用微信除了其方 ...
  • 寫在前面 本文地址:http://www.cnblogs.com/yilezhu/p/9315644.html 作者:yilezhu 上一篇關於Asp.Net Core Web Api圖片上傳的文章使用的是mongoDB進行圖片的存儲,文章發佈後,張隊就來了一句,說沒有使用GridFS。的確博主只是 ...
  • 2.矩陣專欄¶ 吐槽一下:矩陣本身不難,但是矩陣的寫作太蛋疼了 (⊙﹏⊙)汗 還好有Numpy,不然真的崩潰了... LaTex有沒有一個集成了很多常用公式以及推導或者含題庫的線上編輯器? 代碼褲子:https://github.com/lotapp/BaseCode 線上編程系:https://m ...
  • 上兩篇文章我向大家介紹了一些線程間的基本通信方式,那麼這篇文章就和大家聊聊volatile關鍵字的相關知識。這個關鍵字在我們的日常開發中很少會使用到,而在JDK的Lock包和Concurrent包下的類則大量的使用了這個關鍵字,因為它有如下兩個特性: 1.確保記憶體可見性 2.禁止指令重排序 接下來就 ...
  • JRE(Java Runtime Environment Java運行環境) 包括Java虛擬機(JVM Java Virtual Machine)和Java程式所需的核心類庫等,如果想要運行一個開發好的Java程式,電腦中只需要安裝JRE即可。 JDK(Java Development Kit ...