用于为delphi win 32应用程序构建层的模式

use*_*285 7 delphi activerecord hibernate data-access-layer

我想使用dbexpress开发mysql数据库应用程序,从头开始开发或使用现有数据库.要创建可重用的层,我应该使用哪些模式组件.我希望应用程序可以轻松扩展到n层.尝试谷歌搜索准备好的框架,但我发现没有太多信息(一些缺乏文档,一些缺乏示例).

在着名的java框架i.batis或hibernate的静脉中的某些东西会很有用.我很熟悉在PHP中使用这样的框架来开发xml定义的业务对象.我试图将它转换为Delphi,但这是一项很重要的工作.(使用delphi严格打字的抽象使我的exprerience级别的所有内容变得困难.)

同样ruby on rails activerecord-like实现可能很有用.

我永远不清楚是否有垃圾dbaware组件.

我试图实现一些设计模式来分离层(数据访问/连接),(业务对象),(gui),但没有成功.我试图实现的是模仿lego(我可以使用任何数据库引擎,任何delphi数据库技术(bde,ado等等.dbexpress是必须的,其他是可选的.)我也可以使用xml(mybase或native),text文件(类csv,遗留解析代码)

我可能需要单层,客户端/服务器和n层.

此外,我可能需要某种形式的Web服务实现的(客户端可能会从德尔福可执行除了任何技术,所以我想生成XML,WSDL容易是必要的)

数据访问层是最重要的部分.它必须是灵活的,因为将在其上开发其他框架(用户身份验证,应用程序配置等......).

  • 我可能会挑战开发自己的简单框架(我不知道要遵循什么:数据库适配器模式,数据库连接工厂,映射器,数据访问对象等...)
  • 我可以使用现有的(instantobjects不适用.不能使用现有的db模式).我试过的其他一些人缺乏dbexpress支持,或者我无法理解配置.

Dav*_*lor 6

穆罕默德的回答涵盖了你问题的n层部分.关于类似于i.batis或hibernate的部分将您推向面向对象的持久性框架,如tiOPF,这是一个有点不同的野兽.

这是我目前所知道的Delphi持久性框架列表.我相信CG也在Delphi Live上做了某种持久性演示,所以可能会有其他的东西出现.

FWIW - 我在几个商业产品中使用了InstantObjects(IO)(尽管是以非标准的方式),我正在使用Delphi 2009的端口.PressObjects是IO开发人员之一,我最近加入了该项目,因为它看起来很有趣.从YMMV开始,我不会打折像tiOPF,Jazz等框架.我会通过评论来做这些框架是一种损害,因为我没有使用它们超越简单的测试用例.