本來想盡量做完美一點再開放,但個人能力實在有限,無法專注於實現內置分佈式數據庫,所以想借助社區的力量來驗證與推進。
一、框架設計目標:
簡單:能有更多的時間專注於業務領域;
靈活:不能有任何限制,能夠靈活擴展;
快速:能夠儘可能快的開發應用系統;
二、框架整體結構:
左圖爲整體結構,右圖爲每個應用節點的組件結構:
目前關係數據庫支持Postgresql, NoSql支持Cassandra or ScyllaDB
三、技術原理淺析:
模型驅動:
框架將應用系統所涉及的數據結構、業務邏輯、用戶界面等抽象爲各類型的模型,通過組合模型形成完整的應用系統。
虛擬代碼:
框架內的服務模型與視圖模型的相關代碼皆爲虛擬代碼(類似於僞代碼),在保存發佈模型時都會經過轉換編譯爲運行時代碼,視圖模型的代碼由IDE的TypeScript執行轉換,服務模型的代碼由後端的Roslyn轉換。
服務容器:
編譯好的服務組件類似於插件統一由AppContainer子進程加載調用,並且支持單獨調試與熱更新。
四、工程結構說明:
appbox.clr
服務端C#工程,主要包括:
- appbox.Core: 基礎項目,包含模型定義、模型對應的數據結構、表達式定義、自定義序列化、緩存等;
- appbox.Server: 服務端基礎項目,主要包括通訊協議與存儲api;
- appbox.Design: IDE設計支持項目,主要處理前端IDE的各類命令;
- appbox.Store: 存儲項目,支持內置數據庫及第三方數據庫;
- appbox.Host: 服務端主項目,引用上述項目,主要包含WebHost與前端通訊;
- appbox.AppContainer: 服務端運行時的服務子進程,管理各服務模型的實例,通過共享內存與appbox.Host主進程通訊。
appbox.dev
前端Web IDE工程,用於設計與發佈各類模型。npm run build後複製到服務端wwwroot/dev目錄下,通過瀏覽器訪問服務端地址http://ip:port/dev進入。
appbox.app
前端應用工程,npm run build後複製到服務端wwwroot/app目錄下,通過瀏覽器訪問http://ip:port進入開發好的應用界面。
相關編譯及詳細說明文檔將陸續在源碼README內說明。
Enjoy coding! Enjoy your life!
差點忘了GitHub地址:github.com/enjoycode,別忘了點個星啊!