CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

三层构架问题

楼主zhuang094(hz-huang)2001-12-11 10:10:18 在 VC/MFC / 基础类 提问

有做过三层构架的朋友们吗?请讲讲三层构架是怎么一回事?为什么要采用三层构架,有什么好处?采用三层构架主要是运用了哪些技术,其关键部分是什么?有哪些是特别要注意的问题?  
  欢迎这方面的前辈指点,也欢迎新手一同学习。 问题点数:100、回复次数:29Top

1 楼TigerHu(愁煞人)回复于 2001-12-11 10:12:47 得分 2

我来听课....Top

2 楼cdone(cd)回复于 2001-12-11 10:35:47 得分 2

学习Top

3 楼zzh()回复于 2001-12-11 10:35:49 得分 5

最主要的技术有中间件技术(包括COBRA,JaveBeans,COM+/DCOM/COM这三种)Top

4 楼tpProgramer(tp编程者)回复于 2001-12-11 10:59:06 得分 5

三层的好处很多:  
  比如具有灵活性,可以随意调整组件的位置和服务器的位置,可以增加和修改各个组件,更主要的是具有了商业逻辑的灵活性,因为中间层的商业逻辑层负责商业逻辑  
   
  比如说容易更新,不用重新编译整个工程就可以更新功能,替换一个组件不会扩大影响到整个工程  
   
  比如说容易维护,各层意义明确,不会出现商业逻辑和各种访问控制混合在一起的情况,而且分层的好处是,各层可以使用不同的配置,各个服务器的维护也变得简单  
   
  比如说有天生的网络化,只要配置好一个外部环境,各个组件运行时不会注意到自己访问的是网络资源还是本地资源,这种分布式的好处对于一个企业来说是急需的。  
   
  Top

5 楼zhuang094(hz-huang)回复于 2001-12-11 11:02:03 得分 0

对三层构架我不熟悉,请问三层构架是指在同一个应用程序中分成了三个主要的部分:数据处理(对数据库的操作)、逻辑事物处理、用户接口,还是被分成了多个应用程序?Top

6 楼halfdream(哈欠)回复于 2001-12-11 11:30:38 得分 70

三层构架可以从逻辑上分的,在物理上也可以分开的.  
  拿DCOM为例,一般中间层可以是一个或多个DCOM组件,  
  可以是单个或多个DLL或OCX或EXE文件,它封装了相对稳定的企业逻辑和对数据库的访问.  
  因为它们之间调用是二进制标准的..  
  所以你可以用VC,DELPHI,BCB开发中间层,同时可以用VB,DELPHI甚至ASP开发相对易变的界面.  
  Top

7 楼zhuang094(hz-huang)回复于 2001-12-11 15:04:57 得分 0

对于CORBA,当用户连接上来,完成本次请求操作后是不是就被释放掉了,等到下次需要的时候再连接上来?Top

8 楼Hover_cn(翔)(:public IUnknown)回复于 2001-12-11 15:17:40 得分 2

听课,占个位置Top

9 楼zhuang094(hz-huang)回复于 2001-12-11 17:20:39 得分 0

知道的和不知道的都可以来嘛,知道的人教教我们这些不知道的人,不知道的人来这里听听,顺便up一下。Top

10 楼Flwu()回复于 2001-12-11 18:45:51 得分 2

来学习Top

11 楼XDZXG()回复于 2001-12-11 19:37:42 得分 2

楼顶,楼中和地下室,地下室是保密的(数据库:想象你家村了几袋大米会让别人知道吗)  
  你们家做饭总不能在楼顶做吧,至于楼上,你可以在楼顶上吃饭呀Top

12 楼halfdream(哈欠)回复于 2001-12-11 23:24:14 得分 0

对于CORBA我了解不多,不过,一般来说,很多处理都是异曲同功的,都会考虑到效率因素。  
  客户端连接上中间件后,中间件会增加对象的引用计数,一般都会相应的产生服务线程,  
  创建服务对象,一直到这个连接终止,再减少引用计数,释放相应资源。  
  Top

13 楼0aaron(向往)回复于 2001-12-12 00:07:59 得分 2

找本讲windows   DNA   的书看看就清楚为什么和怎样做了.  
   
  或找本com+的看,不过最好找的是用vc++语言讲的,不要找vb语言讲的.Top

14 楼zhuang094(hz-huang)回复于 2001-12-12 10:17:10 得分 0

