Spring.NET企业架构实践(一)

Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(一)——架构设计

PetShop4.0是微软针对.NET企业系统推出的一个范例。业界有许多.NET与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,而且有很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念。

然而PetShop4.0存在很多争议,我想园子里一定有很多PetShop4.0的“粉丝”,重构PetShop4.0会引发很多争议,我希望园子里的朋友以“交流技术”的心态来看待此问题。对于“重构”,我只是以我个人的观点阐述了PetShop4.0一些不合理的地方,并加以“修改”,同时引入了一些我“片面”的架构设计思想。

我个人认为PetShop4.0存在以下的弊端:

1、入门级别的架构,不完全适于中、高级开发人员学习。

PetShop4.0作为.NET三层的一种入门型架构。目前据我了解,大多数公司的架构模式都采用或者效仿PetShop4.0。对此我个人认为:作为.NET开发人员来说,这样并没有完全理解分层的真正意义,照搬PetShop4.0,而没有真正灵活应用PetShop4.0。我想,针对真正的大型项目,在扩展性,重用性,负载均衡上,PetShop4.0是很吃力的。对于服务器集群的分布式的应用来说是个空白。

2、错误的引导程序员对架构的深入了解。

很多.NET开发人员习惯认为:学会PetShop4.0以后就学会了大多数公司的架构。对此我个人认为这是.NE开发人员的悲哀。目前可以这么说,PetShop4.0影响了一代.NET程序员的架构思路,并把这代程序员的设计思路给限定“死”了。习惯性认为架构就是“DAL,BLL,UI”。我想,这样就会阻碍出架构设计。我认为PetShop4.0仅仅是一个“特列”,而不是一种通用型架构。

3、移植性和重用性偏弱。

对于SQLServerDAL和OracleDAL来说,在实际中增加第三种数据库就需要再写一个DAL,这样会增加我们的开发成本,我个人建议使用ORM框架来实现比较恰当。因为这样便于数据库的移植。在持久层中,基本上每个表都需要对应的CRUD,建议使用 Repository将代码内聚起来。PetShop4.0的SQL语句是写在类里的,这一点我比较反对,我倾向于把SQL语句写在配置文件或者模板文件里(如:ibatis.net),这样看上去会更灵活。

4、仅适用于展示.NET2.0的特性,在NET3.5以上环境却失去了优势。

PetShop4.0发布已经有好几年了,在新技术层出不穷的时代。PetShop4.0对于AJAX,Web Sericve、WCF、ASP.NET MVC的支持略有欠缺。对于ORM、IoC、AOP等编程思想的概括几乎为空白。

考虑到以上的问题,我个人准备对PetShop4.0进行重构,以便新技术发展的需要。

图1是重构后的架构图:

(图1)

时间: 2024-08-31 15:21:35

Spring.NET企业架构实践(一)的相关文章

Spring.NET企业架构实践(三)

Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)--持久层 什么是持久层?先解释什么是持久,英文persistence,将内存中的数据固化,保持在物理储存设备中.然而在企业应用中,往往通过 关系型数据库来完成这一过程.那么持久层的定义是:相对于三层架构中的表示层.业务层而言,专门负责持久化数据的独立领域.设 计模式中的"单一职责"原则确定了分层的目的,说白了,持久层就是专门与数据库打交道的.如图1所示 图1 在Pet

Spring.NET企业架构实践(二)

Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)--领域模型 什么是领域模型?领域模型是对领域内的概念类或现实世界中对象的可视化表示.又称概念模型.领域对象模型.分析对象模型.它专 注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 当我们不再对一个新系统进行数据库提炼时,取而代之的时面向对象的模型提炼.我们必须大刀阔斧地对业务领域进行细分,将一个复 杂的业务领域划分为多个小的子领域,同时还必须分清重

从 Spring Cloud 开始,聊聊微服务架构实践之路

