《--模型驱动的DotNet数据库应用开发框架》由会员分享,可在线阅读,更多相关《--模型驱动的DotNet数据库应用开发框架(32页珍藏版)》请在金锄头文库上搜索。
1、Enterprise Core Objects (Eco): 模型驱动的DotNet数据库应用开发框架Enterprise Core Objects (Eco):Enterprise Core Objects (Eco): 模型驱动的模型驱动的DotNetDotNet数据库应用开发框架数据库应用开发框架Borland Conference目录 Why? 为什么使用模型驱动开发企业应用 What? Borland ECO 平台概述 特性 关于Bold? How? 演示 家庭记账系统 总结Enterprise Core ObjectsEnterprise Core Objects Why? Why
2、? Borland Conference开发者面对的困境 每天应用系统的复杂度都在 增加 需求变化的速度在加快 客观要求持续迭代开发 对需求变更的预见非常困难 需要精通业务域知识 需要有精通信息技术 维护和分发的成本在持续增 加Borland Conference为什么使用模型驱动架构(MDA) Model Driven Architecture?基于OMG的统一标准: UML, OCL, XMI等 MDA可以提升开发水平 应用程序开发独立于实现细节 以最小的代价轻松地适应需求变化 提高质量和预见性 减少风险 投资可以得到持久地回报Borland ConferenceWhy Models, w
3、hy UML? 传统ER模型开发方式的问题 绑定于特定的关系型数据库,无法做到数据库平台无关 能够清晰地描述业务域的静态的数据视图,但无法描述实体的操 作及其相互之间的交互 无法描述继承、重载、多态等等对象关联 UML模型开发的优势 统一的标准 UML模型独立性 ? 平台, 语言, 工具, 厂商 模型可以复用 ? 高水平的复用 降低风险 ? 有利于队伍内部交流 ? 防止需求丢失Enterprise Core ObjectsEnterprise Core Objects What? What? Borland ConferenceEco框架模型设计 模型运行空间 前端GUI展示Borland C
4、onference使用Eco进行MDA开发步骤需求分析: 业务域模型 设计如何实现业务域模型: 通过代码/UML双向引擎实现代码级模型。 或者通过XMI导入第三方工具设计的UML模型(Together, Rose ) 实现业务域模型: 通过模型驱动的运行时平台运行业务域模型Borland ConferenceEco模型驱动 vs 传统模型驱动 MDA 平台无关的模型(Platform Independent Model, PIM) 平台相关的模型(Platform Specific Model,PSM) 手工代码 手工生成及修改DBSchema 快速 MDA 透明的转换 PIM, 绕过 PSM
5、 代码自动生成 DBSchema自动生成及自动演化 Model就是系统Borland ConferenceC#Builder / Delphi Architect with ECO.NET FrameworkPersistencePersistenceC#Builder / Delphi IDEECO IDE ToolsTogetherTogether Rose, XMIRose, XMIOCL EditorUIorder = true;order = true;Designer:Designer: UML order = true;ECO运行时平台.NET PlatformDBDB、其它存储
6、介质、其它存储介质ApplicationECO- SpaceUIECO 平台ECO O- R Mapping持久性 对象关联 对象事务 消息订阅 缓冲 OCL Evaluation OCL 查询 Undo / Redo 历史Model:Model: UML Home: Building Object contentsObject contentsObject contentsIObjectSpaceCLR FrontendClass Building Residents: IPersonList Object/Relational MapperIObject可自定义Borland Confer
7、enceGUI架构Eco数据源组件(Handle)是标准 .net 可视化组件 ,可以在设计期通过设定OCL表达式定制返回的 业务域对象 也可以使用IOCLEvaluatorService直接从Ocl语 言生成业务域对象,实现更加灵活的处理 通过适配器可以使用标准的.Net数据绑定Borland ConferenceEco vs Typed DataSet 数据类型 Eco强类型,Typed DataSet是强类型, DataSet是弱类型 ?Person.AcctItems0 .Money; ?PersonDS.Person0.Address; ?PersonDS.Tables“ abc”
8、.Rows0bcd; Eco支持代码/UML双向同步,Typed DataSet只支持单向代码生成。 Eco通过Data Mapper支持自定义数据类型(如可以将字符串映射为Blob),Typed DataSet只支持基本数据类型 支持派生属性(可读写字段) 关联关系 Eco可以实现对象间继承、重载、多态,多重度关联关系 DataSet可以实现表关联关系,但不能实现复杂的面向对象关联 操作 Eco支持自定义操作 Typed DataSet 不支持代码/数据集双向技术,无法有效支持自定义操作。 约束 Eco可以基于Ocl语言定义复杂约束 DataSet只能定义DbSchema相关的约束Borla
9、nd ConferenceOCL, Object Constraint Language面向对象的查询语言,” 面向对象的SQL” 强类型的SQL Eco对于Ocl的扩展 基于OCL语言的约束可以实现精确设计 ? UML模型约束只能用自然语言描述,有二义性 派生属性和派生关联 可以将Ocl翻译成Sql 可以通过Ocl将对象绑定到GUIBorland ConferenceOCL vs SQL OCL 面向对象 数据库平台无关 可以扩展 ? 通过自定义属性 ? oclVariable组件实现对Ocl语言变量的扩展 UML的统一子标准 SQL 面向数据集 数据库平台相关 可以扩展 ? 存储过程等等
10、有统一的标准 ? 大多数厂商对标准进行了扩展Borland Conference同Bold的比较?Bold vs ECO Bold 使用继承, ECO 使用接口 Bold 有大概50+组件, ECO少于10 Bold需要Bold感知UI组件,而 ECO使用标准.NET数据绑定组件 ? 意味着Eco更低的学习曲线,保护投资 Bold没有代码/UML双向引擎,只有UMLCode的单向引擎 ? Bold支持导入/导出模型,Eco只支持导入 Bold面向Win32原生代码平台,Eco面向.Net平台Enterprise Core ObjectsEnterprise Core Objects How?
11、How? Borland Conference演示 家庭记账系统需求 管理人员及账目 ? 可以定义家庭中的各个人员的信息 。? 可以输入收支情况,并同消费的人员关联起来。 ? 给出一定时期内消费的情况统计,作为未来家庭预算的依据。 将数据保存在Sql 数据库中 (interbase) 基本的编辑界面Borland ConferenceEco的效率问题问题:OCL在内存中对对象进行解析 数据加载的优化 延迟加载(Delay Fetch) ? Person.Name - Person.AcctItems0 批量加载 ? ObjectRepresentation.IElementCollection
12、.EnsureRange(Int 32 fromIndex, Int32 toIndex) 将OCL转化为SQL(oclPSHandle) ? Person.allInstances- select(Age30) 乐观锁机制(Optimistic Lock) 生成数据库模型可以选择不同的继承模型Borland ConferenceDelay Fetch人员数据库获取人员账目( )账目没有被真正加载( )当获取账目属性时才加载账目返回账目Borland Conference悲观锁 vs 乐观锁 悲观锁机制 相当于冲突防止 ? 类似于Version Control System中的CheckOut
13、 性能比较差,会导致资源被长时间锁定 乐观锁机制 相当于冲突检查 ? 提交时检查记录是否已被其它用户更改,为True则提交失败 性能好,只在提交时加锁Borland ConferenceDBSchema的继承关系生成策略- 脚动物- 尾巴狗- 脚动物一类一表( O w n )- 脚 - 尾巴狗()抽象类将数据保存在子表中 C h i l d - 脚动物- 尾巴狗继承表将数据保存在父表中( P a r e n t )- 脚 - 尾巴狗ECO ECO 总结总结Borland Conference总结 ECO 提供了快速模型驱动开发方法 ECO是模型设计、OR- Mapping及模型运行时 的框架
14、ECO面向.NET平台 C#Builder 、Delphi 8 Architect版提供Eco 功能Borland ConferenceECO 资源 Borland网站 ECO FAQ Eco白皮书 s.html Eco教程 BDN 新闻组 ECO: borland.public.csharpbuilder.modeldrivenarchitecture.* UML, OCL, MDA www.omg.org www.klasse.nl Bold相关资源 新闻组: borland.public.delphi.modeldrivenarchitecture.* Borland ConferenceECO相关资源 下载C#Builder Architect评估版 C#Builder Architect SP1(已经Release) 修正了Derived relation及第一版很多bug 允许卸载内存中的对象,可以回收内存、改进性能,同时对 象重新加载时能正确反应数据库的变化。 支持对象事务功能 ?IUndoService.StartTransaction() ?IUndoService.CommitTransaction() ?IUndoService.RollbackTransaction()Borland ConferenceQ & A