在的delphi多层方案里midas在数据处理上(将数据打包发送中间层)确实很方便,而且高效。可是我感觉midas的本身结构就将中间层的数据和逻辑耦合到了一起,在大项目的维护上很不好并且也不符合oo的思想。
  我也使用过c#来设计多层系统,基本上思想是这样:客户端(传递类实例)-〉webservice->逻辑层-〉数据持久层-〉数据库。在客户端只涉及表现层的东西,对于数据的逻辑都放在逻辑层,并且使用持久层进行数据的维护,我觉得这样的架构维护方便,在客户端很多的时候部署也很方便(逻辑层的修改只需修改服务器端)。
   在c#\java上持久层的资料以及代码生成器真是应有尽有,可我现在奇怪的是delphi在这方面却是空白(我所了解的很多公司都不是采用的上述方法),网上关于
delphi o/r方面的资料也是了了可数,确实使用了o/r映射会使开发的工作量要大些,可对于一个大型的软件而言软件的可维护性和健壮性才是最主要的。为何有这种现象呢?我本想使用delphi来设计一套持久层,在此之前我想先听听大家的意见和见解

解决方案 »

  1.   

    Delphi2006里面的Enterprise Core Objects(以下简称ECO)就是一个OR Mapping企业应用开发框架,不过我自己没有用过
      

  2.   

    用delphi的多层的最佳方案还是结合微软的COM+/.net,Delphi主要实现客户端,而业务逻辑写在COM+组件/.net服务中。
    即使是midas,你也可以在服务层将所有的逻辑写完,然后在客户端只展现/采集数据(或者可以加少量的数据校验代码,不用到后台校验的那种)。
    当然Borland所作的三层结构的思想还是基于两层结构而言的,返回的数据并不是对象型的,而是包装在dataset控件中;对于OO的支持并不是那么好。如果在delphi中能找到或写一个类似java的hibernate的东东就好了,那样就可以很自然的将数据结果与对象映射关联起来。可惜我还没发现这样的工具,可能也没高人有兴趣来写这样的东东。delphi属于冷兵器时代的王者,而现在是热兵器时代了。
      

  3.   

    menliwxj(有缘) :delphi属于冷兵器时代的王者,而现在是热兵器时代了。
    敢问,现在有哪个for win32编程的工具强于delphi(7)呢?
    不过你说的最佳方案确实是现在很多公司正在使用的折衷的方案
      

  4.   

    唉......BORLAND不是已经......
      还是淡出吧......
      

  5.   

    在c#\java上持久层的资料以及代码生成器真是应有尽有,可我现在奇怪的是delphi在这方面却是空白(我所了解的很多公司都不是采用的上述方法)持久层的资料:用过c#\java这个根本是问题;
    代码生成器:这个完全可以自己写,我就有一个......
      

  6.   

    qiume(好好回贴,天天胖胖):代码生成器是可以写.持久层的资料,请问现在有类似NHibernate或Ibatis的delphi架构吗?如果有,希望你能发我学习,谢谢
      

  7.   

    请问现在有类似NHibernate或Ibatis的delphi架构吗?这个我没有去找过,我都是自己DIY:
    用代码生成器把DataSet到Object和Object到DataSet的转换搞定......其实我用C#作Web应用的时候也是这样,哈哈
      

  8.   

    delphi ClientDataSet数据更新问题 如何重新建立与数据库连接 让更新能够正常进行呢?我要更新的是几个表,但是只能是更新到最后一个表,如何重新建立与数据库连接?
      

  9.   

    呵呵! 我做delphi 4年了,现在毕业了,准备做.net ,了解了一下.net ,确实delphi在做多层架构或是在OO方面的思想还是不如.net了!
      

  10.   

    什么才叫“正宗”的OO?
    “万物皆对象”难道必须什么都用class或object?OO是一种思想而不是表现形式,主要体现在分析问题的角度上,
    如果分析问题时OO了,很自然的,你的设计、编码就是OOMIDAS、ECO、Hibernate 在设计上的出发点是不同的,
    MIDAS、ECO更多是基于“组件”方式来实现,侧重点在于数据处理
    Hibernate则更偏重于“类”方式,侧重点在于数据本身你能说“组件”不是OO吗?选择一门工具,不仅仅是选择了“语言”,
    更多的是选择了一种工作方式,
    既然选择了Delphi,就应该接受它的工作方式不是不能做各种不同工具间的横向比较,
    关键的是比较标准要客观,这样比较的结果才有意义。如果换个标准:从对“组件”的支持来考察,相信你能得出另一个结论
      

  11.   

    Hibernate所采用的对数据进行持久化的方法,是进行数据处理的一个方法,
    但绝不是唯一的方法,更不是“标准”方法衡量各种方法优劣的标准只有一个:
    能否最大限度的发挥生产力
      

  12.   

    >>生产力效率是提高了,可就当心做机器的人去了,返修的师傅们修不好这台机器了本身讨论“三层架构”的时候,去讨论是否OO就已经跑题了
    讨论趋势一类的问题,更是跑题且不去争论Delphi是否会退出市场,什么时候退出市场
    假设Delphi退出市场了,
    那些基于Delphi的“类似NHibernate或Ibatis的delphi架构”能够有生命力?市面上没有“类似NHibernate或Ibatis的delphi架构”,
    并不能说明Delphi有缺陷或者已经落伍
    而是说明MIDAS、ECO足够强大,
    根本没有必要别别扭扭的去学习Hibernate搞什么O-R映射我丝毫没有否定O-R映射的意思,
    水晶鞋是很漂亮,但是得穿在灰姑娘脚上,
    如果硬要往白雪公主脚上套,难免要削足适履
    无论你是打算做框架还是别的什么,
    在重复造一个车轮之前,不如先好好想想怎么使用现有的车轮
      

  13.   

    http://blog.csdn.net/gordonliwei/archive/2006/10/24/1349107.aspx
    http://blog.csdn.net/gordonliwei/archive/2007/03/02/1519013.aspxDelphi里其实早就有O-R映射的架构,
    从早期的Bold到现在的ECO,只不过是没有MIDAS出名罢了
      

  14.   

    看来我们都跑题了,
    言归正传:
         如果使用语言delphi,在一个winform系统上,有设计持久层的必要吗??原因我现在的意见是:需要,1.这对于系统的后期维护有好处,逻辑清晰
                          2.使得系统再日后再挂web版等的系统很方便(只需设计表现层)
      

  15.   

    发现一个国人自己做的多层系统,用delphi开发简直太省力了。看这个网址,里面讲得很详细哟: www.quickburro.com