Petshop4.0
- 格式:pdf
- 大小:1.06 MB
- 文档页数:70
BLL将USL与DAL隔开了,并且加入了业务规则各层的作用1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
具体的区分方法1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。
而不必管其他操作。
2:业务逻辑层:主要负责对数据层的操作。
也就是说把一些数据层的操作进行组合。
3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
三层结构解释所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。
这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。
通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换.开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。
在保证客户端功能的前提下,为用户提供一个简洁的界面。
这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。
从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。
SaaS系列介绍之⼗三:SaaS系统体系架构 1 系统体系架构设计 软件开发中系统体系架构决定了⼀个系统稳定性、健壮性、可扩展性、兼容性和可⽤性,它是系统的灵魂。
体系架构是架构师所关注的核⼼。
良好的体系架构是系统成功的开端,否则,再好的代码与设计也⽆济于事。
2 当前.net主要的开发框架简介 l Castle Castle是针对.NET平台的⼀个开源项⽬,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应⽤程序提供了很好的服务。
其中关键的技术是ActiveRecord,Facilities,MonoRail等等。
优点:体现了ORM、IOC、ActiveRecorder思想,MVC框架。
不⾜:框架层次划分不太清楚。
l PetShop PetShop是微软⽤它来展⽰.Net企业系统开发的能⼒。
PetShop4.0,这个实例是Microsoft针对SQL Server 2005 以及Visual Studio 2005发布的。
其中运⽤了⼀些新的技术。
缓存数据与数据库的更新同步,新的Web控件,以及母版的应⽤,异步通讯,消息队列。
这些都是很实⽤的技术。
PetShop中⼤量运⽤了抽象⼯⼚模式,由于采⽤了Master Pages,Membership,以及Profile,表现层的编码量减少了25%,数据层的编码量减少了36%。
图1 PetShop4.0的体系架构 PetShop4.0在数据访问层(DAL)中,采⽤DAL Interface抽象出数据访问逻辑,并以DAL Factory作为数据访问层对象的⼯⼚模块。
对于DAL Interface⽽⾔,分别有⽀持MS-SQL的SQL Server DAL和⽀持Oracle的oracle DAL具体实现。
⽽Model模块则包含了数据实体对象。
可以看到,在数据访问层中,完全采⽤了“⾯向接⼝编程”思想。
三层文件架安装三层架构是哪三层分别如下:三层架构就是为了符合“高内聚,低耦合”思想,表示层(ui);业务逻辑层(bll);数据访问层(dal)三层架构。
各层之间使用USB相互出访,并通过对象模型的实体类(model)做为数据传达的载体,相同的对象模型的实体类通常对应于数据库的相同表中,实体类的属性与数据库表的字段名一致。
三层架构区分层次的目的是为了“高内聚,低耦合”。
开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。
含义:三层架构主要是指将业务应用规划中的表示层 ui、数据访问层 dal 以及业务逻辑层bll,其分层的核心任务是“高内聚低耦合”的实现。
在整个软件架构中,分层结构是常见和普通的软件结构框架,同时也具有非常重要的地位和意义。
这种三层架构可以在软件开发的过程中,划分技术人员和开发人员的具体开发工作,重视核心业务系统的分析、设计以及开发,提高信息系统开发质量和开发效率,进而为信息系统日后的更新与维护提供很大的方便。
三层架构分层方式:1、数据层不包含任何代码,只有数据库,还有相关的存储过程。
这种模式下,数据层看起来就变得很简单了。
只包含所建立的数据库和一些存储过程(注意是存储过程)。
其实这些存储过程的建立也是相当复杂的,因为它们可以完成除数据访问外的其他一些很强大的功能,如分页、实现搜索算法等。
数据访问的逻辑就都放在业务层,当然业务层还包含其他一些逻辑代码。
我们来看一个示例,假设数据库里有一个表 books(书),建立一个存储过程 getallbooks,用来读取书的信息,这样在业务层里编一个方法 getbooks ()和一个公用数据库访问类,getbooks()就通过数据库访问类打开连接,执行在存储过程,返回数据(返回类型可以是 datat - able,dataset,datareader 或者实体类)。
.NET开发思想(1)-争辩自从J2EE推向市场以来,以其安全性、稳定性和扩展性得到了开发者的青睐,迅速成为了大型Web应用的首选标准。
为推广J2EE编程思想和编程技术,Sun在其Java官方站点上提供了一个Demo 应用,即Petshop。
微软不甘在大型Web应用开发上的落后,在2000年推出了.NET技术,并展开了猛烈的市场攻势。
J2EE是.NET的主要对手,也是其攻击的主要目标。
于是微软在去年下半年推出了.NET版的Petshop,宣称其在代码量、性能、价格、易用性和拥有/开发/维护成本上与J2EE相比有不可比拟的优势,且完全基于Web Services技术。
在微软强大的市场攻势的影响下,各大主流IT媒体上,众多有关J2EE与.NET优劣比较的文章层出不穷。
事实上,J2EE不是一种产品,而是一种标准,Java官方站点上的Petshop只是一个展示J2EE基础结构和开放性的Demo,并没有进行性能上的优化(因不同的产品有不同的性能优化的方式)。
而.NET不是一种标准,是一种产品。
.NET的Petshop程序是基于.NET产品而进行了优化,如其对数据库的访问代码就是写在SQL Server的存储过程中。
因此,对其比较是没有参照价值的。
对此,BEA和Sun不予置评。
而IBM和Oracle则沉不住气,特别是在微软的Petshop文档中,比较的J2EE应用服务器采用的就是IBM的WebSphere 4.0。
IBM和Oracle分别利用自己的产品(WebSphere 4.0和Oracle 9i iAS)实现J2EE方式的Petshop,给出了新的性能数据和比较说明。
IBM还指出微软的一个错误:对Petshop实现的比较并不是开发Web Services的性能的比较。
微软立即进行了反击,并给出了新的说明,并针对IBM给出了.NET与WebSphere在实现Web Services上的比较。
IBM也有所反应。
PetShop 4.0详解分析petshop4.0 详解之一(系统架构设计)1.框架的概要介绍微软刚推出了基于 2.0 下的Pet Shop 4 该版本有了一个全新的用户界面。
是研究 2.0的好范例啊,大家都知道,一直以来,在.NET 和Java 之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。
为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java 的高下。
用户做比较的这个项目就是Petshop。
正因为Petshop 肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。
所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。
日前微软推出了基于.NET Framework 2.0 开发的Petshop 4。
新的Petshop4 实现了与Petshop 3 相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。
同时,在事务、数据缓存、安全方面使用了.NET 2.0 附带的特性,构建了一个灵活的最佳实践的应用程序。
他们利用了Project Conversion Wizard 把项目从 1.1 移植到了 2.0,然后做了以下改动:1.用System.Transactions 代替了原来的Serviced Components 提供的事务功能代码实现:PetShop.BLL.OrderSynchronous 的public void InsertPetShop.Model.OrderInfoorder。
2.用强类型的范型集合代替了原来的弱类型集合public IListltProductInfogt GetProductsByCategorystring category // Return new if the string is empty if string.IsNullOrEmptycategory return new ListltProductInfogt // Run a search against the data store ―1― return dal.GetProductsByCategorycategory 3.采用 2.0 Membership 来做认证和授权4.创建了针对Oracle 10g 的Custom 2.0 Membership Provider5.利用 2.0 的Custom Oracle 和SQL Server Profile Providers 做用户状态管理,包括购物车等6.采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果7.使用了 2.0 Wizard 控件实现check-out8.使用了SqlCacheDependency 来实现数据库层次的缓存更新cache invalidation功能9.使用了消息队列来实现异时订单处理。
PetShop4.0IntroductionPetShop4.0 is an advanced and comprehensive pet store management system designed to simplify the operations of pet stores. With its user-friendly interface, powerful functionality, and smart features, PetShop4.0 aims to enhance the overall efficiency and productivity of pet shop owners and staff.FeaturesPetShop4.0 offers a wide range of features that ensure smooth operations and streamlined management of a pet store. Let’s take a look at some of the key features:Inventory ManagementWith PetShop4.0, managing your pet store’s inventory is a breeze. The system allows you to easily add, update, and track your inventory of various pet products. You can manage the quantity, price, and supplier information for each item, ensuring that you never run out of stock.Sales and Point of Sale (POS)PetShop4.0 provides a powerful sales management module that enables you to efficiently process sales and track transactions. The system supports multiple payment options, including cash, credit cards, and mobile payment solutions. With the integrated POS system, you can swiftly complete transactions and generate detailed invoices for customers.Customer Relationship Management (CRM)Maintaining good customer relations is essential for any pet store. PetShop4.0 includes a CRM module that allows you to store and manage customer information. You can keep track of customers’ purchase history, personal preferences, and contact details. This information can be used to run targeted marketing campaigns, offer personalized recommendations, and improve overall customer satisfaction.Appointment SchedulingPetShop4.0 offers an appointment scheduling feature that enables pet owners to book grooming services, veterinary consultations, and other services in advance. The system keeps track of scheduled appointments, sends automated reminders to customers, and helps you manage your resources efficiently.Reporting and AnalyticsPetShop4.0 provides comprehensive reporting and analytics tools to help you gain insights int o your pet store’s performance. You can generate various reports, such as sales reports, inventory reports, and customer analytics. These reports can aid in making data-driven decisions and identifying areas for improvement.BenefitsImplementing PetShop4.0 can bring numerous benefits to your pet store: •Increased operational efficiency and productivity•Improved inventory management, reducing stockouts and overstocking•Enhanced customer satisfaction through personalized services and appointment scheduling•Streamlined sales processes, leading to faster transactions and improved cash flow•Better decision-making through access to real-time reports and analyticsSystem RequirementsTo make the most of PetShop4.0, the following system requirements are recommended:•Operating system: Windows 10, macOS, Linux•Processor: Intel Core i5 or equivalent•Memory: 8GB RAM•Storage: At least 100GB of free disk space•Display: Minimum resolution of 1366 x 768 pixels•Internet connection: Broadband connection for online features and updatesConclusionPetShop4.0 provides a comprehensive solution for pet store management, offering a range of features to improve efficiency and streamline operations. With its user-friendly interface and powerful functionality, PetShop4.0 is the ideal choice forpet store owners looking to take their business to the next level. Upgrade your pet store with PetShop4.0 and experience the benefits of a modern and smart management system.。
三层架构及其优点(2009-04-01 22:54:37)标签:三层架构是:一:界面层界面层提供给用户一个视觉上的界面,通过界面层,用户输入数据、获取数据。
界面层同时也提供一定的安全性,确保用户不用看到不必要的机密信息。
二:逻辑层逻辑层是界面层和数据层的桥梁,它响应界面层的用户请求,执行任务并从数据层抓取数据,并将必要的数据传送给界面层。
三:数据层数据层定义、维护数据的完整性、安全性,它响应逻辑层的请求,访问数据。
这一层通常由大型的数据库服务器实现,如Oracle 、Sybase、MS SQl Server等。
------从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。
三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。
开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度。
三层架构属于瘦客户的模式,用户端只需一个较小的硬盘、较小的内存、较慢的CPU就可以获得不错的性能。
相比之下,单层或胖客户对面器的要求太高。
三层架构的另一个优点在于可以更好的支持分布式计算环境。
逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。
分布式计算的潜力巨大,远比升级CPU有效。
三层架构的最大优点是它的安全性。
用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。
另外三层架构还可以支持如下功能:Remote Access(远程访问资料),例如可透过Internet存取远程数据库;High Performance(提升运算效率)解决集中式运算(Centralize)及主从式架构(Client-Server)中,数据库主机的运算负担,降低数据库主机的Connection Load,并可藉由增加App Server处理众多的数据处理要求,这一点跟前面讲到的分布式计算提高运算能力是一个道理;Client端发出Request(工作要求)后,便可离线,交由App Server和DataBase Server共同把工作完成,减少Client端的等待时间;这个功能我觉得应用场合不是很多,自己感受也不是很深刻,从理论上是成立的。
分层架构与业务逻辑实现方法一、分层架构在当今软件系统中,常用的软件架构思想就是分层,分层思想是现代软件架构的主要思想。
无论是企业级应用系统(如:CRM,ERP,OA,电子商务平台),专用软件(如:OS、SVN、IDE 等),另有协议之类(TCP/IP,OSI等)绝大部分都采取分层架构思想进行设计的。
分层(Layer)不一定就是人们常说的二,三层,多层系统,因为这些说法都是分层架构的一些具体体现形式,分层是一种设计思想,也可以称之为一种软件架构模式(Pattern),这种思想的核心在于:分别系统的职责(Responsibility),如果这个系统的职责你阐发清楚了,你的基于设计思路差不多就定下来了。
你可以去看看,许多的现在代软件,不是一定是web方面。
例如:SVN这样的源代码治理软件、图一:SVN架构图.NET Framework也是分层,Eclipse也是,TCP/IP越发是,另有像操纵系统(OS)、编译器(Compiler),许多流行框架(Framework)也是分层。
其实,MVC不也是分层,也就是把模型(Model)、视图(View)、控制器(Controller)三个差别职责离开。
那我们看看今天的企业级应用系统(许多说是web项目,其他我不认为是这样,因为web只是一种外在体现形式,我们可以用desktop步伐,flash等作为体现形式),企业级应用系统许多人一说就是三层架构,其实确实也是这样的。
即:体现层,业务层,数据层。
虽然另有其他的分层,如:体现层,办事层(办事外观层),业务逻辑层,数据映射层,数据层。
也有分成:体现层,中间层,数据访问层等等。
(注意这些都是逻辑上分层结构一般用Layer,物理上的分层结构,一般讲的是摆设结构一般用tier)总体上都可以看成是三层:体现层,业务逻辑层(也可以说是领域层或领域逻辑层),数据层。
像Spring,Structs、ORM等一些框架,他们都是在差别的层上的相关实现技能。
petshop4.0 详解之一(系统架构设计)前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。
业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。
这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。
然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处。
PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念。
本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4.0,可以从链接/library/default.asp?url=/library/en-us/dnbda/html/bd asamppet4.asp中获得。
一、PetShop的系统架构设计在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层,如图所示:图一:三层的分层式结构数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问。
简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。
如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。
在PetShop的数据访问层中,并没有使用ORM,从而导致了代码量的增加,可以看作是整个设计实现中的一大败笔。
业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关。
以PetShop为例,业务逻辑层的相关设计,均和网上宠物店特有的逻辑相关,例如查询宠物,下订单,添加宠物到购物车等等。
如果涉及到数据库的访问,则调用数据访问层。
表示层:是系统的UI部分,负责使用者与整个系统的交互。
在这一层中,理想的状态是不应包括系统的业务逻辑。
表示层中的逻辑代码,仅与界面元素有关。
在PetShop中,是利用 来设计的,因此包含了许多Web控件和相关逻辑。
分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。
一个好的分层式结构,可以使得开发人员的分工更加明确。
一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进。
例如UI人员只需考虑用户界面的体验与操作,领域的设计人员可以仅关注业务逻辑的设计,而数据库设计人员也不必为繁琐的用户交互而头疼了。
每个开发人员的任务得到了确认,开发进度就可以迅速的提高。
松散耦合的好处是显而易见的。
如果一个系统没有分层,那么各自的逻辑都紧紧纠缠在一起,彼此间相互依赖,谁都是不可替换的。
一旦发生改变,则牵一发而动全身,对项目的影响极为严重。
降低层与层间的依赖性,既可以良好地保证未来的可扩展,在复用性上也是优势明显。
每个功能模块一旦定义好统一的接口,就可以被各个模块所调用,而不用为相同的功能进行重复地开发。
进行好的分层式结构设计,标准也是必不可少的。
只有在一定程度的标准化基础上,这个系统才是可扩展的,可替换的。
而层与层之间的通信也必然保证了接口的标准化。
“金无足赤,人无完人”,分层式结构也不可避免具有一些缺陷:1、降低了系统的性能。
这是不言而喻的。
如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。
这种修改尤其体现在自上而下的方向。
如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
前面提到,PetShop的表示层是用设计的,也就是说,它应是一个BS系统。
在.Net 中,标准的BS分层式结构如下图所示:图二:.Net中标准的BS分层式结构随着PetShop版本的更新,其分层式结构也在不断的完善,例如PetShop2.0,就没有采用标准的三层式结构,如图三:图三:PetShop 2.0的体系架构从图中我们可以看到,并没有明显的数据访问层设计。
这样的设计虽然提高了数据访问的性能,但也同时导致了业务逻辑层与数据访问的职责混乱。
一旦要求支持的数据库发生变化,或者需要修改数据访问的逻辑,由于没有清晰的分层,会导致项目作大的修改。
而随着硬件系统性能的提高,以及充分利用缓存、异步处理等机制,分层式结构所带来的性能影响几乎可以忽略不计。
PetShop3.0纠正了此前层次不明的问题,将数据访问逻辑作为单独的一层独立出来:图四:PetShop 3.0的体系架构PetShop4.0基本上延续了3.0的结构,但在性能上作了一定的改进,引入了缓存和异步处理机制,同时又充分利用了 2.0的新功能MemberShip,因此PetShop4.0的系统架构图如下所示:图五:PetShop 4.0的体系架构比较3.0和4.0的系统架构图,其核心的内容并没有发生变化。
在数据访问层(DAL)中,仍然采用DAL Interface抽象出数据访问逻辑,并以DAL Factory作为数据访问层对象的工厂模块。
对于DAL Interface而言,分别有支持MS-SQL的SQL Server DAL和支持Oracle的Oracle DAL具体实现。
而Model模块则包含了数据实体对象。
其详细的模块结构图如下所示:图六:数据访问层的模块结构图可以看到,在数据访问层中,完全采用了“面向接口编程”思想。
抽象出来的IDAL模块,脱离了与具体数据库的依赖,从而使得整个数据访问层利于数据库迁移。
DALFactory模块专门管理DAL对象的创建,便于业务逻辑层访问。
SQLServerDAL和OracleDAL模块均实现IDAL模块的接口,其中包含的逻辑就是对数据库的Select,Insert,Update和Delete操作。
因为数据库类型的不同,对数据库的操作也有所不同,代码也会因此有所区别。
此外,抽象出来的IDAL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层,同样仅存在弱依赖关系,如下图所示:图七:业务逻辑层的模块结构图图七中BLL是业务逻辑层的核心模块,它包含了整个系统的核心业务。
在业务逻辑层中,不能直接访问数据库,而必须通过数据访问层。
注意图中对数据访问业务的调用,是通过接口模块IDAL来完成的。
既然与具体的数据访问逻辑无关,则层与层之间的关系就是松散耦合的。
如果此时需要修改数据访问层的具体实现,只要不涉及到IDAL的接口定义,那么业务逻辑层就不会受到任何影响。
毕竟,具体实现的SQLServerDAL和OracalDAL根本就与业务逻辑层没有半点关系。
因为在PetShop 4.0中引入了异步处理机制。
插入订单的策略可以分为同步和异步,两者的插入策略明显不同,但对于调用者而言,插入订单的接口是完全一样的,所以PetShop 4.0中设计了IBLLStrategy模块。
虽然在IBLLStrategy模块中,仅仅是简单的IOrderStategy,但同时也给出了一个范例和信息,那就是在业务逻辑的处理中,如果存在业务操作的多样化,或者是今后可能的变化,均应利用抽象的原理。
或者使用接口,或者使用抽象类,从而脱离对具体业务的依赖。
不过在PetShop中,由于业务逻辑相对简单,这种思想体现得不够明显。
也正因为此,PetShop将核心的业务逻辑都放到了一个模块BLL中,并没有将具体的实现和抽象严格的按照模块分开。
所以表示层和业务逻辑层之间的调用关系,其耦合度相对较高:图八:表示层的模块结构图在图五中,各个层次中还引入了辅助的模块,如数据访问层的Messaging模块,是为异步插入订单的功能提供,采用了MSMQ(Microsoft Messaging Queue)技术。
而表示层的CacheDependency则提供缓存功能。
这些特殊的模块,我会在此后的文章中详细介绍Petshop详解(二)在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。
从本部分开始,我将依次对各层进行代码级的分析,以求获得更加细致而深入的理解。
在PetShop 4.0中,由于引入了 2.0的一些新特色,所以数据层的内容也更加的广泛和复杂,包括:数据库访问、Messaging、MemberShip、Profile四部分。
在系列二中,我将介绍有关数据库访问的设计。
在PetShop中,系统需要处理的数据库对象分为两类:一是数据实体,对应数据库中相应的数据表。
它们没有行为,仅用于表现对象的数据。
这些实体类都被放到Model程序集中,例如数据表Order对应的实体类OrderInfo,其类图如下:这些对象并不具有持久化的功能,简单地说,它们是作为数据的载体,便于业务逻辑针对相应数据表进行读/写操作。
虽然这些类的属性分别映射了数据表的列,而每一个对象实例也恰恰对应于数据表的每一行,但这些实体类却并不具备对应的数据库访问能力。
由于数据访问层和业务逻辑层都将对这些数据实体进行操作,因此程序集Model会被这两层的模块所引用。
第二类数据库对象则是数据的业务逻辑对象。
这里所指的业务逻辑,并非业务逻辑层意义上的领域(domain)业务逻辑(从这个意义上,我更倾向于将业务逻辑层称为“领域逻辑层”),一般意义上说,这些业务逻辑即为基本的数据库操作,包括Select,Insert,Update和Delete。
由于这些业务逻辑对象,仅具有行为而与数据无关,因此它们均被抽象为一个单独的接口模块IDAL,例如数据表Order对应的接口IOrder:将数据实体与相关的数据库操作分离出来,符合面向对象的精神。
首先,它体现了“职责分离”的原则。
将数据实体与其行为分开,使得两者之间依赖减弱,当数据行为发生改变时,并不影响Model模块中的数据实体对象,避免了因一个类职责过多、过大,从而导致该类的引用者发生“灾难性”的影响。
其次,它体现了“抽象”的精神,或者说是“面向接口编程”的最佳体现。
抽象的接口模块IDAL,与具体的数据库访问实现完全隔离。
这种与实现无关的设计,保证了系统的可扩展性,同时也保证了数据库的可移植性。
在PetShop中,可以支持SQL Server和Oracle,那么它们具体的实现就分别放在两个不同的模块SQLServerDAL、OracleDAL中。