下面是我在大富翁上看到的一遍帖子,感觉问题提的很好,所以转到这里来看看问题:关于Delphi下如何设计三层应用的问题 ( 积分:10, 回复:9, 阅读:452 )
分类:MIDAS / DCOM ( 版主:Chenlili, 房客 )  
来自:fangfei, 时间:2002-06-14T16:04:00, ID:1163451 [显示:小字体 | 大字体]-[返回] 
偶近段时间来做个三层系统玩玩,用D6,可有个问题总觉得特别扭,所以和各路英雄交流一 
下,看看大家是怎么做的。 我的结构是前端:用Delhi开发的Application和Browse,中间COM+,也用Delphi开发 
COM+ component,后面SQL2000。用MIDAS在COM+ component之间及Client和中间件之间传递 
数据。 基于中间件的三层结构设计思想上是要把业务逻辑包装在中间层,以服务的形式供Client调 
用,可MIDAS的基本思想却是ClientDataSet通过各种连接(如DCOMConnection)向 
DataSetProvider取数据。所以总觉得两都的设计思想不一样,用起来特别不爽。虽然也可 
以自己从DataSetProvider取得MIDAS数据封包,再从COM+ component的接口传给Client, 
但这样那些XXXConnection好像就没什么用了。 不知各位大侠是怎么做的,还请指点迷津,有真知灼见者本人再开一贴高分相送!
 

解决方案 »

  1.   

    没搞过
    看来要搞了,要不然就不能混了
    hehe
      

  2.   

    需要高手讨论。我认为客户段有SQL语句本身就是违背了三层,
    不知道有什么意见?
      

  3.   

    我不是回答问题,是问问题. 
    李维的书中通篇充斥了这个词,说MTS可以实现企业逻辑,但关于MTS他给的例子统统只是数据的通道连接, 
    表面上跟MIDAS无异.那么企业逻辑又体现在哪里?我的理解所谓企业逻辑应该包含一切 
    C/S客户端能做的事,不只是一个数据通道呀.!
      

  4.   

    我认为客户段有SQL语句本身就是违背了三层 
    我同意这个说法!
      

  5.   

    最近我也用了三层结构写了一些程序,在这里谈点心得,不正确请大家不要见笑。我是将对数据库的所有操作放在了RemoteDatamodule中,通过在IAppServer接口中注册一系列的方法将对数据库的所有操作全部封装在方法中,在客户端通过socketConnection控件的IAppServer调用这写方法。不过我觉得如果不是大数据量的操作C/S结构更方便一些,小数据量反而觉得体现不出优势来。
      

  6.   

    同意zleeway(leeway) 
    个人认为三层结构只是两层的一个子集。
    业务逻辑放到一层,可以是程序逻辑结构更清晰,更合理化同时对将来的软件更新和升级也有很大的帮助。
      

  7.   

    那我敢问楼上的一个很简单实际的问题:
    客户段有个EDIt,dbgrid,用户在edit里输入查询条件比如ID>100;然后把结果显示在DBGrid里
    就是这么简单,我脑子里至少有5-8中实现的办法(不关是假三层还是真三层)。
    我想问楼上的用什么方法才能真正体现三层的原则呢?
    请教!
      

  8.   

    我个人认为,在中间层有比较复杂的sql语句出现也是错误的做法,更不要说客户端有sql语句了,数据库设计应和中间件严格分开,这样分工会更明确,数据库设计和中间件设计以及客户端就可以有不同的人来做了,还有一个人员就可以专门来为这三者设计接口和全局的指挥这三者的工作了。
      

  9.   

    设计思想怎么会不一样呢?DataSetProvider就是提供接口的呀,用了它会更简单的,如果不用它,tDCOMConnection不是非要吧