CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  COM/DCOM/COM+

关于VB的三层

楼主HtoFire(冬天里的一把火)2006-10-13 14:24:04 在 VB / COM/DCOM/COM+ 提问

当时看了一下用VB开发三层结构的程序,当然VB这种基于对象的编程语言开发三层有些先天不足,不过呢,用用也可以。现在又多了一些问题  
   
          三层简单分为UI,业务和数据库访问层。当时将做了ORM映射的类写在了业务层。例如,我有个Students的数据库,则业务层有两个类模块cStudent,cStudents。当时好像一些示例都是这样的。  
   
          但现在看了一些其它语言的三层,发现他们一般将这些类独立出来,不属于三层中的任何一层,通常叫做实体层(Java中好像也叫实体Bean)。   个人感觉也应该这样。但为什么当时CSDN     VB版中,未讨论这个层?还有网上下载的程序也把这些类放在了业务层?   还是VB只能这么做? 问题点数:100、回复次数:21Top

1 楼pigsanddogs(我爱吃猪肉,但是长不胖,为什么??)回复于 2006-10-13 14:28:55 得分 2

jfTop

2 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-10-13 14:34:50 得分 10

(1)先双手接分  
  (2)业务层可以以DLL的形式,通过UI去调用,也可以单独做一个中间层啊,有什么问题吗?放在中间层服务器上,以winscock形式接收客户端的数据请求,同数据库服务器上的DB连接,处理完后再返回客户端。  
  (1)再次双手接分Top

3 楼HtoFire(冬天里的一把火)回复于 2006-10-13 14:40:09 得分 0

就不给分:)  
   
  我的意思是说,当时这么多高手谈VB中开发三层,为什么都把这些实体放在了业务层?而PetShop或Java都把实体独立出来,并没有放在业务层。Top

4 楼csdnzl(我菜故我在~)回复于 2006-10-13 14:55:07 得分 10

(2)业务层可以以DLL的形式,通过UI去调用,也可以单独做一个中间层啊,有什么问题吗?放在中间层服务器上,以winscock形式接收客户端的数据请求,同数据库服务器上的DB连接,处理完后再返回客户端。  
   
  貌似不知道DCOM是何物  
   
  你可以把实体单独写开,工作量是个问题Top

5 楼HtoFire(冬天里的一把火)回复于 2006-10-13 15:01:16 得分 0

呵呵,用Winsock还是DCOM反正不是我想问的。  
   
  当然,我认为实体应该放在一个独立的层,这个层不属于三层中的任何一方,如Duwamish7中就多了个Common。  
   
  但我想知道,为什么当时的VB程序员都不把实体放在单独层中,而放在业务层中。其它程序员如Java就不这样做。     是不是有什么深层次的原因?害得我看Duwamish中的Common看了很长时间。  
   
  网上下的VB三层好像基本都把实体放在业务层中,很想知道为什么Top

6 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-10-13 15:02:18 得分 10

TO楼上:  
  貌似不知道DCOM是何物  
  ---------------------  
  不是貌似,我是真不懂啊,你来讲讲吧。Top

7 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-10-13 15:07:55 得分 10

to   lz:  
  大家把自己的数据访问层以及封装数据的代码贴出来,你也把JAVA相关的代码贴出来对照一下,应该很快有答案的。Top

8 楼viena(维也纳N02)回复于 2006-10-13 15:26:19 得分 30

楼主怎么那么死板呢?不要为了分层而分层,怎么分都是实际需要  
  为什么不能把实体放在业务层中?  
  我现在做的一个.NET项目就是把实体放在业务层中的,只不过是单独的一个目录而已  
  有必要分一层出来吗?  
  如果你认为有必要先说说有什么好处,不要人云亦云~Top

9 楼viena(维也纳N02)回复于 2006-10-13 15:32:50 得分 0

以前我们有个VB项目是把实体层分出来的,一个单独的DLL  
  是因为有多个项目要用到;  
  如果只是业务层本身用的话,有什么理由分出来?Top

10 楼viena(维也纳N02)回复于 2006-10-13 15:36:08 得分 0

/*  
  为什么当时的VB程序员都不把实体放在单独层中,而放在业务层中。其它程序员如Java就不这样做。  
  */  
  VB做的是C/S程序,Java做的是B/S,运行机制不一样的,有可比性吗?Top

11 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-10-13 15:42:57 得分 10

viena(维也纳nn)讲得很清楚啊。JAVA偶不懂,乍一看LZ的问题,确实不能理解,哈。  
  LZ:还可以接分吗?   嘿嘿  
  Top

12 楼DengXingJie(杰西)回复于 2006-10-13 16:33:01 得分 5

100分貼啊  
  能否分我一點?Top

13 楼HtoFire(冬天里的一把火)回复于 2006-10-14 08:24:12 得分 0

