Duwamish 7.0 架构心得

本文分享了作者在学习Duwamish架构及项目二次开发过程中的体会。Duwamish架构采用N层结构,包括Web层、BusinessRules层和DataAccess层。作者通过对比自己项目的经历,强调了清晰架构的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        学习了一段时间的Duwamish架构,并且同时也在对自己先前做的一个项目进行二期开发。有了一些心得体会。这里记下来,作为以后项目开发的经验。  

        Duwamish采用的一个N层结构。它提供了一个企业级Web 应用程序的一个通用的结构。很多企业级的Web应用程序都可以在几乎不改的情况下套用这个结构来进行系统的开发。这确实是一个很诱人的地方。先看看,这个结构为什么通用。 这里我们抽象出三个层次,因为这几个层次才是Duwamish的核心层次,其他的类库,模块都是为了使系统拥有更好,更清晰的结构或者有更好的健壮性而挂接在应用程序中的。也就是说,没有这些类库,模块一样可以建立一个Duwamish,只是这个Duwamish没有先前那个优美罢了。这三个层次就是:Web, BusinessRules, DataAccess。是不是觉得很眼熟,对了,这其实就是我们天天挂在嘴边的三层架构。关于三层架构的文章很多,我这里就不多说了。我现在只是想说说为什么很多企业应用程序的开发都可以照搬这个架构。首先一个Web应用程序总需要和用户进行交互,那么这些相关的页面你可以放在Web层中。一个企业应用总会要遵循一定的业务规则,你可以将他们封装到BusinessRules层中。现在的企业应用没有数据库做为后台的情况很少很少了,那么有关数据的四大基本操作可以集中放在DataAccess中。

        现在回顾一下其他的几个部分:SystemFramework, Common, BusinessFacade。首先是SystemFramework, 这层主要封装的是一些日志记录的方法和应用程序的配置信息。而Common层封装的主要是一些有关Duwamish本身的配置信息。我们可以从里面对应的配置项的名称可以看出。比如SystemFramework.ApplicationConfiguration中定义的配置项基本都是一些有关跟踪信息和出错信息相关的。而Common.DuwamishConfiguration中包含则是有关页面缓存相关的设置。然后就是BusinessFacade,其实Duwamish使用了一个门面模式,而门面就是BusinessFacade, 这里根据不同的实体,分成了不同的小门面。这样做的好处就是,页面开发人员可以只于门面层进行交互,而不需要知道门面后面是怎样实现的了。这对于拥有很多类,很多模块的应用程序很有好处。让页面开发人员有一种很清爽的感觉,全世界似乎就剩下门面了,至于其他的那些杂七杂八的类,我一概不知。这里要提一下就是,如果系统有一定的规模的话,建议根据不同的子系统建立特定的门面类,而不要建立一个大而全的门面类。这样很容易使这个类异常的庞大,而且在系统不断的升级和修改当中也很可能破坏系统的总体架构,这个将在后面提到。

        关于Duwamish本身就说这么多了。下面就结合我自己实际项目中的一些体会来说一下Duwamish的好处。首先从总体架构来说, 我最初开发系统的时候也是用了“三层”结构。因为后台是基于SAP系统的,所以数据层我就不用管了,于是我就建了两个层,一个Web层,一个类库。所有操作的类都放在类库中。开始系统功能还不大觉得感觉还不错。但是随着系统功能的增加,随之而来的修改,慢慢的我就觉得系统的结构越来越乱了,以前的架构被破坏掉了。我甚至在页面的后台代码中直接写了一些业务的处理代码。而且在修改的时候,觉得要修改的地方到处都是。开发一个新的功能,写的函数不知道放在哪个类文件最合适。原本“清晰”的结构越来越模糊。连我自己都觉得都不想看了。后来仔细的想了一下,发现其实最初的时候系统的结构就不清晰,每个部分都不能明确自己的职责,从而导致了在经历了系统的升级和修改以后,系统架构被破坏了。反观Duwamish, Web层就应该放一些与用户进行交互的页面。所有业务逻辑必须都放在BusinessRules层中。而数据库的存储操作当然放在DataAccess中。这样当你对系统进行升级或修改的时候,那么你可以先确定你的变动是属于用户交互的?是业务逻辑的改变?还是数据的存储方面的。然后你就可以很清晰的将变动添加到它应该在的地方。这样系统的总体结构就得到了维持,而层结构对应的好处也就可以保持下去了。当然如果一个应用的业务逻辑十分的复杂,可能对BusinessRules层中又要进行划分,但这是一个递归的过程。思想应该是一样的。仔细想想其实这些思想很早就存在了,比如你新买了电脑,通常会对硬盘进行分区操作。比如C盘是系统盘,叫System, D盘是游戏盘叫Game, E盘是安装软件的叫Software。等等其实也是基于一种“分而治之”的方法,这样我们电脑中存储的数据才更加清晰,查找起来更加方便,同时当你安装新的软件的时候也可以很明确的知道应该装在E盘。

        最后还要说一下,就是类库的使用。类库可以看成一个相对独立的功能模块。在编译了一个它会生成一个独立的dll文件。其他项目只要对这个dll文件进行引用,就可以使用类库中提供的方法。这对代码的复用很重要。所以可以在设计系统的时候,抽象出来一些可以复用的代码形成一个类库,这样可以加快以后的开发操作。

        P.S. 说了这么多,能把最近的一些心得记下来,心里很高兴。由于目前才在企业实习七个来月,文章肤浅,甚至错误的地方一定不少。那也请各位高人不惜赐教,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值