如果我用一个多线程的应用程序来完成类似功能:一个线程负责处理用户接口(包括接收请求和返回请求结果,相当于用户层),一个线程负责逻辑事务处理(分析并处理用户来的请求,如果要对数据库操作,则通过队列发给数据库线程,同时也将数据库线程返回的结果送给用户接口线程,相当于逻辑事务层),一个线程负责对数据库的操作(相当于数据层)。另外还有一个主线程,用来完成其他的一些相关操作。  
  那么,对于较少的用户量,这些线程应该是能够胜任的。但是,当用户量达到几百、上千甚至更多时,那么很多问题就会随之而来。  
  首先,对于用户接口部分,我用一个(或多个)服务器套接字线程来接收客户连接,那么这些连接难道是一直保留吗(直到断开)?还是每接收一个连接请求,等到本次事务请求完成以后就将其断开,让它在需要的时候再连接上来。对于这,我不知道那些大的网站是怎么处理的(同时有成千上万个用户在线上操作)。  
  对于逻辑事务处理部分就不用多说了。对于数据接口部分,由于事务量的增大,有时很多(对一个请求)操作的数据量很大,耗时太长,很可能需要开多个数据库线程,这样在管理上又要多加小心。  
  我现在做的是一大型呼叫中心,最大支持1000个座席,这样需要对数据库进行操作的客户端就可能有1K(1024)个,而且大多数是需要对库操作较为频繁、数据量大。如果都直接连接数据库肯定是不现实的(那样数据库很可能就瘫了),因此需要一级缓冲对数据库加以保护,这也就是我这个应用程序的目的。  
  本来是打算买别人的中间件产品,后来公司考虑到节约成本便要我们自己做(我可是一点经验都没有   呜呜~~~~)。我想我这个应用程序实现的思想和三层构架、中间件是大致一致的,因此想多了解一些这方面的东西,借鉴这方面的解决方案,同时也希望想了解这方面的朋友多一个学习的机会,共同进步。  
  请广大此间的高手、前辈们多多指点!Top

15 楼hbs_biscuit(hbs)回复于 2001-12-12 10:26:47 得分 2

关注  
  Top

16 楼zhuang094(hz-huang)回复于 2001-12-12 14:36:45 得分 0

对于CORBA和COM两种技术,它们的侧重点分别是什么?即什么情况下应该采用CORBA技术,而什么情况下又应该采用COM技术CORBA是不是也和COM一样做成一个个的组件?Top

17 楼zhuang094(hz-huang)回复于 2001-12-12 14:37:02 得分 0

对于CORBA和COM两种技术,它们的侧重点分别是什么?即什么情况下应该采用CORBA技术,而什么情况下又应该采用COM技术.CORBA是不是也和COM一样做成一个个的组件?Top

18 楼ynyn(风林火山)回复于 2001-12-12 14:47:27 得分 2

gz,push,hehe,大家加油讨论呀,偶来听课Top

19 楼halfdream(哈欠)回复于 2001-12-12 17:10:02 得分 0

zhuang094(hz-huang),   呵..1000个连接...嘿嘿....  
  一开始就自己开发?做好头疼的准备吧:)  
  CORBA或DCOM只是两种不同的分布式标准而已,它们区别并不重要.  
  当然,CORBA多少是比MS弄出的DCOM要稳定些,另外,在UNIX下了支持CORBA.  
  它们也定义了自己通讯协议.对于访问量较大的WEB,有时是采用的,多台应用器加  
  一台负载均衡服务器,瘦客户运行在WEB服务器上。  
   
  可能这并不是你所需要的。  
   
  象你这种情况当然就不能保持连接的.  
  在设计你这应用服务器和客户端需要好好规划一下.  
  你先说的  
  >一个线程负责处理用户接口  
  >一个线程负责逻辑事务处理  
  >一个线程负责对数据库的操作。另外还有一个主线程  
  这种线程设计能支持的用户太少了.  
  至少也要象这样:  
  1,多个线程对数据库操作,因为很多数据库操作都花时较长,如果只用一线程这些操作只会串  
  行处理.  
  2,只是逻辑事务处理时间也许花得并不多,但逻辑事务往往离不开数据库操作,是单独用线程,  
  还是同数据库线程一起,由你安排.  
  3,这么多客户端连接,一个线程处理得过来否?如果可以,随你.  
  4,服务的线程可以固定数量,由一个线程池管理,队列一有请求到,就有一空闲线程为之服务.  
  5,应用服务对象最好采用无状态对象.  
   
   
  Top

20 楼EMeiMonkey(峨眉猴子)回复于 2001-12-12 17:56:23 得分 2

听课来啦!COM我还知道一点。Top

21 楼zhuang094(hz-huang)回复于 2001-12-12 19:29:31 得分 0

