SCF(SenparcCoreFramework) 系列教程(一):項目介紹及快速搭建
- 2020 年 3 月 27 日
- 筆記
2020年3月25日的“盛派周三分享”活動首次使用直播的方式與大家見面,共有 500 多人參與了活動,得到了眾多開發者的好評,並強烈要求我分享 PPT,這點要求當然必須滿足啦!
除此以外,還有許多開發者因為時間衝突,沒有能夠及時光看直播,我們特地錄製了直播影片,並提供回放,騰訊影片地址:
http://v.qq.com/x/page/d0940ivnyih.html
PDF 下載:20200324周三分享SCF.zip
本次直播活動受到了中國廣大社區的支援,再次表示感謝(按拼音順序排列,不分先後):
- “DotNetCore實戰”公眾號
- “dotNET跨平台”公眾號
- “汪宇傑部落格”公眾號
- 52ABP
- DNT精英論壇
- 北京.NET技術俱樂部
- 大灣區 .Net 技術俱樂部
- 合肥.NET技術社區
- 膠東.NET俱樂部
- 膠東開發者部落
- 角落的白板報
- 盛派開發者社區
- 微軟技術俱樂部(杭州)
- 微軟技術俱樂部(蘇州)
- 溫州.NET微軟技術社區
- 徐州.NET俱樂部
以下回顧幾點重要的資訊,以及大家的提問進行解答(如果有新的問題可以留言,我會更新在下面)。
什麼是SCF?
SCF( SenparcCoreFramework)是一整套可用於構建基礎項目的企業級通用框架,嚴格遵循 DDD 設計模式,包含了基礎的快取、資料庫、模型、驗證及配套管理後台等等系統基礎要件,高度模組化,具有高度的可擴展性和耐操性。
SCF 支援容器化和微服務部署,也支援單體應用部署。
SCF 的中期目標
成為 .NET 界和 Spring 一樣有影響力的 Web 開發框架。
開源地址
模板:
https://github.com/SenparcCoreFramework/SCF
https://gitee.com/SenparcCoreFramework/SCF
基礎庫:
https://github.com/SenparcCoreFramework/ScfPackageSources
Senparc .NET 開源生態
SCF 的理念、基礎模組、擴展模組、規範和開源項目說明
XSCF 是個啥?
-
XSCF 是 SCF 中所有可擴展模組的代號例如 Senparc.Scf.Core 是基礎模組,不是 XSCF
-
需要實現 IXScfRegister 一系列介面用於進行配置和引導自動註冊、啟動
-
命名規則:[組織名].Xscf.[模組名]如:Senparc.Xscf.WeixinManager或:Senparc.Xscf.WeixinManager.TenPay
-
XSCF 之間可以相互依賴,也可以保持獨立,但必須可以小粒度獨立發布(如 nuget,或輕量級dll)
資料庫如何做到獨立開發,統一集成?
這是幾乎所有支援高度分離的模組化、插件化框架開發的難點和痛點,為此,SCF做了大量的嘗試和設計,已經形成了一套成熟、高效、高兼容性的架構,先來看圖:
在 XSCF(模組)中(圖左側),可以按照常規開發單體獨立項目一樣,創建自己的DbContext(MyEntitiesContext),需要繼承 XscfDatabaseDbContext (其繼承自 DbContext)。
然後按照正常的開發方式,進行 Code First 的方式開發 Entity 並配置 DbSet 和 Mapping,並進行所有常規的資料庫開發操作(需要使用 .NET Core 的 DI 來初始化這個 DbContext)。然後,使用命令 add-migration [名稱] – Context MyEntitiesContext 添加資料庫更新 migration 程式碼(這是唯一在更新資料庫過程中需要輸入的命令,或者獨立指令,其他步驟全部全自動完成)。
在 SCF 基礎框架內(圖右側),已經內置了 SenparcEntitiesContext(當然你也可以自定義),其繼承結構和 MyEntitiesContext 完全一致,這也保證了兩個 DbContext 行為的一致性。
在系統啟動時,會自動檢索實現了 IXscfDatase 介面的 XSCF,並自動尋找自定義的 DbContext(MyEntitiesContext),然後將其下的 DbSet<> 對象自動添加到一個全局快取列表中,同時將 Mapping 資訊注入到 SenparcEntitiesContext,使所有 XSCF 模組的 DbSet<> 對象,與 SenparcEntitiesContext 融為一體。
當系統被訪問時,不會主動註冊 XSCF 中的 DbContext,只會尋找到“大而全”的 SenparcEntitiesContext,因此每個訪問中,只會出現一個資料庫連接實例,而與已安裝的模組無關。
更多精彩分享,請直接看影片吧:http://v.qq.com/x/page/d0940ivnyih.html
選取幾位開發者的提問:
Q:SCF 的應用場景是什麼?
A:這個框架因為是一個基礎框架,並且高度模組化的,可以搭載任意場景的模組上來,所以基本上什麼場景都能用,看你自己的應用場景,去設計或者選擇使用對應的框架就行了。
Q:關於 SCF 中 DDD 的設計思路?
A:關於 DDD 的問題,建議大家去看一下我那個影片,也是針對 SCF 的設計背景來介紹的,相信看完之後就會有很多感受的:https://v.qq.com/x/page/h0840us1cq2.html,看完之後,如果還需要討論的話,最好看完再討論,這樣大家會有一些共識。另外,直播中也提到,我們目前是 beta 狀態,DDD 中非常重要的聚合功能還在完善中,等進一步完善之後,大家將看到一個更加全面的全貌。當然,目前的 SCF 已經足夠可以滿足關聯查詢、數據管理的使用。
Q:後期模板市場開放後,後台管理介面樣式如何保持一致?
A:我們將設計一套頂層“皮膚”標準,開發者可以在自己框架下面進行開發,系統所選用的皮膚可以作用於已經安裝的所有模組。
歡迎繼續討論
如有任何問題,歡迎留言討論!社區歡迎大家多多參與,並提出寶貴意見建議!