分享我的CleanArchitecture for Razor Page專案模板
這個專案是參考和整合了 jasontaylordev/CleanArchitecture 和 blazorhero/CleanArchitecture 程式碼基礎上,重構出來的新的專案,這兩個專案都是非常優秀和人氣很旺的關於CleanArchitecture的專案模板,我也fork了他們的專案並添加了一些自己的功能模組,我個人非常喜歡 blazorhero/CleanArchitecture 這個專案,前端使用的是微軟的Blazor(webassembly)技術,對於.net開發人員可以很快開始工作,幾乎不需要額外的學習,但在專案的進行中發現了一個致命的問題就是在(WASM模式下)效能不行,載入資料一多就容易的卡頓,但相信後面會得到優化, jasontaylordev/CleanArchitecture 專案的前端用的Angular12 由於我對angular/vue/react的技術不是很熟練,學習起來實在是感覺力不從心,在實際開發過程中遇到了很多坑,都需要用google來解決,所以最後我還是選擇了自己最熟悉的開發方式asp.net MVC來對我原來的框架進行重構來實現CleanArchitecture設計模式。
我為什麼要不斷的升級和重構我個人的開發框架
首先我追求的是開發效率,開發速度一定要快,當然我個人做的專案都是小專案1-2月內完成的頁面不超過50個的那種,所以我必須再1-2周內完成所有的原型開發(能執行增刪改查操作的原型),所以我不考慮用前後端分離的解決方案原因很簡單前後端分離需要來回切換不同的程式碼風格同時需要封裝2次程式碼,對於一個人的開發工作無疑是增加了很多工作量。
第二考慮的就是編碼的效率和感受,主要是減少拷貝複製的操作,最求極簡的程式碼風格(CleanArchitecture就符合這一點,ABP就覺得太複雜了)不需要太多的分層和定義太多的介面,我喜歡編寫那種非常流暢容易理解的程式碼,寫程式碼追求那種像海上鋼琴師裡那種彈鋼琴的境界
第三就是前端UI必須漂亮符合主流的風格,但我本人對css和UI佈局是真的不行,所以我只能找一個我覺得好看的UI還必須是一整套,所以我選擇了 SmartAdmin - Responsive WebApp 如果你們喜歡的話可以通過連結購買
下面我介紹一下我的專案
- Github 倉庫程式碼 github.com
- Demo地址 http://razor.i247365.net /
- 以前的專案 基於領域驅動設計(DDD)超輕量級快速開發架構 - 阿新 - 部落格園 (cnblogs.com)
- MVC Scaffolding SmartCode-Engine 更新 - 阿新 - 部落格園 (cnblogs.com)
技術棧
- [ASP.NET Core 5](http://devblogs.microsoft.com/aspnet/announcing-asp-net-core-in-net-5/)
- [Entity Framework Core 5](http://docs.microsoft.com/en-us/ef/core/)
- [SmartAdmin - Responsive WebApp](http://wrapbootstrap.com/theme/smartadmin-responsive-webapp-WB0573SK0/)
- [Razor Pages](http://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-5.0&tabs=visual-studio)
- [Jquery EasyUI](http://www.jeasyui.com/)
- [MediatR](http://github.com/jbogard/MediatR)
- [AutoMapper](http://automapper.org/)
- [FluentValidation](http://fluentvalidation.net/)
- [NUnit](http://nunit.org/), [FluentAssertions](http://fluentassertions.com/), [Moq](http://github.com/moq) & [Respawn](http://github.com/jbogard/Respawn)
- [Docker](http://www.docker.com/)
專案結構
專案結構完全參考 jasontaylordev/CleanArchitecture
Overview
Domain
This will contain all entities, enums, exceptions, interfaces, types and logic specific to the domain layer.
Application
This layer contains all application logic. It is dependent on the domain layer, but has no dependencies on any other layer or project. This layer defines interfaces that are implemented by outside layers. For example, if the application need to access a notification service, a new interface would be added to application and an implementation would be created within infrastructure.
Infrastructure
This layer contains classes for accessing external resources such as file systems, web services, smtp, and so on. These classes should be based on interfaces defined within the application layer.
[SmartAdmin - Responsive WebApp](http://wrapbootstrap.com/theme/smartadmin-responsive-webapp-WB0573SK0)
– an advanced UI Bootstrap 4 Admin and Dashboard – is built for the next generation. Its’ exceptional design contains vast collection of assorted reusable UI components integrated with latest jQuery plugins optimized to suit every modern web application project worldwide.
如何開發
生成資料庫
執行專案
初始賬號密碼
模板標準功能
新增/編輯/刪除/查詢/匯入/匯出
多語言支援
新增新的功能模組
新增一個實體物件
新增Application CQRS 功能模組
新增頁面
To-Do List
這個專案還剛剛很多基礎功能還沒有開發完成,後面我會繼續完善,如果喜歡請在Github上給個贊。:+1:
- 賬號管理
- 授權管理
- 日誌查詢
- 審批工作流
- 文件管理
- 程式碼生成visual studio.net外掛 !important
- ....
keep coding, enjoy coding
- 記一次批量更新整型型別的列 → 探究 UPDATE 的使用細節
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 執行緒池底層原理詳解與原始碼分析
- 30分鐘掌握 Webpack
- 線性迴歸大結局(嶺(Ridge)、 Lasso迴歸原理、公式推導),你想要的這裡都有
- Django 之路由層
- 【前端必會】webpack loader 到底是什麼
- day42-反射01
- 中心化決議管理——雲端分析
- HashMap底層原理及jdk1.8原始碼解讀
- 詳解JS中 call 方法的實現
- 列印 Logger 日誌時,需不需要再封裝一下工具類?
- 初識設計模式 - 代理模式
- 設計模式---享元模式
- 密碼學奇妙之旅、01 CFB密文反饋模式、AES標準、Golang程式碼
- [ML從入門到入門] 支援向量機:從SVM的推導過程到SMO的收斂性討論
- 從應用訪問Pod元資料-DownwardApi的應用
- Springboot之 Mybatis 多資料來源實現
- Java 泛型程式設計
- CAS核心思想、底層實現