.NET 6開(kāi)發(fā)TodoList應(yīng)用實(shí)現(xiàn)結(jié)構(gòu)搭建
往期學(xué)習(xí):
.NET 6開(kāi)發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景
1.TodoList需求簡(jiǎn)介
首先明確一下我們即將開(kāi)發(fā)的這個(gè)TodoList
應(yīng)用都需要完成什么功能,我不會(huì)一次性把所有的特性諸如允許用戶(hù)登陸之類(lèi)的需求全部寫(xiě)上,只是先列出最基本的功能性需求:
- 我們可以維護(hù)一個(gè)
TodoList
。 TodoList
可以包含多個(gè)TodoItem
。- 對(duì)于
TodoList
,我們可以設(shè)置其名稱(chēng) - 對(duì)于每個(gè)
TodoItem
,我們可以設(shè)置其內(nèi)容,超期時(shí)間,是否完成。 - 對(duì)于所有實(shí)體,可以完成增刪改查的操作。
2.開(kāi)發(fā)工具
2.1.NET 6
.NET 6這個(gè)沒(méi)什么好說(shuō)的,按照官方說(shuō)明下載安裝好就可以了。
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)行開(kāi)發(fā)。
當(dāng)然為了順利的使用VScode
開(kāi)發(fā).NET 6 Web API項(xiàng)目,有一些擴(kuò)展應(yīng)用也是必須要安裝的,在VSCode的Extension中搜索并安裝以下擴(kuò)展ID:
ms-dotnettools.csharp
- 由OmniS
harp提供的VSCode
開(kāi)發(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)核的瀏覽器打開(kāi)Hoppscotch
后可以在地址欄上點(diǎn)擊可用擴(kuò)展標(biāo)志,選擇安裝到本地,方便以后使用:
打開(kāi)以后的界面長(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)和依賴(lài)關(guān)系來(lái)實(shí)現(xiàn)更好的獨(dú)立、解耦的多層項(xiàng)目結(jié)構(gòu)的方式,推薦大家有時(shí)間把這篇文章好好看一下。
經(jīng)過(guò)長(zhǎng)久的實(shí)踐和演化,目前我個(gè)人覺(jué)得最簡(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)和依賴(lài)關(guān)系,設(shè)置項(xiàng)目間的引用 # Application只依賴(lài)于Domain dotnet add src/TodoList.Application/TodoList.Application.csproj reference src/TodoList.Domain/TodoList.Domain.csproj # Infrastructure只依賴(lài)于Application dotnet add src/TodoList.Infrastructure/TodoList.Infrastructure.csproj reference src/TodoList.Application/TodoList.Application.csproj # Api依賴(lài)于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è)類(lèi)庫(kù)項(xiàng)目中的Class1.cs文件。最終的項(xiàng)目結(jié)構(gòu)長(zhǎng)這樣:
到此這篇關(guān)于.NET 6開(kāi)發(fā)TodoList應(yīng)用實(shí)現(xiàn)結(jié)構(gòu)搭建的文章就介紹到這了,更多相關(guān).NET 6開(kāi)發(fā)TodoList實(shí)現(xiàn)結(jié)構(gòu)搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)查詢(xún)分頁(yè)
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)ActionFilter
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)接口請(qǐng)求驗(yàn)證
- .NET?6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)DELETE請(qǐng)求與HTTP請(qǐng)求冪等性
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)全局異常處理
- .NET 6開(kāi)發(fā)TodoList應(yīng)用之使用AutoMapper實(shí)現(xiàn)GET請(qǐng)求
- .NET?6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)Repository模式
- .NET?6開(kāi)發(fā)TodoList應(yīng)用之使用MediatR實(shí)現(xiàn)POST請(qǐng)求
- .NET 6開(kāi)發(fā)TodoList應(yīng)用引入數(shù)據(jù)存儲(chǔ)
- .NET?6開(kāi)發(fā)TodoList應(yīng)用引入第三方日志庫(kù)
- .NET?6開(kāi)發(fā)TodoList應(yīng)用實(shí)現(xiàn)系列背景
- 使用.NET?6開(kāi)發(fā)TodoList應(yīng)用之引入數(shù)據(jù)存儲(chǔ)的思路詳解
- 使用.NET?6開(kāi)發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建原理和思路
- .NET?6開(kāi)發(fā)TodoList應(yīng)用之請(qǐng)求日志組件HttpLogging介紹
相關(guān)文章
asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格
這篇文章主要介紹了asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格的示例,大家參考使用吧2014-01-01Asp.net利用一般處理程序?qū)崿F(xiàn)文件下載功能
這篇文章主要介紹了Asp.net利用一般處理程序?qū)崿F(xiàn)文件下載功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-07-07記一次EFCore類(lèi)型轉(zhuǎn)換錯(cuò)誤及解決方案
這篇文章主要介紹了記一次EFCore類(lèi)型轉(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-01MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢(xún)條件分頁(yè)
這篇文章主要介紹了MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢(xún)條件分頁(yè),需要的朋友可以參考下2017-05-05asp.net下將Excel轉(zhuǎn)成XML檔的實(shí)現(xiàn)代碼
通過(guò)Asp.net(C#)應(yīng)用程序讀取本地上傳的Excle文件,存放到DataSet中,通過(guò)DataSet中的方法直接生成XML文件.2009-11-11高效.NET臟字過(guò)濾算法與應(yīng)用實(shí)例
這篇文章主要介紹了高效.NET臟字過(guò)濾算法與應(yīng)用方法,結(jié)合實(shí)例形式分析了.NET字符串過(guò)濾操作相關(guān)技巧,需要的朋友可以參考下2016-08-08asp.net 分頁(yè)sql語(yǔ)句(結(jié)合aspnetpager)
一直用的是存儲(chǔ)過(guò)程分頁(yè),小項(xiàng)目一般不寫(xiě)存儲(chǔ)過(guò)程,就需要直接寫(xiě)分頁(yè)sql語(yǔ)句。2009-01-01ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)
這篇文章介紹了ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10