.NET 6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)結(jié)構(gòu)搭建
往期學(xué)習(xí):
.NET 6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景
1.TodoList需求簡(jiǎn)介
首先明確一下我們即將開發(fā)的這個(gè)TodoList應(yīng)用都需要完成什么功能,我不會(huì)一次性把所有的特性諸如允許用戶登陸之類的需求全部寫上,只是先列出最基本的功能性需求:
- 我們可以維護(hù)一個(gè)
TodoList。 TodoList可以包含多個(gè)TodoItem。- 對(duì)于
TodoList,我們可以設(shè)置其名稱 - 對(duì)于每個(gè)
TodoItem,我們可以設(shè)置其內(nèi)容,超期時(shí)間,是否完成。 - 對(duì)于所有實(shí)體,可以完成增刪改查的操作。
2.開發(fā)工具
2.1.NET 6
.NET 6這個(gè)沒什么好說的,按照官方說明下載安裝好就可以了。
2.2Visual Studio Code
使用Visual Studio Code的原因是其免費(fèi),跨平臺(tái),功能足夠用。雖然在智能補(bǔ)全上不如Visual Studio、Visual Studio for Mac或者Rider強(qiáng)大,但是因?yàn)榭催@篇文章的你可能用不同的系統(tǒng),不同的工具,所以我還是決定用所有平臺(tái)都免費(fèi)并且表現(xiàn)一致的IDE來(lái)進(jìn)行演示,你可以任選一個(gè)自己已有的IDE進(jìn)行開發(fā)。
當(dāng)然為了順利的使用VScode開發(fā).NET 6 Web API項(xiàng)目,有一些擴(kuò)展應(yīng)用也是必須要安裝的,在VSCode的Extension中搜索并安裝以下擴(kuò)展ID:
ms-dotnettools.csharp- 由OmniSharp提供的VSCode開發(fā)調(diào)試C#項(xiàng)目的必選項(xiàng)。ms-azuretools.vscode-docker-Docker擴(kuò)展。
2.3Hoppscotch
大家可能對(duì)這個(gè)工具名字比較陌生,這是用于對(duì)Web API項(xiàng)目進(jìn)行本地測(cè)試的工具。大家更熟悉Postman,而這款工具的前身叫做Postwoman,現(xiàn)在更名為Hoppscotch,使用Chrome內(nèi)核的瀏覽器打開Hoppscotch后可以在地址欄上點(diǎn)擊可用擴(kuò)展標(biāo)志,選擇安裝到本地,方便以后使用:

打開以后的界面長(zhǎng)這樣:

功能非常強(qiáng)大,測(cè)試Restful接口,GraphQL接口,實(shí)時(shí)通信接口(WebSocket/SSE/Socket.IO/MQTT)都可以,而且占用資源比Postman要低很多,顏值又高還免費(fèi)……簡(jiǎn)直良心。
3.Clean Architecture簡(jiǎn)介
Clean Architecture是大神Robert C. Martin在自己的博客上發(fā)表的一篇關(guān)于如何組織應(yīng)用程序結(jié)構(gòu)和依賴關(guān)系來(lái)實(shí)現(xiàn)更好的獨(dú)立、解耦的多層項(xiàng)目結(jié)構(gòu)的方式,推薦大家有時(shí)間把這篇文章好好看一下。
經(jīng)過長(zhǎng)久的實(shí)踐和演化,目前我個(gè)人覺得最簡(jiǎn)潔、使用起來(lái)最舒服的Clean Architecture結(jié)構(gòu)是這樣的:

