如何设计基于borland midas三层架构?(罗迪平)20691

如何设计基于borland midas三层架构?(罗迪平)20691

ID:20865759

大小:27.50 KB

页数:5页

时间:2018-10-17

如何设计基于borland midas三层架构?(罗迪平)20691_第1页
如何设计基于borland midas三层架构?(罗迪平)20691_第2页
如何设计基于borland midas三层架构?(罗迪平)20691_第3页
如何设计基于borland midas三层架构?(罗迪平)20691_第4页
如何设计基于borland midas三层架构?(罗迪平)20691_第5页
资源描述:

《如何设计基于borland midas三层架构?(罗迪平)20691》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何设计基于BorlandMidas的三层架构?(罗迪平)20691摘要:本文简要阐述了Borland的MIDAS的解决方案的3个缺点:线程管理能力、数据管理能力、数据库连接管理能力。这些都构成了中间层效能的致命弱点。本文尝试提出若干调节器以改善上述能力。这些调节器的讨论有助于设计者理清中间层的使命,从而使多层架构的设计更科学。如何设计基于BorlandMidas的三层架构?罗迪平[关键字]COM,MIDAS,调节器。关于Borland的MIDAS各处介绍颇多,这里不作概念性的介绍。MIDAS建立在TRemoteDataModule上,即建立在COM+上。在数据库应用中、数据库的并发

2、操作是经常发生的,尤其是在关键任务(如银行、邮政、医院、电子商务等)应用中,所以要设计多层架构的中间层必须满足并发请求的需要。所以TRemoteDataModule的模式必须选用多线程的方案。但是,是不是每一个需要COM服务的客户都开一个线成为之服务是最好的呢?在非冲突的数据访问的计算任务中是这样的,但在有冲突的数据库访问的时候就不是了。例如客户C1要想对表T1进行插入,客户C2要想对表T1进行查询,由于不知道港插入的数据是否在查询的范围,所以主流数据库系统(如Oracle,MSSQL等)都在客户C1对表T1进行插入的时候锁定了整个表或页,客户C2必须等待。这时候即使C1和C2用不同

3、的线程执行也不会提高整体性能,相反还要付出数据库进行调度的代价。由于Apartment线程模式只提供了4倍于CPU个数的线程创建能力,所以TRemoteDataModule所用的Apartment模式也只有4倍于CPU个数的线程。这样远远不能满足更多用户并发访问的请求。而采用Neutral模式了之后,并发访问的TProvider就不再是客户独享了,所以所对应的TDataSet的状态冲突管理成了令许多程序员头痛的突出问题。一般地的说,客户数=COM实例数>线程数>数据库连接数。所以COM实例分配到线程需要适当的调节,不幸的是,现有的机制只提供了平均分配的算法,而我们更希望基于COM任务

4、负担的分配算法。由于COM实例数>线程数,所以,在Borland的TRemoteDataModule上放置数据库连接和TDataSetProvider是不明智的,因为多出来的COM得不到线程服务(即处理机),所以闲置,给数据库造成多余的调度负担和保持网络连接的通讯负担。这样,合理的机制至少需要一个COM调节器,一个线程调节器,一个数据库连接调节器。接下来,我们看看Borland的TDataSetProvider、TDataSet裔(如TTable、TQuery、TADOTable、TADOQuery等,下仅称TDataSet)和TDCOMConnection(或TSocketConn

5、ection,这还需要一个Socket中转的服务器)、TClientDataSet搭配的一种情况。当TDataSetProvider接上TDataSet后放在TRemoteDataModule,客户端用TClientDataSet连接TDCOMConnection(或TSocketConnection)访问时,TDataSetProvider从所连接的TDataSet得到数据,打包后通过COM机制发给TclientDataSet。之后呢?当TClientDataSet由最终用户改动后执行ApplyUpdates,结果让我们大失所望,TDataSetProvider所连接的TDataS

6、et的数据并不改动!TClientDataSet通过CommandText执行的SQL更不用说了,不仅TClientDataSet自己的数据不改动(即使该SQL修改了本TClientDataSet所对应的表),TDataSetProvider所连接的TDataSet的数据一点都不改动。换而言之,TDataSetProvider所连接的TDataSet不能和后台的数据库系统数据同步,因而不能循环被多个TClientDataSet使用,即,没有缓存数据的作用,所有客户都分别通过中间层从数据库服务器上分别取得数据,而不因为有一个中间层而省了什么。所以,我们不能指望不编写代码就能实现真正的多

7、层架构来提高在不同的网络通讯能力的环境的应用的性能了,Borland没有提供便利的MIDAS,只是一个数据代理而已。上述的三点讨论,我们希望的基于COM的真正的多层架构至少需要一下要素1用于管理配置的GUI用户接口,2COM服务器和客户端,3多线程,4数据集,5数据提供者,6数据库连接,7暂存数据的数据集,8SQL执行器,9COM调节器,10线程调节器,11数据集调节器,12SQL执行器调节器,13数据库连接调节器,14数据压力指示器,15商业业务监视处理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。