请看完这篇文章后,再发表评论。
http://bdn.borland.com/article/0,1410,27860,00.html

解决方案 »

  1.   

    楼主以前不是用MIDAS做三层的吧,说说认为MIDAS不是三层的理由吧:)
    欢迎其它用MIDAS的兄弟讨论
      

  2.   

    分布式,不是多层式,有启发。
    哪位有用MIDAS+多层结构的例子,可否给讲一讲如何使两者结合的?
      

  3.   

    首先,我对三层结构的准确定义并没有什了解,只是说一点自己的看法,请大家指正。
    其实我觉得不能说DataSnap是不是三层结构的,重要的是你用DataSnap做出的程序是不是三层结构的。
    三层结构的最主要特点就是界面、业务逻辑和数据存储分离。
    我一般不在客户端直接操作ClientDataSet,我觉得这样会把业务逻辑的实现搬到客户端来,更常用AppServer提供方法供客户端调用(好象不能算是用了DataSnap吧?我现在做的项目干脆直接使用TCPClient+TCPServer了)。
    我觉得使用DataSnap做三层结构时可以这样使用:
    客户端 <==(COM+, Socket, Corba等)==>应用服务<==(DataSnap)==>RemoteDataModule<==ADO,BDE,DBX,ODBC,DAO等==>数据服务器
    当然你也可以把它称作多层结构,但我觉得它只是用RemoteDataModule把数据存储部分扩展到了多台机器上,从逻辑上讲,仍然属于三层结构。
      

  4.   


    DATASNAP是一种打包技术,BORLAND只是为突出才加大力强调,
    它是为分布式开发服务的,一起学习,听听大家的!
      

  5.   

    "我一般不在客户端直接操作ClientDataSet,我觉得这样会把业务逻辑的实现搬到客户端来,更常用AppServer提供方法供客户端调用" 同意plainsong(伤心的风) !我觉的三层或多层的企业应用的主要目的就是使客户端程序容易分发何维护后再分发,将业务逻辑放到中间层有助于此
      

  6.   

    也就是说客户端如果用ClientDataSet直接提交数据到服务器进行存储是两层,不是三层?
    ClientDataSet是不是也可以直接传SQL到后台的服务器?
    MIDAS除了封包之外,还有什么优势吗?听说负载平衡功能也很弱。
      

  7.   

    plainsong(伤心的风)你说的TCPClient+TCPServer,是不是用SOCKET技术,由客户端传功能字符串给应用服务器,然后应应用服务器判断客户端传来的字符串所要代表执行的功能,是吗?
      

  8.   

    "我一般不在客户端直接操作ClientDataSet,我觉得这样会把业务逻辑的实现搬到客户端来,更常用AppServer提供方法供客户端调用"
    不明白你这句话的意思!
    怎么不对clientdataset进行操作,你的数据不是经过打包传给clientdataset吗?或者说通过某个方法传递data给clientdataset吗?如果这样有很大的复杂性:
    1:字段的label问题
    2: lookup字段问题
    3:字段的事件问题所有这些都需要在客户端进行处理的
      

  9.   

    midas只是一种中介引擎,
    分布式<>多层式
    分布可以是2-N层,
    我们开发COm+,在客户段借助Midas可以取得远程数据封包。
      

  10.   

    当然,我说客户端不应该直接操作ClientDataSet也不是绝对的,比如如果要给DBMS做一个操作界面(如Object Browser之类)。
    不过,做为三层结构的应用开发,一定要注意分析出应用所在的业务模型,而数据库中的对象只是存储这个模型的介质。所有的功能都要基于这个业务模型,而这个业务模型的实现是应该放到业务逻辑层(即应用服务)的,不要和UI耦合在一起。
    我要说的并不是不操作ClientDataSet,而是要在业务逻辑层上去操作,而不是在UI层上去操作。当然,你也可以把UI与业务逻辑放在一台机器上或放在一个程序中,但一个程序中的代码也可以分为两层,不要让它们纠缠不清,这仍然是多层结构。我们说的三层结构(或多层结构,我一直认为它和三层结构没有本质区别)不是指物理上的,而是只逻辑上的。
      

  11.   

    http://expert.csdn.net/Expert/topic/1662/1662920.xml?temp=.8867914
      

  12.   

    同意 plainsong(伤心的风) 我一般只把clientdataset当作数据的接收器(从中间层接受)和发送器(发送到中间层),充分利用其data和delta属性,尽可能少在clientdataset里面做和业务相关的逻辑判断。
      

  13.   

    仅使用ClientDataSet来接收RDM中所获得的数据,所有的对后台的操作(包括SQL语句)都放在RDM中,也就是说在客户端不入任何BDE控件,这样应算是三层结构吧
      

  14.   

    文章写的不错,但这个问题已经讨论过很久了,
    我觉得关键是中间层的设计,以及中间层提供给客户程序的接口是怎样的,
    大部分认为midas失去三层概念的人,认为业务逻辑和控制逻辑绝对不应
    该直接交给客户,这样他们写出来的midas程序,极其的接近用com直接写
    出来的程序,失去了midas的意义.我个人认为,如果你的程序,不需要对
    数据条目进行直接的处理,midas并不一定非要使用,相反全部封装进com+
    中,会有很大的弹性,但是如果客户端有一定量数据界面要进行处理,应该
    在中间层设计部分midas的接口,让它来替代大量的繁琐代码.归结起来,关键是要对你自己的项目充分的理解,选择合理的架构,而不要
    一味去追去时茂的概念.效果决定一切,能抓住老鼠的才是好猫~~~~moto愚见~
      

  15.   

    MIDAS是一项多层分布式应用的开发技术,不是实现技术,它是基于COM技术实现的。
    至于你做出来的应用是否是多层,是否分布式则要看你是如何设计实现的。