摘要: "微服务"加个引号是因为这不是传统定义的微服务架构,顶多算是"小服务"架构,因为服务实例由集群节点统一加载,非独立部署。下面以图说明一下服务调用流程。 一、服务调用流程 节点主进程:类似于Istio的SideCar,负责对外网络及集群内节点间的通信,另外提供内置分布式的存储引擎(目前元数据均存储于此 阅读全文
posted @ 2020-12-24 19:58 白菜园 阅读(944) 评论(0) 推荐(2)
摘要: 企业应用需要打印各类单证及报表,为了方便开发此类应用作者在框架内集成了报表引擎,并且实现了基于Canvas的Web在线报表设计及基于PDFJS的报表查看与打印。 一、原理浅析 报表模型:由Xml描述各类报表元素组成(表格、图形、条码等),通过报表设计器生成; 数据源:通过推(Push)或拉(Pull 阅读全文
posted @ 2020-04-24 11:37 白菜园 阅读(1679) 评论(0) 推荐(6)
摘要: 框架是用抽象模型驱动的方式来生成应用系统的,这样可以将这些模型序列化为相应的模型包文件,通过反序列化导入至其他部署环境内,从而实现开发环境与生产环境的同步,包括对应的数据库结构的同步。下面通过示例来演示如何操作: 一、准备测试应用 通过New Application创建一个新应用,名称如:erp; 阅读全文
posted @ 2020-03-12 13:16 白菜园 阅读(662) 评论(3) 推荐(5)
摘要: 本来想尽量做完美一点再开放,但个人能力实在有限,无法专注于实现内置分布式数据库,所以想借助社区的力量来验证与推进。 一、框架设计目标: 简单:能有更多的时间专注于业务领域; 灵活:不能有任何限制,能够灵活扩展; 快速:能够尽可能快的开发应用系统; 二、框架整体结构: 左图为整体结构,右图为每个应用节 阅读全文
posted @ 2020-03-06 16:40 白菜园 阅读(4135) 评论(4) 推荐(9)
摘要: 本篇通过完整示例介绍如何实现一对多关系表单的相应服务及视图。 一、准备数据结构 示例所采用的数据结构为“物资需求”一对多“物资清单”,通过IDE的实体设计器如下所示: 1. 物资(DonateItem) 主键为Id(Guid) 2. 物资需求(Requirement) 主键为Id(Guid) 3. 阅读全文
posted @ 2020-02-18 18:20 白菜园 阅读(752) 评论(0) 推荐(1)
摘要: 上篇介绍集成第三方Sql数据库时未实现如导航属性、子查询等功能,经过大半个月的努力作者初步实现了这些功能,基本上能满足80% 90%查询需求,特别复杂的查询可以用原生sql来处理,下面分别示例介绍。 Like/In/NotIn 分页查询 EntityRef属性自动Left Join 适用于实体建模时 阅读全文
posted @ 2019-12-26 11:55 白菜园 阅读(523) 评论(0) 推荐(3)
摘要:   框架设计之初是不准备支持第三方数据库的,但最近几个朋友都提到需要将旧的基于传统Sql数据库的应用迁移到框架内,主要是考虑到一方面目前框架内置的分布式数据库尚未完善,另一方面是希望能逐步迭代旧应用替换传统数据库。因此作者还是决定支持第三方数据库,下面介绍如何集成第三方数据库,并 阅读全文
posted @ 2019-11-28 16:16 白菜园 阅读(555) 评论(0) 推荐(2)
摘要:   框架内的服务模型(ServiceModel)用于处理各类业务逻辑(如最简单的CRUD操作),在设计时以类似于伪代码的形式存在,发布时后端会通过Roslyn转换并编译为运行时代码。为了方便开发者作者初步实现了在线调试服务与监测服务调用性能的功能,下面分别介绍。 一、服务在线调试 阅读全文
posted @ 2019-10-24 20:18 白菜园 阅读(601) 评论(0) 推荐(1)
摘要:   AppBoxFuture的存储引擎依赖Raft一致性协议来保证各个分区副本的一致性,如果不处理Raft日志将不断增长,因此需要特定的机制(定期或每处理一定数量的日志)来回收那些无用的日志数据。通过学习Raft协议内的Log Compaction,并参考TiKV等实现,作者初步 阅读全文
posted @ 2019-09-29 21:13 白菜园 阅读(1007) 评论(0) 推荐(0)
摘要:   随着互联网+、智能制造等大数据应用的发展,传统的企业信息化单体架构必定绕不过以下两个坎: 单机资源瓶劲造成系统响应慢,需要高成本升级硬件来解决; 单机故障造成系统不可用,需要较长的时间来恢复故障。   所以将来的企业信息化基础架构必定是分布式的,AppBo 阅读全文
posted @ 2019-09-06 13:18 白菜园 阅读(1229) 评论(5) 推荐(4)