首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 我的一个想法 关于三层结构的 大家进来讨论一下 [已结帖,结帖人:moonwrite]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • moonwrite
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-08 12:15:41 楼主
    基本上网上很多教程的三层结构做法都是
    1.新建一个空白项目
    2.添加一个项目BLL
    3.添加一个项目DAL
    ...............
    然后相互using 什么的

    而我的想法是:
    1.新建一个web项目
    2.在App_Code新建文件夹BLL
    3.在App_Code新建文件夹DAL
    ...............
    连using都不用了....不是很方便吗

    而且在其他namespace中调用一个方法的写法是: 程序集名.类名.方法名
    这样写不麻烦吗~~~

    因为是讨论的 所以不给分了 每次给分都很难分配.....
    0  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:00:141楼 得分:0
    所有代码写在一个cs文件中也成!

    用文件或者目录名来标记是不是三层,这很可能是假三层。

    实际上,在asp.net应用程序中,通常你也可以仅使用一个cs文件并且文件中只有一个叫做BLL的class来书写BLL层。

    不过,怎么写都可以,看到为了形式而写三层我们偷着讥笑吧,不要刺激他。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Leo_0924
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:07:162楼 得分:0

    为什么克制自己一定要用几层呢?对于层的理解又有多明白。

    其实最重要的是把东西集合起来,方便使用即可。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:12:113楼 得分:0
    恩,可能我这次又回复的太快了,影响了大家讨论。不过既然已经如此了,我干脆就直接补充吧。

    实际上,BLL这几怎么能从数据库结构或者对象结构来归纳呢?!现有对象还是先有业务模型?当然是先有业务模型,或者至少是先有业务模型再用对象设计进行细微的参数调整。因此,BLL其实不太适合在具体的对象class中封装,BLL实际上就是等价于传统的结构化编程的“函数库”,BLL往往是一堆static方法的简单集合。就好像SQLHelper之类的那种函数库一样,一堆BLL方法平铺直叙地列出来就可以了。

    把BLL方法按照业务对象class分开打包,误解了BLL,而且增加了多余的复杂性。这反倒不是OO设计的好的实践。class应该做对象应该做的职责,而BLL方法都是是后台系统对前台系统的api功能接口,它是界面与后台之间的转换,既不能偏颇与界面对象的分类方法也不能偏颇与后台业务对象的分类方法,它纯粹使用结构化风格也是很好的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinawes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:17:374楼 得分:0
    我个人理解,3层结构作为一种架构,让程序看起来更清晰,易于管理,封装的更好,易于维护。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:29:055楼 得分:0
    或者换句话说,BLL往往是结构化的,因为BLL往往为不同种类的客户端程序服务。你可能使用一个WCF服务器端对象来定义一个后台api方法,例如

      void 找出某人的一个同事拉出来加双薪(Person user);

    这个接口方法。但是如果同样的方法需要被mobile客户端调用呢?.net cf2.0不支持WCF。可能还有很很多其他客户端,甚至vb5.0或者vba(在Word文档中嵌入的一个程序)客户端调用这个同样的BLL程序集,那么你迟早要定义一个方法:

      void 找出某人的一个同事拉出来加双薪(string userName);

    因为BLL就是依据快速完成客户端应用来设计的,而不是为了体现后台Person类型的什么设计模式来设计的。你经常需要把BLL进行扩充,而驱动你进行重新设计BLL的是界面设计需求的频繁改变,而不是业务对象设计频繁改变。BLL隔离了不同客户端的的差别,甚至同一种开发工具下不同的客户端设计方法的差别。BLL方法是对业务事务的比较粗颗粒的功能调用api方法,往往不是或者无需是面向对象封装的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:30:116楼 得分:0
    为了三层而三层,使用时离实际有一段距离。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lihjay
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 14:54:397楼 得分:0
    我看够老赵的部分示例,就是用楼主的方法做的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • moonwrite
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 09:56:208楼 得分:0
    我不是为了写三层而三层
    而是看了三层结构的写法后 好奇有经验的高手们为什么要那么写 那样写有什么好处

    学习思想:为什么是这样 而不是那样
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved