前言
多年的開發積累讓我一直在思考一個問題:如何能擁有一個開箱即用的框架?或者說針對不同的業務規模,能有一系列相應的框架版本,這樣每次新項目上線的時候,或者業務增長變更的時候,都無需重新造輪子,我們所要做的是對號入座,即根據業務實際拿一個相應的版本過來微調即可高效上路且不翻車?做到用最少的時間,最低的成本,最好的質量把項目給收掉了,這就是我構想基於.net core敏捷開發框架的初衷。
框架的定義
請允許我把框架分成技術框架和應用框架,技術框架主要是做底層基礎工作的,也叫基礎框架,比如微軟原始的框架和第三方著名框架;應用框架主要是面向業務,比如支付功能,權限功能等,但是也是屬於業務里頭的通用的部分。那么大部分的中小團隊需要的是什么樣的敏捷框架呢?
最理想的情況是,不管是什么項目,不管是技術框架還是應用框架,我都有足夠多的基礎框架組件,不管用得着還是用不着的,都在我的工具箱里面,我只要排列組合着用就夠了。因為對於中小團隊,時間就是生命。我們不可能因為過分追求技術而犧牲業務,因為市場決定了我們的生死存亡。
我深知做這件事的不容易,所以一開始就抱着明天就要爛尾的心態在做,所以將來沒能做起來,請大家不要嘲笑我。
我不會去步入Abp或Nop的后塵,因為那樣是沒有意義的,但是我會借鑒着,並盡可能的設計得面向國人的現狀,面向中小團隊的痛點,更加的豐滿和完善,畢竟只有解決解決目前升級過程中的問題,才是有價值的。
框架的價值
有了這個框架的好處,總結起來
從大的方面來說就是:
-
提升中小企業的研發效能
-
賦能中小企業業務規模化創新
-
推進遺留系統的現代化轉型升級
從小的方面來看就是:
-
初學者可以用來學習成長;
-
小團隊盡快交付高質量的項目;
-
老項目可以快速導入,進行技術的現代化升級。
框架特點
那么這個框架應該具備哪些特點呢?不同的業務,團隊規模和技術規划必然無法只用一套框架就能一招鮮吃遍天的銀彈。所以,這個框架會分多個系列的,好比華為手機有mate系列,p系列。每個系列有重復,又有各自的定位和差異,各自服務着不同的開發團隊。
從技術層面來看,共同點包括:
-
簡單易用,應屆生也能快速上手,基本不需要文檔,或者只要簡單的說明即可入門
-
規范性好,代碼優雅可讀性極高,代碼整潔,本人有代碼潔癖,每行代碼都經過反復斟酌。
-
可擴展好,在業務演進過程無需大改
-
邏輯分層結構清晰,代碼耦合低
-
面向雲原生:以微服務為理念,支持容器化打包和編排,支持DevOps和自動化理念
從業務層面看,共同點包括:
-
有單體精品,有面向微服務,有微服務
-
賦能不同業務的階段性發展
該框架不同於市面上的框架,而是一款真正面向中小團隊(7-8個人)的國產框架,是一款能真正用於生產的框架;也會區別於視頻培訓內容,因為看視頻太慢,一個視頻要幾十分鍾,而且需要自己再敲代碼,距離生產級別那就更遠了。
因為是生產級別的,所以不同於開源產品,我期望將來的每一個細節都需要精心設計和手工敲打。雖然目前v1.0版本還有很多不完美和需要完善的地方,但是都是自己踩坑的總結。如果您在使用過程當中有疑問可以加入敏捷開發群進行咨詢,如果您想讓我給您培訓,會適當收取費用,請理解,因為我也要活着。
該敏捷框架會經歷一個循環迭代的過程,如果您在使用當中有新需求,請您提交issue。當然也希望您能為這個框架貢獻源碼。這個框架會吸收Abp的特點,融入當前最優秀的開源框架為我所用,但是會更加面向國產用戶,考慮國人的業務特點和使用感受。
如果你是個優秀的開發者,歡迎你加入框架的開發。
因為框架開發是一個重活,急需要一些骨干大佬的加入,做一些底層的基礎研究工作。如果您在廈門最好不過,我們會定期舉行線下活動。如果您不在廈門也沒關系,我們會通過遠程視頻和您進行溝通。
面向讀者
- 架構初學者,但不是.net初學者。
- 如果你是.Net初學者,基本的Crud(增刪改查)尚且完成不了,請緩一年再來。
- 你可能已經有了一些項目經驗,甚至已經開發多年,但你的項目依然進度緩慢,很難按時交付,代碼質量糟糕,難以繼續維護,你迫切希望找到一種方法來改善這個過程。
- 如果你手里沒有任何積累,該敏捷框架將是你搭建自己框架的一個很好的起點。
- 如果你已經身經百戰,自己的框架也比較成熟,該框架對你的幫助不會太大。
版本規划
迭代周期
每一個版本目標是一周一個迭代,考慮當前人手和精力,為了出更好的精品,前期會按一個月一個迭代來推進。
迭代計划
每次計划安排會按優先級隊列進行編排,結合網友需求,甄選出最重要最緊急的功能進行編排。這個計划一般會提前一個月進行。
歡迎大牛加入
歡迎各界有.net core生產級別的大佬加入。
成為骨干需要做三個事:
- 首先,需要您提供能證明您實力的文章、博客、開源代碼。
- 其次,為了您能重視這個事需要你提供一定的時間。
- 再次,希望您能加我的QQ,我們單獨聊一聊。
因為我們不是為了輸贏,我們是認真的。希望您是一位技術愛好者,喜歡主動學習,有廣博的知識和技術敏銳度,歡迎您的加入!
社區活動
敏捷框架不是目的,目的是結交各方好友,技術會友,幫助.net生態圈能有一個重新發展的機會。
希望在框架發展到一定階段,能舉行一場線下技術交流會,聊一聊技術之外的理想,人生,家庭,愛好,文學,當然還有我們立命之本的技術和發展趨勢。如果您本人在廈門是最好不過,歡迎您隨時和我聯系。
版本系列
- 單體敏捷框架
- AF3(Agile Framework3),基於三層邏輯概念划分;
- AFD(Agile Framework DDD),基於DDD驅動設計原理划分;
- 微服務敏捷框架
- AMFS(Agile Microservice Framework Single Repository),基於單體代碼倉庫划分;
- AMFM(Agile Microservice Framework Muti-Repository),基於代碼多倉庫划分;
目前進度
請參考《開箱即用~基於.NET Core的統一應用邏輯分層框架設計》
敏捷框架技術支持
一套得心應手的應用框架,能讓你的團隊如虎添翼,開發效率和開發質量將同時提升N倍,那是不是意味着,只要有了這么一套應用框架,你的團隊馬上就能脫胎換骨呢? 非也,梅花香自苦寒來,寶劍鋒從磨礪出,路漫漫其修遠兮,你將上下而求索。
但是我們會提供盡可能全面的文檔,同時也會在群里對你遇到的問題進行解答。
貢獻與反饋
- 如果你在閱讀或使用發現Bug,或有更佳實現方式,請通知我們。
- 為了保持代碼簡單,目前很多功能只建立了基本結構,細節特性未進行遷移,在后續需要時進行添加,如果你發現某個類無法滿足你的需求,請通知我們。
- 你可以通過github的Issue或Pull Request向我們提交問題和代碼,如果你更喜歡使用QQ進行交流,請加入我們的交流QQ群。
- 對於你提交的代碼,如果我們決定采納,可能會進行相應重構,以統一代碼風格。
該邏輯分層框架可以理解是敏捷框架,為了順口我把敏捷去掉了。為什么叫邏輯分層,是為了區別物理分層。該框架的目標是減少小伙伴重復搭建麻煩,同時也是保證團隊各個應用之間的規范統一,目前是v1.0版本,歡迎您持續關注~
環境及將來依賴
IDE工具:
- Visual Studio 2019
- Resharper
數據庫
- Sql Server
- Mysql
- PostgreSQL
版本控制
- Git
部署環境
- Ubunt16.04
- Centos7.x
- Windows Server2012
- Docker
SDK及Runtime
- 當前SDK 64位版本:Sdk v2.2.104,開發機器安裝
- 當前Runtime 64位版本:Runtime v2.2.2,服務器安裝
單元測試及模擬框架
- XUnit
- NSubstitute
數據訪問框架
Ioc框架
- Autofac
Aop框架
Json框架
- Json.Net
映射框架
- AutoMapper
日志框架
緩存
事件總線
- CAP
- MeditR
Id生成器
RSA加密算法
二維碼操作
短信操作
定時任務調度框架
權限
代碼生成器
- CodeSmith 6.5
- T4
參考應用框架