1. 程式人生 > >SCF(SenparcCoreFramework) 系列教程(一):專案介紹及快速搭建

SCF(SenparcCoreFramework) 系列教程(一):專案介紹及快速搭建

  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:我們將設計一套頂層“面板”標準,開發者可以在自己框架下面進行開發,系統所選用的面板可以作用於已經安裝的所有模組。

 

歡迎繼續討論

  如有任何問題,歡迎留言討論!社群歡迎大家多多參與,並提出寶貴意見建議!

&n