浅谈PetShop

   最近看了一下PetShop这个例子,感觉有点意思。我以前搞过一段java,但不是精通,毕竟自己才刚刚上道,况且,现在自己搞的是.net,但我感觉两者各有千秋。

   在PetShop这个例子中,主要体现了软件设计的思想,包括几个方面吧,下面一一列出。

  第一  三层架构

           数据访问层 ,业务逻辑层,表示层

           数据访问层又可分为数据实体层,数据业务层。

           数据实体层,首先,其实看过petshop的都知道,这个数据实体层是业务逻辑层和数据业务层共同调用的,他可以让我们更轻松的操作,例如,在业务层要实现将一条order记录插入到order表中,这时,就可以将order表做为一个数据实体,这样操作:insert(order or);其次,我们做数据实体的时候要注意,实体并不是数据库中表的简单表示,他可以体现表与表之间的依赖关系,例如,购物车是一个实体,但他要和其他的实体联系(item,product等),这样我可以将关系体现在购物车的字段里,用productList。

          数据业务层,其实他理解上很简单,他就是对数据实体的操作,包括insert update,delete select。但正常写代码时是工作量最多的,因此,在很多简单的系统中,通常用一些工具来实现。

          业务逻辑层他是整个系统的核心部分,因为要实现系统,只懂得技术是不行的,必须要有业务常识,通常,在实现一个系统的时候,会有业务专家来协助完成。做业务层的时候,我只要知道该实现什么功能,而不必再关心在怎么与数据库进行联系。

          表示层,其实,表示层对用户来说是最重要的,因为他们关心的性能和可靠通常都能实现,因此,唯一能让他们打开眼界的就是表示层,友好,醒目,很重要。

第二 面向对象的设计思想

         读过设计模式的应该知道,我们平时写代码应该遵从面向对象的原则,通俗的说就是一种写代码的习惯。这些原则有:面向接口而不面向实现编程;封闭开放原则;职责分离原则;等等吧。PetShop里就运用了面向接口编程和职责分离原则等,使用到了策略模式、代理模式、外观模式、整体上又是一个MVC结构吧。自己挖掘一下。很有意思的。

第三 队列的使用

       对于做WEB的来说,有的时候我们与数据库进行交互时不需要将信息直接响应到数据库中,而可以将要处理的信息放在一个容器中,而在空闲时间来处理这个容器中的东西,这样用户会感觉系统性能很好。而我这里讲到的队列就是一种容器,可以实现异步处理。在PetShop里,将要处理的对象放在Queue里,用一个控制台程序来实现异步处理队列中的东西(这里用多线程来处理,一看就明白的)。

第四 缓存的使用

      当今IT时代,做任何东西都会考虑到一个性能的问题,就比如做WEB的时候,很多东西不能满足客户的要求,因为这些东西所载的数据量非常大,而如果让客户每次都从数据库来获取这些大数据,一个字“太崩溃了”,PetShop中引入了缓存,模仿CPU缓存。

     在WEB项目中用到的缓存大致上有两种:1 数据缓存;2页面输出缓存

    数据缓存:当我们要频繁的与数据库交互,而且交互时的数据量很大时,建议使用数据缓存。

    页面输入缓存:当某个页面负载比较大,最主要的是客户要频繁的访问,则可以将页面缓存

    读到这里,有些人会想到,那我将数据和页面缓存以后,那么他俩就不会改变了。是这样的,但是,.net为我们提供了sqlcachedependcy,使用他,我们可以通过建立依赖项来监控缓存中的某一项是否发生了变化,如果变化了,则将该项从缓存中清除掉,不变我们就可以继续使用,从而保证了数据的正确性。

 

综合以上,对于刚刚接触架构设计的同行,PetShop这个例子还是很有启发性,很有借鉴性的。

         

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值