LiteMda - my thinking in mda and aop - framework diagram draft

关于该方案的基本设计思路是这样的:
首先,代码生成的基础还是数据库表,但是,提供一个从XMI生成Tables的工具,以支持从UML类图到对应Tables的自动生成,并支持以自定义类型作为其他类的属性的数据类型;
接着,基于这些Tables,可以生成映射到DomainObjects及为其增加持久化支持的Xml Profile,Xml Profile For Domain Objects基本和其他的o/r映射的xml文件类似,Xml Profile For Persistation则是独立出来的提供关于各个DomainObject的CRUD及其它复杂的自定义的与对应数据库表存取相关的操作,附加操作需要关联到给定sql语句或者存储过程;
然后,基于上面生成并根据需要修改的Xml Profiles,由框架辅助工具生成相应的DomainObjects和Persisters的接口和默认实现,这里生成接口(各个层面的代码都先生成接口)的目的一是使参数和返回数据采用接口而与具体的代码实现分离,二为了支持各个层面的AOP,目前来讲,个人觉得在业务层织入就够了,原则上不应该修改生成的源码,如果需要织入,撰写需要的织入代码并修改Profile就可以了;
在上一步生成并扩充的Xml Profile For Persistation的基础上,自动生成默认的Xml Profile For Business/AOP/Transaction,默认生成的代码只指定由数据库外键指定的级联删除事务,可由用户扩充事务及AOP支持的配置信息;
最后就可以由框架提供的Business Manager来解析并执行具体的业务调用了,对于,特殊业务代码,可以采用AOP的方式,织入或代替默认生成的代码中的部分函数或类,所有UI层的业务代码调用原则上只需访问调用Business Manager的统一接口就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述