4.搭建解決方案結(jié)構(gòu)
# 創(chuàng)建解決方案目錄 mkdir TodoList && cd TodoList # 創(chuàng)建解決方案 dotnet new sln -n TodoList # 按照clean architecture的項(xiàng)目結(jié)構(gòu),創(chuàng)建WebApi項(xiàng)目以及classlib項(xiàng)目 dotnet new webapi -f net6.0 -n TodoList.Api -o ./src/TodoList.Api dotnet new classlib -f net6.0 -n TodoList.Application -o ./src/TodoList.Application dotnet new classlib -f net6.0 -n TodoList.Domain -o ./src/TodoList.Domain dotnet new classlib -f net6.0 -n TodoList.Infrastructure -o ./src/TodoList.Infrastructure # 按照clean architecture的結(jié)構(gòu)和依賴關(guān)系,設(shè)置項(xiàng)目間的引用 # Application只依賴于Domain dotnet add src/TodoList.Application/TodoList.Application.csproj reference src/TodoList.Domain/TodoList.Domain.csproj # Infrastructure只依賴于Application dotnet add src/TodoList.Infrastructure/TodoList.Infrastructure.csproj reference src/TodoList.Application/TodoList.Application.csproj # Api依賴于Application和Infrastructure dotnet add src/TodoList.Api/TodoList.Api.csproj reference src/TodoList.Application/TodoList.Application.csproj dotnet add src/TodoList.Api/TodoList.Api.csproj reference src/TodoList.Infrastructure/TodoList.Infrastructure.csproj # 將所有項(xiàng)目添加到sln上 dotnet sln TodoList.sln add src/TodoList.Api/TodoList.Api.csproj dotnet sln TodoList.sln add src/TodoList.Application/TodoList.Application.csproj dotnet sln TodoList.sln add src/TodoList.Domain/TodoList.Domain.csproj dotnet sln TodoList.sln add src/TodoList.Infrastructure/TodoList.Infrastructure.csproj
5.運(yùn)行
在終端定位到當(dāng)前解決方案目錄里運(yùn)行:
$ dotnet restore
Determining projects to restore...
Restored /Users/yu.li1/Projects/asinta/blogs/cnblogs/TodoList/src/TodoList.Application/TodoList.Application.csproj (in 206 ms).
Restored /Users/yu.li1/Projects/asinta/blogs/cnblogs/TodoList/src/TodoList.Infrastructure/TodoList.Infrastructure.csproj (in 206 ms).
Restored /Users/yu.li1/Projects/asinta/blogs/cnblogs/TodoList/src/TodoList.Api/TodoList.Api.csproj (in 306 ms).
1 of 4 projects are up-to-date for restore.
$ dotnet run --project src/TodoList.Api/TodoList.Api.csproj
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7039
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5050
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: /Users/yu.li1/Projects/asinta/blogs/cnblogs/TodoList/src/TodoList.Api/
使用Hoppscotch使用WebAPI項(xiàng)目自帶的WeatherForecast接口查看項(xiàng)目是否運(yùn)行成功:

項(xiàng)目結(jié)構(gòu)到這里就搭建完成了,我們可以刪除Api項(xiàng)目中的示例WeatherForecast相關(guān)的文件,以及三個(gè)類庫(kù)項(xiàng)目中的Class1.cs文件。最終的項(xiàng)目結(jié)構(gòu)長(zhǎng)這樣:

到此這篇關(guān)于.NET 6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)結(jié)構(gòu)搭建的文章就介紹到這了,更多相關(guān).NET 6開發(fā)TodoList實(shí)現(xiàn)結(jié)構(gòu)搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- .NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)查詢分頁(yè)
- .NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)ActionFilter
- .NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)接口請(qǐng)求驗(yàn)證
- .NET?6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)DELETE請(qǐng)求與HTTP請(qǐng)求冪等性
- .NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求
- .NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)全局異常處理
- .NET 6開發(fā)TodoList應(yīng)用之使用AutoMapper實(shí)現(xiàn)GET請(qǐng)求
- .NET?6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)Repository模式
- .NET?6開發(fā)TodoList應(yīng)用之使用MediatR實(shí)現(xiàn)POST請(qǐng)求
- .NET 6開發(fā)TodoList應(yīng)用引入數(shù)據(jù)存儲(chǔ)
- .NET?6開發(fā)TodoList應(yīng)用引入第三方日志庫(kù)
- .NET?6開發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景
- 使用.NET?6開發(fā)TodoList應(yīng)用之引入數(shù)據(jù)存儲(chǔ)的思路詳解
- 使用.NET?6開發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建原理和思路
- .NET?6開發(fā)TodoList應(yīng)用之請(qǐng)求日志組件HttpLogging介紹
相關(guān)文章
asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格
這篇文章主要介紹了asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格的示例,大家參考使用吧2014-01-01
Asp.net利用一般處理程序?qū)崿F(xiàn)文件下載功能
這篇文章主要介紹了Asp.net利用一般處理程序?qū)崿F(xiàn)文件下載功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-07-07
記一次EFCore類型轉(zhuǎn)換錯(cuò)誤及解決方案
這篇文章主要介紹了記一次EFCore類型轉(zhuǎn)換錯(cuò)誤及解決方案,幫助大家更好的理解和學(xué)習(xí)使用asp.net core,感興趣的朋友可以了解下2021-03-03
如何ASP.NET Core Razor中處理Ajax請(qǐng)求
本篇技術(shù)文章主要給大家講述了如何ASP.NET Core Razor中處理Ajax請(qǐng)求這方面的知識(shí)點(diǎn),有興趣的朋友參考下。2018-01-01
MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁(yè)
這篇文章主要介紹了MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁(yè),需要的朋友可以參考下2017-05-05
asp.net下將Excel轉(zhuǎn)成XML檔的實(shí)現(xiàn)代碼
通過Asp.net(C#)應(yīng)用程序讀取本地上傳的Excle文件,存放到DataSet中,通過DataSet中的方法直接生成XML文件.2009-11-11
asp.net 分頁(yè)sql語(yǔ)句(結(jié)合aspnetpager)
一直用的是存儲(chǔ)過程分頁(yè),小項(xiàng)目一般不寫存儲(chǔ)過程,就需要直接寫分頁(yè)sql語(yǔ)句。2009-01-01
ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)
這篇文章介紹了ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10

