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的统一接口就可以了。
posted @   Teddy's Knowledge Base  Views(1697)  Comments(10Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示