.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è)沒什么好說(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)行開發(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)過(guò)長(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)文章
建立自定義的數(shù)據(jù)驅(qū)動(dòng)的本地化資源provider
本文探討了自定義的本地化資源提供者.如果想用一個(gè)可替代系統(tǒng)的資源處理方案,例如把所有的資源放入數(shù)據(jù)庫(kù)中,而不是放在分散的資源文件里,你可以自定義一個(gè)resource provider.2010-06-06
關(guān)于服務(wù)器或虛擬主機(jī)不支持 AjaxPro 的問(wèn)題終極解決方法
asp.net的網(wǎng)站,訪問(wèn)時(shí)提示不支持 AjaxPro,那就因?yàn)檎`刪的映射導(dǎo)致,可以通過(guò)下面的方法解決2012-03-03
ASP.NET Core 2.0 使用支付寶PC網(wǎng)站支付實(shí)現(xiàn)代碼
這篇文章主要介紹了ASP.NET Core 2.0 使用支付寶PC網(wǎng)站支付實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-10-10
aspx中的mysql操作類sqldatasource使用示例分享
服務(wù)器裝了mysql odbc驅(qū)動(dòng),想在那個(gè)iis上操作另一個(gè)服務(wù)器的mysql,找到個(gè).net的sqldatasource類可以操作mysql,下在把使用方法分享一下2014-01-01
ASP.net如何連接SQL SERVER 2012數(shù)據(jù)庫(kù)
這篇文章主要介紹了ASP.net連接SQL SERVER 2012數(shù)據(jù)庫(kù)的方法,非常不錯(cuò),在項(xiàng)目開發(fā)中經(jīng)常可以用到,需要的朋友可以參考下2016-08-08
一個(gè)可以讓.net程序在非WIN平臺(tái)上運(yùn)行的軟件Mono
一個(gè)可以讓.net程序在非WIN平臺(tái)上運(yùn)行的軟件Mono...2007-03-03
ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁(yè)
這篇文章主要介紹了ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁(yè)的相關(guān)資料,需要的朋友可以參考下2016-05-05
Asp.Net?Core使用Ocelot結(jié)合Consul實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)
這篇文章介紹了Asp.Net?Core使用Ocelot結(jié)合Consul實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04

