網站首頁 編程語言 正文
往期學習:
1.TodoList需求簡介
首先明確一下我們即將開發的這個TodoList
應用都需要完成什么功能,我不會一次性把所有的特性諸如允許用戶登陸之類的需求全部寫上,只是先列出最基本的功能性需求:
- 我們可以維護一個
TodoList
。 -
TodoList
可以包含多個TodoItem
。 - 對于
TodoList
,我們可以設置其名稱 - 對于每個
TodoItem
,我們可以設置其內容,超期時間,是否完成。 - 對于所有實體,可以完成增刪改查的操作。
2.開發工具
2.1.NET 6
.NET 6這個沒什么好說的,按照官方說明下載安裝好就可以了。
2.2Visual Studio Code
使用Visual Studio Code
的原因是其免費,跨平臺,功能足夠用。雖然在智能補全上不如Visual Studio
、Visual Studio for Mac
或者Rider
強大,但是因為看這篇文章的你可能用不同的系統,不同的工具,所以我還是決定用所有平臺都免費并且表現一致的IDE來進行演示,你可以任選一個自己已有的IDE進行開發。
當然為了順利的使用VScode
開發.NET 6 Web API項目,有一些擴展應用也是必須要安裝的,在VSCode的Extension中搜索并安裝以下擴展ID:
-
ms-dotnettools.csharp
- 由OmniS
harp提供的VSCode
開發調試C#項目的必選項。 -
ms-azuretools.vscode-docker
-Docker
擴展。
2.3Hoppscotch
大家可能對這個工具名字比較陌生,這是用于對Web API
項目進行本地測試的工具。大家更熟悉Postman,而這款工具的前身叫做Postwoman
,現在更名為Hoppscotch
,使用Chrome
內核的瀏覽器打開Hoppscotch
后可以在地址欄上點擊可用擴展標志,選擇安裝到本地,方便以后使用:
打開以后的界面長這樣:
功能非常強大,測試Restful
接口,GraphQL
接口,實時通信接口(WebSocket/SSE/Socket.IO/MQTT)
都可以,而且占用資源比Postman
要低很多,顏值又高還免費……簡直良心。
3.Clean Architecture簡介
Clean Architecture
是大神Robert C. Martin
在自己的博客上發表的一篇關于如何組織應用程序結構和依賴關系來實現更好的獨立、解耦的多層項目結構的方式,推薦大家有時間把這篇文章好好看一下。
經過長久的實踐和演化,目前我個人覺得最簡潔、使用起來最舒服的Clean Architecture
結構是這樣的:
4.搭建解決方案結構
# 創建解決方案目錄 mkdir TodoList && cd TodoList # 創建解決方案 dotnet new sln -n TodoList # 按照clean architecture的項目結構,創建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的結構和依賴關系,設置項目間的引用 # 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.運行
在終端定位到當前解決方案目錄里運行:
$ 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接口查看項目是否運行成功:
項目結構到這里就搭建完成了,我們可以刪除Api項目中的示例WeatherForecast
相關的文件,以及三個類庫項目中的Class1.cs文件。最終的項目結構長這樣:
原文鏈接:https://www.cnblogs.com/code4nothing/p/build-todolist-2.html
相關推薦
- 2022-05-24 Django基礎CBV裝飾器和中間件的應用示例_python
- 2023-03-23 python跳出雙層循環的方法_python
- 2021-12-12 七大經典排序算法圖解_C 語言
- 2022-08-06 python?sns.countplot()?繪畫條形圖詳情_python
- 2022-11-17 C語言數據結構不掛科指南之棧&隊列&數組詳解_C 語言
- 2022-12-12 flutter?Bloc?add兩次只響應一次問題解析_Android
- 2022-05-06 golang excel數據寫入到sqlite3中
- 2022-11-02 使用ggsignif優雅添加顯著性標記詳解_R語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支