多层初学者提问,希望各大虾赐教。。。 (200分)

  • 主题发起人 主题发起人 rocknet
  • 开始时间 开始时间
R

rocknet

Unregistered / Unconfirmed
GUEST, unregistred user!
1,业务逻辑在AppServer的哪个Unit哪个位置写?客户端怎么调用?
2,用了TClientDataSet加各种数据控件后,我感觉AppServer就相当于一个数据库的代理而已,业务代码还是要放到客户端写啊,不然那些数据控件怎么显示想要的东西啊?
3,怎么支持数据库事务?在哪写?
 
写在实现了 AppServer 接口的COM对象里,客户用 AppServer 接口调用远程COM对象的接口。
 
如果你把真正意义上的多层写成传统的二层,那就没意思,还是一个胖客户。
在多层中,客户的主要功能是发出数据请求、显示数据、递交数据。
处理数据的主要任务放在数据库服务器和应用服务器,但某些业务规则还是可以且必要放在客户端应用上。这样可以充分发挥客户计算机的计算能力,而且用户界面上的业务规则不得不写在客户端应用上。
对数据的大量处理都应该在服务端实现,充分发挥服务器计算机的高性能,也有助于业务规则集中化。
 
用TClientDataSet加各种数据控件
属于没事找事的3层
 
其实 MIDAS(DataSnap) 的原理就是这样的,只是它已经用组件的形式来表现。
很多细节的东西程序员是不必理会的,除非你想知道它是如何被设计出来的。
 
非常感谢黎永欢和沉香屑的回答。
我要实现这样一个软件,一个市级政府部门的简单的数据库应用,他要求这个软件在互联网上应用,使各县的下级部门能联机办公,互相查询所要的数据。
你说,我应该怎样解决这个问题呢?要考虑的问题很多啊,比如稳定性,安全性。
 
黎永欢说的有道理。
SQL Server —— AppServer —— TClientDataSet……
这是3层结构的事例,它是基于BDE数据库引擎上的。
整个构架处理数据的部分主要是AppServer应用服务器。
数据服务器为AppServer服务,AppServer为TClientDataSet服务
这个构架安全性能强。只有当客户端发出Update指令的时候AppServer才将数据提交
到数据服务器上。需要MIDAS的动态连接库。
 
to rocknet:
我以前用过 Ms sql server 2000 + ADO + MIDAS 写过三层的应用,我把主要的业务规则
都放在了 数据库服务器 和 应用服务器,让客户端取回的数据是仅仅满足要求的,客户端
不进行对数据的大量处理,唯一只是向要递交的数据提供数据。
也许你在2层的时候,习惯了什么都写在客户端,比如对数据集的遍历和修改其值,以达到某种业务规则的需要,但这样做有许多不好的地方,当然这在2层的时候是没有办法的事。
 
上述我说的对数据集的操作,如果在数据库服务器中进行处理的话就好得多了。
这类操作对于数据库服务器是一件轻而易举的事,而且是强项,也是关系数据库的优势所在,关于关系数据库的知识你可以参考一些书籍和资料,在此我不多说。
把这样的业务规则放在客户端,会使整个网络(LAN)长期处在高负荷状态中,网络的数据流量的增加就影响了客户端应用的性能。
 
如何才能把网络负荷降低?
为了解决这个问题,于是就出现了数据缓冲技术,CachedUpdates就是其实现之一。通过数据缓冲技术可以大大降低网络负荷,而有效地提高了客户端的性能。(请参考有关“数据缓冲技术”的资料)
 
在大多数的2层应用中,仅仅是把数据集中在一个地方而已,客户端应用的使命仍然与单机时代的应用一样。
随着应用的日益复杂化,要服务的客户端也大大增加,这样的设计模式就越来越暴露出它的
弱点。
为了适应应用的要求,就一定要有新的设计模式,多层分布式计算就是这其实现之一,多层是指把业务规则的实现分为多个部份,分布式计算是指把这些部分的业务规则的实现放在不同的计算单元中(计算机)。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部