RBA*_*RBA 17 delphi oracle firebird data-aware ibm-midrange
我想知道您对在项目中使用数据感知组件的看法.通过使用Delphi和数据感知组件(来自Delphi的标准套件或第三方),开发应用程序(win32和web)的"优势"和"弱点"是什么?
使用FireBird我已经使用了IBObjects,它是一个成熟的组件套件并且运行良好.
但是还有很多其他RDBMS(MySQL,MSSQL,DB2,Oracle,SQLite,Nexus,Paradox,Interbase,FireBird等).如果您已经开发了大型项目,您已经使用了大量数据感知组件,请回答数据库类型和数据感知组件套件名称.
我也对DB2(AS400)感兴趣.您成功使用了哪些组件,或哪些组件真的很难用?
Joh*_*kup 20
我发现使用数据感知组件会导致应用程序在业务和UI逻辑之间没有明确的区别.
这适用于小型项目,但随着它们变大,代码变得越来越不可维护.
所有各种事件代码(及其交互)都可能成为真正的噩梦!
在这种情况下,我总是抛弃了数据感知组件,并转而采用(手工编码)MVC设计.
这确实需要大量的前期编码工作,但结果(IMHO)在可维护,可扩展和可调试的项目中.
Lac*_*anG 14
在尝试了数据感知和非数据感知风格的Delphi应用程序之后,我现在回到了数据感知组件阵营.正确分层代码需要一些工作和纪律,但它仍然比使用非数据感知控件手动完成所有操作更快.
我的一些数据感知组件使用技巧是
不要只是在更大范围内重写FishFact.把一些想法放到你的设计中.
不要使用TDataModule,使用许多 TDataModule,每个TDataModule只负责应用程序数据的一小部分.
TDatsts属于TDataModules,而TDataSource属于TForms(除非用于主/细节关系).
使用内存中的数据集,例如DataSnap TClientDataSet.
您的ClientDataSets不必完全镜像数据库表.DataSnap允许您在内存中按摩数据结构,以便生成为特定目的而定制的数据集.具体来说,你可以做的事情
将两个或多个表连接到一个可编辑数据集中
非规范化主细节表结构,有时可以简化您的UI代码.
创建仅限内存的字段(如计算字段,但您也可以写入它们)
TClientDataSet嵌套表很有用,但不是表达主细节关系的唯一方法.有时最好通过TDataSource连接两个独立的TClientDataSets以旧方式完成.
数据感知控件非常棒,但您必须确保将业务代码放在单独的层中.
这并不难,但你需要知道如何做到这一点.
一种方法是将DataSet组件放在DataModule(或其他非可视容器)中.
另一个方便的技巧是使用TClientDataSet来执行UI条目,并将其用作UI和业务层之间的中间缓冲区.然后,业务层使用特定于您的数据层的TDataSet组件.
--jeroen