本文讲的是从 Spring Cloud 开始,聊聊微服务架构实践之路[编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架构的演进过程 单一应用架构(第一代架构) 这是平台最开始的情况,当时流量小,为了节约成本,并将所有应用都打包放到一个应用里面,采用的架构为 .NET SQL Server: 表示层:位于最外层(最上层),最接近用户.用于显示数

DotNET企业架构应用实践-实例架构设计中的业务分层-提取独立的业务层

      说明一下,原本的思路是通过一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录相关的文章来逐步讲解基于AgileEAS.NET平台进行应用开发的文章,但是在进行案例讲解的过程,我们不得不扯到有关于AgileEAS.NET平台进行应用开发的架构设计方面的东西,我就把一些与架构有关的文章分离出来讲,了,我是基于AgileEAS.NET平台的应用开发实例来讲解架构设计,所以本文应该还有个副标题"一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-提取独立

DotNET企业架构应用实践-系统架构与性能-理论依据及相关技术

性能优化介绍       在企业应用开发领域,企业架构与性能将会是一个恒久的话题,如何提高性能.性能优化也将是一个长期和不断改进的过程,有人在硬件投入上下功夫.有人在数据库系统.数据库设计上下功能.有人在系统架构中下功夫.有人在程序下功能,总的来说,性能优化系是一个多方面的综合技术. 性能优化的理论依据       在计算机领域,缓存技术应该是一个非常久远的技术,CPU设计中高速缓存技术和操作系统内存管理中的分页.分段技术应该是我们每一位开发人员都熟悉的技术,在计算机体系结构与操作系统中,这两个

DotNET企业架构应用实践-系统架构与性能-缓存技术与ORM中的缓存查询技术

系列回顾       在前面的文章DotNET企业架构应用实践-系统架构与性能-理论依据及相关做法一文中我介绍了系统性能优化的理论做了一个概括的介绍,也简单的介绍了性能优化的过程及相关的技术关注点或者说是做法.       本文将基于系统架构与程序设计两方面入手,介绍系统架构与性能优化方向一种技术实践:缓存技术与ORM缓存查询. 缓存介绍       前面的文章DotNET企业架构应用实践-系统架构与性能-理论依据及相关做法我在系统优化的理论依据中简单的提到了CPU中的调整缓存操作系统中内存管理

DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)

         企业管理软件是计算机软件应用的一个重要领域,在今天计算机软件除面向科学计算之外应用最广阔的也是企业管理应用,可以说计算机技术的发展推动着企业应用发展,企业管理需要也一方面影响着计算机技术的发展,今天,在我们的周末,企业管理应用软件开发人员占了总开发人员中的极大的比例.          今天我们就来通过回顾计算技术在企业应用中的发展历程来看看软件架构的发展. 主机-字符终端          在PC机没现世之前,极小数的企业使用大型业务处理主机处理企业计算机任务,在那个时候,计

DotNET企业架构应用实践-企业管理软件架构的历史与发展(中)- 分布式系统

在前几天的DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)一文中,介绍了在企业管理软件架构发布中的主机-终端结构.以及客户机-服务器结构.浏览器-服务器结构,本文今天向大家介绍有关于分布式计算及SOA架构方面的知识. 广义分布式系统 分布式系统(distributed system)是建立在网络之上的软件系统.正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性.因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件.内聚性是指每一个数据库

DotNET企业架构应用实践-系统架构与性能-在业务中实例使用缓存与缓存查询-附上视频

回顾与说明      本文是DotNET企业架构应用实践系列中的一篇文章,同时也是一步一步教你使用AgileEAS.NET基础类库进行应用开发系统中的一篇文章,所以本文应该还有一个副标题"一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在商口入库业务中使用缓存与缓存查询",为什么会是这样呢?这个原因主要是我希望我在讲企业架的时候有结合具体的实例进行讲解,而不是泛泛而谈,而在AgileEAS.NET平台的案例开发中也正好涉及这样的内容.     在前面