关于三层的几个疑问,有经验的朋友进来看看。(200分)

  • 主题发起人 主题发起人 mj_hc
  • 开始时间 开始时间
M

mj_hc

Unregistered / Unconfirmed
GUEST, unregistred user!
一、下列那种方法比较好(效率如何?):
1、用midas组件连接客户端和中间层,这时中间层需要很多的query连接数据表。
2、客户端象中间层传递sql语句,中间层只需要用几个query执行sql语句,但这样
客户端是不是写的比较麻烦(因为要生成sql语句)?好像不是瘦客户端。
二、随着webservice得升温,com/com+是不是要灭亡了?现在做三层系统用什么构架呢
(com+还是web service)?
。。。。。
 
hehe,发表以下我的看法(不成熟,仅供参考):
1。要实现真正的廋客户,最好把企业逻辑封装到中间层,客户端只是简单的处理一下基本
的数据操作。所以,客户端用clientdata就可以,不用传递sql语句。其实clientdata的功能比较强大,包括
永久字段,多表关联等等。
2。用webservice还是com/com+都无所谓,关键是看你做出来的系统是否真正的稳定,是否
经过了严格的测试。我只做过com/com+,webservice没有做过 。
 
to:mj_hc
真正的中间层是客户层和数据层之间的阻隔。客户层并不知道数据层的类型和结构,
当然也不会写SQL语句。比如客户端可以采用一些数据对象实现对中间层的访问。
WebService与现有的组件模型(DCOM/COM+,CORBA,EJB等)并不冲突,只是通过
SOAP(xml)统一了Internet的对象访问(或者组件,服务等等),当然并未提供
企业大型组件模型中的事务、负载平衡以及各种POOLING技术。
 
to hotplum:
>>客户端可以采用一些数据对象实现对中间层的访问
是不是就是客户端通过dcomconnection/socketconnection连接中间层,然后通过一些
clientdataset控件访问中间层的数据?这样的话那不是要很多数据集控件?一张表对应一
个?
 
是啊,向应用服务器传送SQL,是一个严重的错误
 
我們系統中間層只有一個provider 和一個TQuery.什么也沒了﹐你信嗎﹖﹖﹖
^_^ 就這么簡單
 
楼上的这么COOL啊,怎么实现。这样会不会能问题啊 O_O[8D]
 
to coolzew,
全部用动态的sql语句?sql语句写在哪里?中间层还是客户端?
 
to:mj_hc
中间层的构建有多种方法,与系统的构建是息息相关的。
我们现在做的项目中大多数是为了“分布式”的“分布式”,比如后台选用Oracle数据库
,应用服务器采用WebLogic(通过JDBC访问Oracle),把所有的数据库操作定义到Weblogic
中,客户端用delphi或VB通过HTTP连接Weblogic。这样的应用便于搭建,性能稳定。
当然我们也可以用midas的思想,不过SocketServer不适合商业应用,Dcom/com+有局限性,
不过,使用什么工具和组件模型并不重要(因为不同的工具和组件模型适合于不同的
环境),关键是分布式中软件分层设计思想和OO思想。简单的说,就是数据层与业务逻辑
层以及应用曾分离,比如应用层通过标准业务数据对象访问中间层,中间层通过解释
标准业务数据对象后生成sql语句访问数据库返回标准业务数据对象结果,当然标准业务
数据对象可以用XML定义。这样你就可以在此基础上编写标准业务流程生成器等等,
这才是软件设计的方向!

 
to coolzew
同道
 
基本同意hotplum,他说的是真正意义上的三层结构,是多层应用的实质所在。
而coolzew说的只是一种称之为"假三层"的系统,那个应用服务器充其量只是一个数据转发装置,
它只是做到了隔离客户端与后台数据库的通讯,并非一个瘦客户,作为三层开发中的补充和部分
功能的权宜之计还可以,如果全部这样做,对系统的好处并不多。
 
同意hotplum,这才是三层的真正意义。
不管是COM+还是。NET还是J2EE其实仅仅解决了中间业务的表现形式,
但是如果没有使用业务封装的思想来设计程序架构,有如何能体现出三层的优势呢?
至于业务逻辑封装的粒度则要根据实际应用来考虑了。你的系统究竟是业务驱动,文档驱动
还是工作流驱动?不同的运行模式都会导致粒度的划分。至于是一个Query好还是一张表建立
一个COM,其实并不是主要问题。
 
Borland 的 midas 使用起来很繁琐,
李维的几本大书上实现一个小小的功能都要花费许多功夫,
如果用DCOM连接,还要作许多设置。
通过2个月的试验, 我还是放弃了Midas, 而选择了Asta
作了一些企业逻辑对象放在APP层, Client层只需去调用
(就像调用普通函数一样)即可。
用Asta做3层的难点在于文档极少, 中文的没有(用Google搜索过).
但是一旦入门, 就像在写C/S两层和写函数一样简单。而且4Liux
版本已经出来了, 不必受老B的气啦 :))
 
to lissdd:
我马准备放弃midas,你能否介绍一下Asta,谢谢!!
E:delphinet@sinohome.com
 
关注此题。
to lissdd: 麻烦大侠介绍一下 Asta。
4Liux? LINUX?
 
我想做一下补充,我们现在都对实现三层时的SQL语句怎么处理产生困惑,是因为对业务的
需求的分析方法并不适应分布式开发,事实上分布式开发,要求我们的分析和设计方法
必须基于面向对象的。
 
Asta 分为Asta 2.6~3.0的windows版本和 AstaIO for Linux版本
AstaIO 是发展趋势, 它跨平台、高度模块化、支持插件以适应新的
兼容旧的如Corba、Xml等。
Asta在使用上简单, 其一个控件TAstaClientDataset就相当于TQuery、TTable、
TStoredprocedure、TUpdateSQL等之和, 却又有TClientDataset所有的瘦客户
特征, 如分段传输、缓冲更新、公文包模式等, 还支持实时压缩、加密传输。
其Socket根本不用任何配置, 客户端只需要知道Svr的IP和端口即可。
我设计出来的最终结果只有两个EXE文件:
一个是中间层的Server app 放在服务器上, 大小1.6M
另一个是集成了Email、内部QQ的瘦客户, 大小1.7M(因为用了许多图片)
现在正在做象金山毒霸的自动升级功能。
 
to lissdd,
服务器端怎么编程?客户端我今天试了一下还比较方便,有asta方面的资料么?
E:mj_hc@sina.com 谢谢!分数再开贴给你:)
 
服务器是利用Asta自带的通用例程改造而成, 自己写很烦杂, 且没有文档。
改造服务器的要点是利用TAstaBusinessObjectManager编写企业逻辑,如果普通
函数一样简单。
我用的是其InterBase服务器例程, DB就用Delphi6自带的5用户许可的IB,
用了Asta后, 在DB看来只有一个客户, ;)
至于资料, 我也只有Asta3的帮助文件, 网站上有, 如果你下载不了,我就发你。
 
说一句不该说的话:
我下了一份ASTA, 当然是试用版, 运行的话离不开Delphi的IDE,
我想这是中国绝大多数程序员比较关心的问题吧,有什么办法吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部