是否有任何Delphi框架/库接近Bold/Eco提供的功能?

是否有任何Delphi框架/库接近Bold/Eco提供的功能?,delphi,domain-driven-design,object-persistence,bold-delphi,Delphi,Domain Driven Design,Object Persistence,Bold Delphi,不确定Borland/Codegear/Embarcadero过渡期间Bold/Eco发生了什么,但我肯定在更新版本的Delphi中错过了它。有人知道一个接近的框架吗 如果没有,也许你可以建议一个接近的库和组件的组合。似乎是Delphi win32唯一真正的ORM,但它还没有接近 对于UML建模以及Delphi win32(或C#)的建模,我推荐 这两种工具都支持Delphi2010 --jeroen备选方案如下(每种方案都有简短说明) 我只在Delphi中使用过粗体(现在仍然如此),但我认为在

不确定Borland/Codegear/Embarcadero过渡期间Bold/Eco发生了什么,但我肯定在更新版本的Delphi中错过了它。有人知道一个接近的框架吗

如果没有,也许你可以建议一个接近的库和组件的组合。

似乎是Delphi win32唯一真正的ORM,但它还没有接近

对于UML建模以及Delphi win32(或C#)的建模,我推荐

这两种工具都支持Delphi2010

--jeroen

备选方案如下(每种方案都有简短说明)

我只在Delphi中使用过粗体(现在仍然如此),但我认为在功能集中没有任何其他替代方法。我想这是关键,哪些特性对您很重要? 如果你不需要Bold提供的一切,也许你可以选择其中一种

或者,您仍然可以使用粗体,最新版本是,希望Embarcadero最终开放源代码,或者继续开发。
用户不断要求使用粗体字,但Embarcadero似乎处理得很好。

开始编辑/更新:

自从这个答案发表以来,框架得到了很大的增强,特别是为了提供实现真正的领域驱动设计所需的所有功能:

  • ORM的数据库不可知论(不仅是SQLite3,还包括任何数据库,包括MS SQL或Oracle)(即使使用Delphi初学者版)
  • 基于接口的服务
  • 非常快的
    http.sys
    事件驱动http服务器,在内核模式下运行
  • 准备好使用AJAX客户端
  • 大量的改进和修复
  • 它现在被称为
利用Delphi的所有优点,即小而快速的可执行文件,无需运行时/框架,提供所有源代码(无黑盒方法),无特定操作系统,也无额外成本

请参阅了解mORMot如何可能是第一个提供实现域驱动设计所需的所有砖块的Delphi框架。使用比“经典”Java或.Net实现更轻、更快的解决方案

结束编辑/更新

我开发了一个基于ORM RESTful JSON的框架,使用SQlite3进行数据库持久化

当然,它并不比Bold或OPF(没有UML或OCL)更完整,但它可以工作,并且在Delphi7中测试到Delphi2010。它仍然被维护,并且将永远被维护,因为它是免费的,开源的

您可以使用一些有趣的功能,如集成用户界面生成和i18n、报告和导出为PDF、客户机/服务器服务、集成单元测试。它使用JSON进行数据传输,并通过进程内通信、windows GDI消息、命名管道或HTTP/1.1使用RESTful体系结构。因此,它可以用于开发AJAX应用程序

该框架与我们的SynProject工具完美集成,SynProject工具从源代码创建文档,具有良好的图形和完整的文档可追溯性(它已用于满足我们使用该框架编写的医疗软件的IEC 62304要求)。所以你没有UML,但是你手头有文档和图表

如果你对ORM和Delphi感兴趣,欢迎你加入开源冒险!

这是当今德尔福最大的缺陷之一。对于复杂的项目来说,仅仅拥有一个旧的
TDataset
范例是不够的

在Delphi2010中编写一个简单的活动记录并不困难。但对于复杂的项目,您需要一些带有外部配置文件的数据映射器

我正在为Delphi编写一个简单的Hibernate(DORM又名Delphi对象关系映射器)。如果有人想参与,请在bitTime[dot]向d[dot]teti发送电子邮件

下面是宿舍的单元测试

procedure TTestDORM.TestUpdate;
var
  p: TPersona;  //TPersona is a PODO "Plain Old Delphi Object" TObject descendat
  guid: string;
begin
  p := TPersona.Create;
  p.Nome := 'Daniele';
  p.Cognome := 'Teti';
  p.Eta := 30;
  p.DataDiNascita := EncodeDate(1979,11,04);
  Session.Save(p);  //DORM do an INSERT
  guid := p.guid;
  Session.Commit;
  Session.StartTransaction;
  p := Session.Load(TypeInfo(TPersona), guid) as TPersona; //DORM do a SELECT
  p.Nome := 'Peter';
  Session.Save(p); //DORM do an UPDATE
  Session.Commit;
  CheckEquals(1, Session.Count(TPersona));
  p := Session.Load(TypeInfo(TPersona), guid) as TPersona;  //DORM do a SELECT
  CheckEquals('Peter', p.Nome);
end;

有人感兴趣吗?

我想你可以用TMS和TMS来完成这项工作


这是一个询问

我想你的标签错了。很遗憾,你应该把“elphi”改为“delphi”,即使是现在,几年后,我也不认为有什么能接近。(IMHO)顺便说一句,ECO仍然是由CapableObjects开发的,目前处于版本中6@dmauric.mp但是对于Delphi来说不是这样。如果你不想要一个完整的框架,你可以使用:1。对象的基本序列化(使用TReader/TWriter或ObjectBinaryToText/WriteComponent和ObjectTextToBinary/ReadComponent);2.一些直接转换为文本,例如使用我们框架的SQlite3Commons.pas中的WriteObject()ReadObject()属性。有关DDD与Delphi的一般介绍,以及mORMot如何使用所有需要的砖块。BOLD的死是不幸的,我相信它被放弃了,因为ECO取代了它,Delphi.net死后ECO也死了。当你使用Delphi Prism时,ECO可能会成为一种未来的技术。实际上,ECO并没有消亡:它是为C#、Delphi.NET和Delphi Prism开发的。因此,您仍然可以使用它,但只能在.NET项目中使用。()要实现域驱动的设计,您需要的不仅仅是ORM。这是一种SOA/客户机-服务器设计,而不仅仅是一种数据和持久性建模方法。不要在荷兰人身上尝试SOA。这意味着STD(;我不理解在没有SOA的情况下如何实现域驱动的设计架构(这是OP的要点)。)你是对的,Bold是DDD之前的框架,ECO现在是DDD建模的一个参考,两者都不是基于SOA的。在SOA上实现DDD的必要性是一个有争议的问题。今天的DDD项目倾向于包括SOA,因为它确实针对DDD项目的复杂性。ECO是基于一项10年前的ORM技术的,这是一个SOA之前的世界。今天,DDD期望的不仅仅是ORM+a建模师。看。@Arnaud Bouchez他不能在上面添加一个SOA层吗?OP除了一个标记之外没有明确提到DDD,也许他只是没有将SOA与Bold/ECORM结合使用,而只是将DDD的最底层