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

打開以后的界面長這樣:

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

4.搭建解決方案結(jié)構(gòu)
# 創(chuàng)建解決方案目錄 mkdir TodoList && cd TodoList # 創(chuàng)建解決方案 dotnet new sln -n TodoList # 按照clean architecture的項目結(jié)構(gòu),創(chuàng)建WebApi項目以及classlib項目 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è)置項目間的引用 # 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 # 將所有項目添加到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項目自帶的WeatherForecast接口查看項目是否運(yùn)行成功:

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

到此這篇關(guān)于.NET 6開發(fā)TodoList應(yīng)用實現(xiàn)結(jié)構(gòu)搭建的文章就介紹到這了,更多相關(guān).NET 6開發(fā)TodoList實現(xiàn)結(jié)構(gòu)搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- .NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)查詢分頁
- .NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)ActionFilter
- .NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)接口請求驗證
- .NET?6開發(fā)TodoList應(yīng)用之實現(xiàn)DELETE請求與HTTP請求冪等性
- .NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)PUT請求
- .NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)全局異常處理
- .NET 6開發(fā)TodoList應(yīng)用之使用AutoMapper實現(xiàn)GET請求
- .NET?6開發(fā)TodoList應(yīng)用之實現(xiàn)Repository模式
- .NET?6開發(fā)TodoList應(yīng)用之使用MediatR實現(xiàn)POST請求
- .NET 6開發(fā)TodoList應(yīng)用引入數(shù)據(jù)存儲
- .NET?6開發(fā)TodoList應(yīng)用引入第三方日志庫
- .NET?6開發(fā)TodoList應(yīng)用實現(xiàn)系列背景
- 使用.NET?6開發(fā)TodoList應(yīng)用之引入數(shù)據(jù)存儲的思路詳解
- 使用.NET?6開發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建原理和思路
- .NET?6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging介紹
相關(guān)文章
建立自定義的數(shù)據(jù)驅(qū)動的本地化資源provider
本文探討了自定義的本地化資源提供者.如果想用一個可替代系統(tǒng)的資源處理方案,例如把所有的資源放入數(shù)據(jù)庫中,而不是放在分散的資源文件里,你可以自定義一個resource provider.2010-06-06
關(guān)于服務(wù)器或虛擬主機(jī)不支持 AjaxPro 的問題終極解決方法
asp.net的網(wǎng)站,訪問時提示不支持 AjaxPro,那就因為誤刪的映射導(dǎo)致,可以通過下面的方法解決2012-03-03
ASP.NET Core 2.0 使用支付寶PC網(wǎng)站支付實現(xiàn)代碼
這篇文章主要介紹了ASP.NET Core 2.0 使用支付寶PC網(wǎng)站支付實現(xiàn)代碼,需要的朋友可以參考下2017-10-10
aspx中的mysql操作類sqldatasource使用示例分享
服務(wù)器裝了mysql odbc驅(qū)動,想在那個iis上操作另一個服務(wù)器的mysql,找到個.net的sqldatasource類可以操作mysql,下在把使用方法分享一下2014-01-01
ASP.net如何連接SQL SERVER 2012數(shù)據(jù)庫
這篇文章主要介紹了ASP.net連接SQL SERVER 2012數(shù)據(jù)庫的方法,非常不錯,在項目開發(fā)中經(jīng)??梢杂玫?,需要的朋友可以參考下2016-08-08
一個可以讓.net程序在非WIN平臺上運(yùn)行的軟件Mono
一個可以讓.net程序在非WIN平臺上運(yùn)行的軟件Mono...2007-03-03
ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁
這篇文章主要介紹了ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁的相關(guān)資料,需要的朋友可以參考下2016-05-05
Asp.Net?Core使用Ocelot結(jié)合Consul實現(xiàn)服務(wù)注冊和發(fā)現(xiàn)
這篇文章介紹了Asp.Net?Core使用Ocelot結(jié)合Consul實現(xiàn)服務(wù)注冊和發(fā)現(xiàn)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04