to:   halfdream(哈欠)   
  非常感谢能得到您的指点,对:  
  >一个线程负责处理用户接口  
  >一个线程负责逻辑事务处理  
  >一个线程负责对数据库的操作。  
  其实用一个是不够的,在用户接口部分我就开了三个(可能还不够)用户界面线程,每个用户界面线程都有自己的窗口用来进行消息处理(这样不会过多占用主线程);对逻辑事务处理部分我可以用一个线程(不够可以多开几个,实事上在我以前完成的ACD(Automation   Call   Distribution)程序中就支持呼叫队列和座席的分组,原理是一样的);对数据处理层我是打算开三个线程,不够也可以再加。  
  俗话说“量变引起质变”,以前我接触过的最多也就一两百(不超过300)个客户端,一下子扩充到上千个,肯定会引起意想不到的错误。我对这样的大型项目还没有经验,急需前辈们指点。对于每一层开多少个线程才合适,我心里也没底,线程开少了处理不过来,开多了管理上又不便。现在的设计思想基本上就象上面我所讲到的,各层之间彼此独立,数据传递主要是通过队列来完成,不过这样可能太耗内存。  
  我对开发大型项目经验欠缺,期望广大先辈批评指导。同时也欢迎csdn上的朋友和我一同学习,共同进步!Top

22 楼zhuang094(hz-huang)回复于 2001-12-12 19:35:56 得分 0

首先确定用户接口部分是否需要断开连接(这样的话对客户端来说,一次连接它不能提交多次事务处理请求,对客户端限制较大),如果不断开,也就是一直保持连接,那么对于服务器端来说,同时管理这1K个连接是否可行,需要注意些什么?Top

23 楼zhubo(rickyzhu.com)回复于 2001-12-12 19:38:53 得分 2

我对你的这个项目很感兴趣,怎么样同你联系阿,zhuang094大哥,你有MSN账号吗,我可以多向你请教请教?(我在公司,用QQ不方便!)Top

24 楼zhuang094(hz-huang)回复于 2001-12-13 08:54:12 得分 0

to   :   zhubo(zhunaldo)   
  E_mail:hz-huang@263.netTop

25 楼zhuang094(hz-huang)回复于 2001-12-13 11:14:01 得分 0

WuWu~~~   csdn上难道就没有做过这方面的高手吗?  
  up   up   up   !!!Top

26 楼zhuang094(hz-huang)回复于 2001-12-13 15:27:46 得分 0

另外,我想问问我这个程序应该在Windows98下还是在Windows2000下开发,它们各最大支持多少个客户端连接?Top

27 楼halfdream(哈欠)回复于 2001-12-13 18:21:17 得分 0

TO:zhuang094(hz-huang),  
  最好在WIN2000下开发吧,有很多工具辅助的,首先任务管理器可以帮助你分析你程序的效率,  
  每个用户连接所占用的内存。  
  Top

28 楼zhuang094(hz-huang)回复于 2001-12-13 18:26:46 得分 0

那么对最大连接数的限制情况又是怎样的呢?Top

29 楼zhuang094(hz-huang)回复于 2001-12-14 08:56:32 得分 0

看来csdn上没人了,算了,还是自己搞定吧。Top

相关问题

  • 请教三层构架的问题
  • 关于MIDAS的三层构架问题(高分相送)
  • 三层构架中 AS 端如何主动发送信息到 Client 端
  • 什么是企业级应用,以及三层构架的含义
  • 请教微软技术专家,关于用.NET构架三层应用的问题
  • 求各位大哥大姐帮忙详细解释一下什么是三层构架啊? 多帮忙啊!
  • 求各位大哥大姐帮忙详细解释一下什么是三层构架啊? 多帮忙啊!
  • 经常听到3层网络构架,是什么意思啊?
  • 我想知道学了asp.Net后去开发三层构架的程序,还要不要去学COM,MFC之类的?请给我点意见!谢谢
  • ########## 概念问题,100分相送:我是新手,请问在C#里怎么构架CS结构,WinForm下的三层结构?????

关键词

  • 线程
  • 数据库
  • 逻辑
  • 连接
  • 接口
  • 组件
  • corba
  • 用户
  • 客户
  • 应用程序

得分解答快速导航

  • 帖主:zhuang094
  • TigerHu
  • cdone
  • zzh
  • tpProgramer
  • halfdream
  • Hover_cn
  • Flwu
  • XDZXG
  • 0aaron
  • hbs_biscuit
  • ynyn
  • EMeiMonkey
  • zhubo

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo