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

时间:2010-08-03 18:03:24

标签: delphi domain-driven-design object-persistence bold-delphi

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

如果没有,也许你可以推荐一些图书馆和组件的组合。

5 个答案:

答案 0 :(得分:4)

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

对于UML建模等,对于Delphi win32(或C#),我建议Model Maker

这两个工具都支持Delphi 2010。

- 的Jeroen

答案 1 :(得分:4)

替代方案是list of OPFs for Delphi win32(每个方案的简短说明)。

我只使用过Bold for Delphi(现在仍然如此),但我不认为任何替代品在功能集中都会接近。而且我认为这是关键,哪些功能对您很重要? 如果你不需要Bold提供的所有东西,也许你可以选择其中一种选择。

或者,您仍然可以使用Bold,最新版本是Bold for Delphi 2006,并希望Embarcadero最终开源,或继续开发。 用Bold做一些持续的用户压力,但Embarcadero似乎能很好地处理压力。

答案 2 :(得分:3)

这是今天德尔福的一大缺陷。只有一个旧的TDataset范例对于复杂项目来说还不够。

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

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

例如。以下是DORM的单元测试

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;

有人感兴趣吗?

答案 3 :(得分:2)

开始编辑/更新:

自从这个答案发布以来,该框架得到了很大的改进,尤其是提供了实现 true 域驱动设计所需的所有功能:

  • ORM的数据库不可知论(不仅是SQLite3,而是任何数据库,包括MS SQL或Oracle)(即使使用Delphi入门版);
  • Interface - 基于服务,similar to WCF;
  • 非常快http.sys事件驱动的HTTP服务器,以内核模式运行;
  • 准备与AJAX客户合作;
  • 许多改进和修复;
  • 现在称为Synopse mORMot Framework

具有Delphi的所有优点,即小而快的可执行文件,无需运行时/框架,提供所有源代码(无黑盒方法),无特定操作系统或额外成本。

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

结束编辑/更新

我开发了一个基于ORM RESTful JSON的框架,使用SQlite3来实现数据库持久性。

它当然没有Bold或OPF那么完整(没有UML也没有OCL),但是它有效,并且经过Delphi 7测试直到Delphi 2010.它仍然保持,并且将永远保持,因为它是免费的开源。

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

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

如果您对ORM和Delphi感兴趣,欢迎您加入开源之旅! http://blog.synopse.info/category/Open-Source-Projects/SQLite3-Framework

答案 4 :(得分:2)

我认为您可以使用TMS Aurelius和TMS Data Modeler

完成工作

这是一个有趣的link