我先前做的项目用delphi+Midas,一边做一边学,看了一些3层的文章,其中不只是DELPHI的,还有.NET的一些文章,特别是我在前些天看了.net petshop3.0的程序源码和系统结构后发现我原来用delphi+midas的3层,在中间层的化分上明显不够清析,我的中间层是把业务逻库和数据库的访问混在一起来做的,因为项目最多算是一个中型项目,所以就算这么设计做时也没有感觉什么吃力,只是感觉到利用MIDAS实现多层的一些问题。   如果我将中间层再分成 数据访问,业务逻辑或更多层时,要将数据库的数据存放到‘类’中,这样业务逻辑层的程序就不用理会数据库,只要操作这些类就可以了,但是MIDAS中一般是以ClientDataSet和DataSetprovider相配合实现数据从中间层到客户界面的周转,如果我将数据库数据放到类中,只有通过接口来做是最合适的,让客户界面直接调用中间层提供的接口,从而执行实现接口的类的代码,这样来才能操作类中存放的数据。但是我们一般用Midas的cds和dsp的话,都是利用它们的数据封包功能和一些事件来传送操作数据的,很少通过接口,但不用接口就很难实现中间层的数据访问 功能独立出来,除非将data封包做为接口方法的参数来传送。但这样好像就没必要用cds和dsp以及它们的事件了,直接用com接口实现整个系统罢了。
   不知各位做多层系统时有没有这样的疑惑!?

解决方案 »

  1.   

    呵呵,我也疑惑,我也问过,牛人们回答说MIDAS是做分布式的,不是做多层的:)
      

  2.   

    D5开发人员指南里(p1105页)不是说:
    Midas(“Multier” “Distributed” Application Service Suite)可以帮你建立多层应用程序。那这里的分布式应该如何理解呢?
      

  3.   


    我当初在考虑架构的时候也迷惑过,现在做的系统中对于数据这一层也并没有像理想状态那样用一个独立层来暗箱操作,我采用的是数据字典/COM+的方法,还比较实用,但有的地方要想完全实现面向对象的确有很大的设计难度,一旦考虑稍不全面的地方,需要用大量的代码来补救,实现成本太高了,也痛苦啊也希望众高手参与到这个话题中来,把你们的星星亮出来,我们一起数吧
      

  4.   

    在forum.vclxx.org找到一个相关的粘子:
    Minor 
    幼幼班 
    China 
    40 Posts Posted - 04/13/2001 :  06:47:54       
    --------------------------------------------------------------------------------
    李老师你好,我是深圳的一名读者,你的3本著作我都买来看了,从中我学了许多东西。
    在《系统篇》中你对中间层的设计作了介绍,如中间层由企业对象、功能对象、数据对象和实体对象等组成。但要把中间层设计合理的确不容易,最近我看了Sten Sundblad著的
    《windows DNA可扩展设计》一书,这本书讲的是用Visual Basic来实现Windows DNA架构。
    看完这本书以后,我在想用Delphi是否也可以做出符合Windows DNA架构的N-ties应用程序。在《高级篇》中李老师提了一下Ado和Mts/COM+都是Microsoft提倡的DNA架构中的非常重要的技术,但如果我只用Midas和Ado,而不用Mts,是否也可以实现WindowsDNA架构呢?
    李老师您到过深圳吗? Gordon Li 
    班長 
     Taiwan 
    945 Posts Posted - 04/14/2001 :  17:20:52         
    --------------------------------------------------------------------------------
    雖然看不十分明白,但是我試著猜猜看。>如中间层由企业对象、功能对象、数据对象和实体对象等组成。但要把中间层设计合理的确不容易是不容易,但是先具備觀念是第一步,接著可以找有經驗的人一起做做看。>Sten Sundblad著的
    >《windows DNA可扩展设计》一书,这本书讲的是用Visual Basic来实现Windows DNA架构。這本我沒有看過,可是即然是討論DNA,應該是要使用MTS或是COM+吧。>看完这本书以后,我在想用Delphi是否也可以做出符合Windows DNA架构的N-ties应用程序當然可以,你可以參考我的第3本書,ADO/MTS/COM+程式設計篇>但如果我只用Midas和Ado,而不用Mts,是否也可以实现WindowsDNA架构呢?可以實作出N-Tier的應用系統,但是不是標準的DNA架構>李老师您到过深圳吗?還沒有機會去過,應該找個機會去看看。李維 ----------------------------------
    很遗憾,我用的就是MIDAS+ADO,那看来无法做出标准的DNA结构了,难怪我有疑惑了。
      

  5.   

    说实话,我没用过MIDAS,说的不对的地方大家批评:)
    总在MIDAS版转,没吃过猪肉但见过猪跑:)看见大家都是在前台放一个ClientDataSet,直接赋一个SQL语句给后台,觉得还是典型的两层结构嘛,和ADO连数据库没有什么分别,不同的是用MTS/COM+的话,因为DCOM的限制,可能在穿越防火墙方面有不足,所以MIDAS有Socket的连接方式,所以我觉得MIDAS主要是为分布式而不是多层而生的,既然MIDAS和ADO差不多,ADO能做到的我想MIDAS也可以做到,只是设计时如何发挥MIDAS的优越性的问题了。
    瞎说一通,引高手来拍砖:)
      

  6.   

    关于多层架构的方案非常之多,没有说哪种是最好最理想的。
    比如微软 以前宣传的DNA架构,以及后来演变的。NET架构。JAVA的架构则更多,可以简单三层,也有再扩展成五层(数据存储,
    数据抽象,业务逻辑,业务模型,显示),
    是把很多分布式设计思想发挥更彻底。BORLAND则推出了独有的MIDAS,不过它不是作为一种独立多层架构推出,
    而核心主要是数据集打包传递的一种快捷开发技术。软件仍是以用为本,以上架构仍是为了系统更有弹性,更易维持,更易更新,
    更易扩展。除开上面大的方面,程序员在具体实现的时候,思路偏重点也各有不同,
    仁者见仁,智者见智,只要能自圆其说,只要系统能从分布式设计中带来
    自己体会到的益处就够了。
      

  7.   

    正如楼上所说的,MIDAS 本质上是数据集打包传递的一种快捷开发技术。MIDAS 和 DCOM 、COM+ 等分布式技术是两个概念。ClientDataSet 和 DataSetProvider 隐蔽了太多的实现细节,内部实现还有很多不尽如人意的地方。 我们完全可以对它们进行改写使之符合自己的要求。
      

  8.   

    都在说分布式设计,那‘分布式’应该是指的什么?指的是用thin客户的基于网络的应该系统?
      

  9.   

    我使用Midas用到的只是它的数据封包技术(可以获得XML数据包,类似ADO.NET的内存表格),从来不使用DataSetProvider来抓取-传送数据(“直接”访问数据库,有破坏多层逻辑结构的嫌疑)。如果要抓取或者修改数据,还是通过声明并实现特定接口方法来做,抓取数据可以返回Midas XML数据包,也可以传递Midas Delta数据包进行数据写处理。