我想知道您对在项目中使用数据感知组件的看法。通过使用Delphi和数据感知的组件(来自Delphi的标准套件或第三方),开发应用程序的“强度”和“弱”点(Win32和Web)是什么?

使用Firebird,我与Ibobject一起工作了很多,这是成熟的组件套件,并且工作得很好。

但是还有许多其他RDBM(MySQL,MSSQL,DB2,Oracle,Sqlite,Nexus,Nexus,Paradox,Interbase,Firebird等)。如果您开发了大型项目,您使用了大量的数据感知组件,请使用数据库类型和数据感知组件套件套件套件来回答。

我也对DB2(AS400)感兴趣。您成功地使用了哪些组件,或者哪些组件确实很痛苦?

有帮助吗?

解决方案

我发现使用数据感知组件会导致应用程序,而业务和UI逻辑之间没有明确区分。

这对于小型项目来说很好,但是随着它们的生长更大,代码变得越来越降低。

事件代码的所有各种位置(及其互动)都可以成为理解的真正噩梦!

在这种情况下,我始终放弃了数据感知组件,并切换到(手工编码的)MVC设计。

这确实需要大量的前期编码工作,但是在一个可维护,可扩展且可辩论的项目中结果(IMHO)。

其他提示

在尝试了Delphi应用程序的数据感知和非数据感知样式之后,这些天我回到了数据感知组件训练营。正确地分层代码需要一些工作和纪律,但是比使用非数据感知控件手工做所有操作的代码要快。

我的一些数据感知组件使用的技巧是

  • 不要只是更大规模地重写鱼类。在您的设计中考虑一些思考。

  • 不要使用tdatamodule,请使用 许多 TDATAMODULES每个人都仅对应用程序数据的一小部分负责。

  • tdatasets属于tdatamodules,而tdatasources属于tforms(除非用于主/详细关系)。

  • 使用内存数据集,例如datasNap tclientDataSet。

  • 您的客户端数据库不必精确地镜像您的数据库表。 DataSnap允许您在内存中按摩数据结构,因此可以生产用于特定目的的数据集。特别是您可以做类似的事情

    • 将两个或多个表加入一个可编辑的数据集中

    • 将主详细信息表结构划定,有时可以简化您的UI代码。

    • 创建仅内存的字段(例如计算的字段,但您也可以写给它们)

  • tclientdataset嵌套表很有用,但不是表达主细节关系的唯一方法。有时,最好通过两个独立的tclientdatasets加入tdatasource,以旧的方式做到这一点。

看看ORM解决方案。

这是多层体系结构的好方法。看 Delphi Win32的ORM

数据意识控件很棒,但是您必须确保将业务代码分别以单独的一层获取。

这并不困难,但是您需要了解如何做到这一点。

一种方法是将数据集组件(或其他非视觉容器)中的数据集组件放置。

另一个方便的技巧是使用TCLIENTDATASET执行UI条目,并将其用作UI和业务层之间的中间缓冲区。然后,该业务层使用特定于数据层的TDATASET组件。

- 杰罗恩

Delphi数据感知组件不依赖您正在使用的后端数据库引擎,因此使用Firebird或MS SQL Server或Oracle或其他人对您的数据感知组件无关紧要。他们只知道分配给他们的数据源组件,并通过此操作所有与DB相关的事情。

对我来说,如果以一种不错的方式使用数据吸引的组件可以做些事情,我将使用它们。这些通常是小项目,应该在短时间内完成。在较大的项目中,我可能完全排除数据感知组件或以仅用于数据显示且未接收用户输入的表格。在接收用户输入方面,我可能会使用非数据感知组件,因为我在控制它们和验证输入方面具有更大的灵活性。当然,在这种情况下,数据软件组件仍然可以很有用。您仍然可以在诸如OnBeForePost之类的数据集事件中验证用户输入。另外,如果您使用的是多层设计,并且客户端应用代表数据主持人层,则您的输入验证是在中间层中完成的,因此您可以使用客户端应用中的数据感知组件接收输入,并将其发送到中层验证和进一步处理。

从RAD和原型的角度来看,数据感知组件是我们的,尤其是当您设计基于数据的报告或网格时。即,您可以在设计时修补。所以我这样用它们。但是,当需要将其转换为运输代码时,我几乎总是切断连接,从查询中删除SQL,然后在代码中执行所有操作。这样,它更容易预测和可维护,尤其是在具有版本控制的多开发器环境中。当SQL嵌入某个地方的形式时,试图弄清SQL实际居住的地方是一个很大的痛苦。将SQL放在两个地方,然后必须弄清楚哪个有效,这是特别糟糕的。

您可以使用 Unidac 它支持许多数据库服务器,包括Firebird(我使用),并且具有非常好的功能。

加上 remobject SDK 您将拥有N层架构和数据库抽象的很好组合。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top