小女子不才,请大富翁们指教!(50分)

  • 主题发起人 主题发起人 Delphi小豆
  • 开始时间 开始时间
D

Delphi小豆

Unregistered / Unconfirmed
GUEST, unregistred user!
看到书上说,为什么要使用三层结构,是为了将用户界面,业务逻辑和数据库运用分割开来,目的是便于应用程序的扩展,维护。减轻开发人员的工作量。
但是现在我看到有的文档说,客户端的TClientDataSet组件可以和TQuery等一样用,那我们的SQL语句和对数据库的操作仍然是在客户端啊,应用服务器端只是把TSocketConnection,TDataSetProvider放在上面而已,只起到了一连接的作用。那么象这样的操作,和以前的2层有什么区别呢,并没有便于维护,扩展啊?
小女子不才,请大富翁们指教!
谢谢!
[:)]
 
理论与实际是有一定差据的。呵呵呵呵。
没有银弹呀。
OO还都说好呢。
你要是真全按OO那套来的话。
慢死你不偿命!!!!!!!!!!!
 
其实我一开始也是这样理解,不过你可以试试做一个稍为复杂一点的
工程你就知道这种方式的好处了,比如你平常用
select * from XXXXX
来取你所需要的数据。但是对于一些复杂的数据呢?可能就要用到存储
过程了。同样,这里就是三层的精华了,对于简单而且多变的查询可以
把SQL语句放到客户端,方便开发,对于一些业务规则放到中间层去,
比如说你要查询本月某种产品的出货量分析,包括优质品,一等品……
销售去向……总之假设很复杂的一个查询,而且每个月或者多长时间就
要做一次,你就可以把这个放到中间层来了,你的客户端只要告诉中间
层“我要做XXXX这件事了”,中间层就调用相应的过程,返回数据给客
户端,以后可以还是同样的事,但是操作手法不同了,你只要改变一下
中间层的规则,就可以了。
客户端只是需要告诉中间层要做什么了,而不是怎么做。
小子不才,不知道解释清楚了没有,不过我自己也说的有点糊涂了^_^
 
对于突发的大量的数据库操作,
数据库可能忙不过来,造成效率低下,
可以利用中间层进行一下缓冲,就会有更高的性能
同时不让用户直接访问数据库,使数据库更加安全
 
用三层,要完全走出C/S的局限。
关键是设计上要下功夫。
1、不要使用无条件的SQL语句。Select * from table这样的语句可以让你的服
务器死机,我的做法是先写一个方法,把客端的数据请求送到服务器,服务器初始
化好SQL的条件参数。然后,客户端才Open.这虽然麻烦一点,但是,得到了速度优势。
2、尽可能把资料在服务器上处理完,把结果送给客户端,不要从服务器取来数据
到客户端处理。比如,我想得到一个用户的菜单权限,我只传用户号到服务器,服务
器经查询,处理,最后用参数返回结果,根本不使用任何数据元件来处理。
3、多定义一些自己的方法。用方法来处理客户请求。只有不得不使用数据表连接
时才用ClientDataset.
4、对于功能性的东西,比如一些“过帐”处理,根本不要搬到客户端处理,客户
端只需要送出要处理的关键字给服务器,所有的处理要在服务器上完成,完成的结果
才提示给客户端。
5、功能划分上要分清。客户端是操作员与机器的对话界面,服务器是实现对话结果
的途径。
几点愚见,仅供参考,我是有信心的。
 
对了,LiChaoHui兄一席话,又让我想起一个例子。
说是比如一个公司中午员工吃饭,开始是每一个人都自己去买,这样的效率当
然是很低下的,相当于客户端直接在数据库取数,而后来成立了一个外买办,
专门负责中午饭的问题,就象中间层,先收集所有员工的需求,然后再出去买,
这样的话,可能有20个员工都要汉堡,你只要一次去买20个汉堡就行了,不用
分20次去买一个汉堡了。
 
娃娃的解释不错!!
 
谢谢大家的解释,虽然我还不太能理解,但我想有了实践经历才能体会到。总之谢谢大家了!
 
后退
顶部