倒,都这么喜欢分啊。看来重赏之下,必有勇夫。  
  记得三四年前,问问题的基本上都是80或100分的,后来发现怎么都小气了,都是20分给了。  
  fyming(农妇,山泉,有点田):呵呵,兄弟能进来打上几个字帮忙,当然有分了。DCOM就是指如果我将一个DLL部署在A计算机上,B机上的程序能够直接调用A机中这个Dll中的功能  
   
   
  viena(维也纳nn):感谢你的回答。本来我在VB中这么用,也没什么问题,但……  
  根据分层规则,界面层调用业务层,业务层再调用数据访问层。   但不把实体分离出来,数据库访问层要用实体层的类该如何处理?总直接使用业务层的实体,那就变成数据库访问层也调用业务层的代码了。  
   
  如:function   FindStudents(Condition   as   String)   as   cStudents  
                    '访问数据库  
          end   function  
   
          function   UpdateStudent(stu   as   cStudent)   as   Boolean  
                    '访问数据库更新学生  
          end   function  
  这样一来,数据库访问层将反向调用业务层中的cStudents类了啊Top

14 楼fyming(努力不一定成功,放弃一定失败)回复于 2006-10-14 09:49:52 得分 5

 
  (1)先谢谢LZ的分啊,其实CSDN的分又算什么呢?当不了钱花,我今早又散去了200分,能让大家高兴一下,何乐而不为呢?很多网友来CSDN的目的,一方面是学习,另一方面是因为好玩,就象是在TOM或者联众下棋一样,挣分,升段,仅此而已。  
  (2)也谢谢LZ对于DCOM的解释,其实说句实话,有些话LZ是不必过于认真的,就好象我和杰西问您伸手要分一样。  
   
  Top

15 楼viena(维也纳N02)回复于 2006-10-15 18:05:48 得分 0

我说过了,具体放在那里看是实际需要;  
  如果你有一个独立的数据访问层,确实需要分出来;  
  但不分出来也同样是可以的,没有什么好质疑的;  
  比如我们现在的一个.NET项目,就向你说的一样没有数据访问层;  
  数据访问在业务层中完成(数据对象,调用ORM)  
   
  Top

16 楼vbman2003(家人)回复于 2006-10-15 19:25:24 得分 4

是啊,我也同意“不要为分层而分层”,要考虑实际需要,开发效率,运行效率,可维护性...Top

17 楼HtoFire(冬天里的一把火)回复于 2006-10-15 22:29:26 得分 0

看来,真像打太级拳,不重招式Top

18 楼jah_online()回复于 2006-10-23 05:14:21 得分 4

呵~~讨论到这么激烈,我也来插句嘴吧!首先我先说明下,我不是什么高手,特别在编码上,基本上是没帮助,没网络什么都写不出来,不过我是一个项目管理者,研究的是软件工程,所以对结构上稍有些了解...如果有什么说错的地方,请不要大骂:)  
   
  好了,下面说说我对LZ的问题的经验与见解吧:  
  首先我先指出一点,上面有说VB是C/S,JAVA是B/S,是错的...VB也能B/S,JAVA也能C/S.看你怎样写,我看过一个最牛的是有个日本公司的JAVA程序员用流式(C传统写法)来完成一个财务系统....我感叹了一晚..嘿嘿!~~  
   
  VB天生是面向过程的语言,JAVA则是对象.而JAVA本身就只有类这概念...VB则不是.JAVA的BEAN其实是一个对象集.他有点像VB的COM,但两者不同的地方在于BEAN能单独使用,COM不能...COM是跨语言使用,但BEAN是跨平台,这也是两个开发语言本质的区别吧!好了,说到这里,LZ应该知道为什么JAVA会把实体层独立出来,而VB不能了吧(其实不是不能,而是没必要)?  
   
  如果还不明白,请继续往下看(懂了就指出看法与错误就行了):  
  BEAN其实也是一个组件(跟COM一样,区别上面说了),而组件又分可视化组件(如按钮)与非可视化组件(如TIMER).可能有人会问,那跟VB没区别啊,VB其实也可以把实体层独立出来使用,为什么不这样呢?其实BEAN在JAVA机制中并不完善(JAVA的模式一),特别体现在B/S,分布式开发中...在JSP开发中,根本就体现不出真正的三层,跟ASP一个样,HTML代码与程序代码完全不能分离.所以到了JAVA的模式二中(MVC)就完全解决了这个问题.BEAN在这里的使用也只是一个摆设(其实也挺重要,不过跟原来意义大大的改变了),在模式二中,一个类就会带一个BEAN(有时候会两到三个,但不会多),通常都是用来放属性(GET,SET)和一些小型接口的.好了,好像扯远了...在VB6这过程中,实体层意义根本就不大,分离出来作用不大(可能会影响效率,因为每多一个类都会耗比较多的资源),他既不能单独使用,就算是重用,也可以直接分装为COM组件.  
   
  好了,大体解释完了...看完的朋友可以说说见解跟指出错处了!!  
  Top

19 楼liu9822(无声的呼唤)回复于 2006-10-28 02:58:40 得分 0

看了这么多的帖子!  
  明白了许多!Top

20 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-10-28 08:05:13 得分 0

哇  
  难道这就是传说中的无招胜有招?  
  果然是高手啊Top

21 楼chncoder(VB--C#瞎晃悠)回复于 2006-12-10 09:07:01 得分 0

等同于为了结婚而结婚  
  只要开发方便就好,不要越搞越复杂。Top

相关问题

关键词

得分解答快速导航

  • 帖主:HtoFire
  • pigsanddogs
  • fyming
  • csdnzl
  • fyming
  • fyming
  • viena
  • fyming
  • DengXingJie
  • fyming
  • vbman2003
  • jah_online

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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