本来想尽量做完美一点再开放, 但个人能力实在有限, 无法专注于实现内置分布式数据库, 所以想借助社区的力量来验证与推进.
一, 框架设计目标:
简单: 能有更多的时间专注于业务领域;
灵活: 不能有任何限制, 能够灵活扩展;
快速: 能够尽可能快的开发应用系统;
二, 框架整体结构:
左图为整体结构, 右图为每个应用节点的组件结构:
目前关系数据库支持 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, 别忘了点个星啊!
来源: https://www.cnblogs.com/BaiCai/p/12427364.html