1  petshop的model模块,使用它的好处在哪里?我觉得使用了它反而增加了很多的代码,但是却没有看到它的好处?2 petshop是不错的东西,但感觉完全按照这样的步骤去写代码,真的又麻烦又累,有几个人写代码是这么严格遵守三层结构的?

解决方案 »

  1.   

    数据模型是基础,接口是(IDAL)对数据模型的各种虚拟操作DAL是对IDAL的具体实现,PetShop主要是演示挂接多个数据库
    所以在DAL层,可以实现多个,诸如AccessDAL,DB2DAL, SQLDAL来对IDAL接口实现接着通过工厂设计模式调用具体的DAL BLL是WebUI和后台的桥梁 及联系纽带这个概念很清晰的呀, 
    在大规模开发中,流程清晰和有一套成熟可行的开发规范非常重要
    而非仅指对软件功能的实现
      

  2.   

    它这套东西没什么用,试想,有几个项目是面向不同数据库系统的,如果你的项目是针对某一种数据库,完全不用写什么N层,仅针对该数据库就成了,这样的效率比petshop的算法高得多,petshop只是为了对不同数据库做接口而已。看看金碟,它说是三层结构,但它却要求是SQL Server数据库,这种三层与两层有什么区别?只不过把对数据库的操作封装到多个组件中去罢,假的,所以大家只要学习一下它如何写数据库操作组件即可,不需要多看别的,over
      

  3.   

    to microcat :  需要挂接不同种数据库的情况是很多的,最常用的就是 如果公司开发一套产品,卖给不同的客户,目前很多大公司都有正版的数据库,可能是SQL Server ,可能是Oracle,可能是DB2...客户不太可能为我们的产品重新购买其它数据库,我们也不太可能另外为它一家重新设计一套支持他们数据库操作的产品所以这种情况,就可以看到PetShop的好处了,我只需要根据他们的现有的数据库产品,更改配置文件就可以了,对产品本身不需要做任何额外的改动。
      

  4.   

    楼上的都有道理现在问题是:做一个网站,有多少人这么严格的分三层写的?多吗?
    还是那个问题,petshop中的model那个模块不知道它的好处在哪里?我觉得代码是多了,但看不出这么写的目的和好处
      

  5.   

    其实这只是微软公司开发的一个例子,为了与JAVA\抗衡当然是什么技术都会用进去来提高自己的性能!!
      

  6.   

    我很喜欢PetShop一个很好的学习示例,这是一种分析和思考问题的思路,遇到复杂问题时就能体现出她的优越性了.
      

  7.   

    一个项目的开发过程固然重要,但一个程序的很大一部分基本上都是花在维护和扩展功能上。PetShop在这方面的设计就能体现他的独到之处。
      

  8.   

    我还是感觉PETSHOP1比较好,后来的越来越复杂了,PHP不用面向对象,多层架构也可以写出非常大的程序
      

  9.   

    高内聚,低耦合这就是分层的根本,楼上多少人只看见“分项目”每看见“分层”。还有“分层”或“分项目”都是以性能作为代价的,所以认为分层主要为了性能是错误的。认为“一定要SqlServer数据库”就不算分层也是错误的。
    我告诉你们petshop分层好在哪里:
    1,如果数据库完全换掉,比如不用SqlServer,用成Access或用XML或用哪怕txt文本做数据库(太变态了),根本不需要改业务逻辑和界面项目中的1行代码(注意,1行都不要)只需要动数据访问层的项目。
    2,如果你现在要把petshop变成C/S结构的,只需要动界面层一层,新加个win界面项目,其他层同样“1行代码都不需要改”。这个好处够诱人了吧???比较抱歉让楼上一些人失望的是,我多次因为把一个“很小很简单”的东西分层,而在后来因为需求变化而受益,却从来没有因为分层后悔过。相反却有因为“项目小不分层”而深感后悔。举我现在手头一个例子,“短信系统”,原来做的时候是只面对“移动用户”,逻辑非常简单,所以虽然建了3个项目,但是并没有仔细注意分层(其实照某些人错误理解,我已经是分层了,其实不是,是“分项目”,和分层有本质的区别,分项目主要为了可以把方案部署到多个机器,分层更注重的是“降低耦合度”,虽然做法基本一样,但是因为指导思想的不同,会有不同结果)。结果现在要加入“联通”和“小灵通”的管理,变成非常复杂,比方原来判断号码是否合法和格式化号码,很简单,"8613#########”或“13#########”就是合法的,13开头的系统自动补上86(中国的代码)就可以了,现在却要分联通的移动的,而且移动端口出来的带86(因为面向全球),联通的号码却前面不用(在系统中也不能)带86而且发送的手段,那些字段完全是2码事,小灵通还比较像移动,不过就有个“有区号”和“没区号”的问题,偏要是7位小灵通加4位区号又是11位刚好和手机的一样长本来很简单的逻辑突然就复杂了,在加上3家人当然是3个端口号,本来可以在DropDownList上用Value来获取的现在却要多个方法来处理。一大堆问题,在分层良好的情况下,很好解决。我做项目,设计上都是分层的,偏就这个没分,因为觉得“太简单”,基本没什么逻辑,结果吃了苦果。对客户来说3家人“不就是号码不一样吗”,但是却引起巨大的变化。分层清晰,可以少做很多事。