看看这些架构分层,您是否有所收获

您是否对于分层架构有些迷惑,或者对现有的分层架构模式想再提高一些,看看下面这些或牛人,或码农的分层架构图,希望对大家,对自己有所帮助,已拨开分层架构这片迷雾。说明:以下图片引用自传说中的弦哥中的一篇文章。

1.



01,User Interface即UI层:该层作为数据输入和展示的界面,是与用户交互的有效途径,所以它起着至关重要的作用。往往给人第一印象的就是UI层,在设计的时候也要根据不同的技术或者不同的要求进行斟酌。通常可以把UI分为B/S UI、C/S UI以及WEB服务。在这里就是我们的ASP.NET项目。

02,WebModelCommon:这层作为UI与领域逻辑的中间层,它的充当了桥梁、筛选、过滤和验证的作用。它主要包括两个工程,WebHelper主要提供给UI一些常用操作。WebLogic主要对UI与领域逻辑的数据进行转换、筛选、验证及过滤操作。

03,Business Logic:Domain Model (Data Model Layer)始终是应用程序的核心,必须投入大量精力,按照面向对象的分析和设计 (OOAD) 最佳做法进行设计同时按照OOP进行开发。

04,FrameWork:主要包括数据访问框架、通用权限框架、异常和日志处理框架、IOC框架、AOP框架等基础或常用功能。

05,SOA:这一层不是必须的,根据项目的具体情况进行取舍,如果业务比较复杂且交互项目繁多,那么SOA可以减轻我们的负担;如果业务比较单一且相对简单,就可以直接调用或者使用Web Service/Remoting/WCF作为通信框架即可。在实施SOA的过程中,可以自己使用WCF+WF搭建一个小型轻量级的SOA框架,也可以使用诸如Biztalk等软件。

06,Reference:这里主要包括第三方的框架和组件项目,把这些文件分门别类地集中放在此目录下。

07,Solution Items:项目的规范、流程、重要文件等。

08,Test:这里主要放置测试需要的一些信息,如测试版本、测试文档等。

09,Publish:这个文件夹主要放置发布的版本

2.


作者描述:我在《WCF全面解析》中的一个实例的解决方法结构,基本思路是:先模块(这里指粗粒度模块,可以看成子系统)(两个业务模块:Products、Orders,一个非业务模块:Infrastructure),后层次。 Products.BusinessEntity:提供的业务实体(Business Entity)类型的定义。一般来讲,业务实体和数据契约是不同的,在这里为了简单起见,我们不仅仅将二者合一,还将业务实体作为ASP.NET MVC的Model使用; Products.DataAccess:数据访问层,在这里单纯地提供对数据库的访问了。该项目具有针对Products.BusinessEntity的项目引用; Products.BusinessComponent:也可以称为业务逻辑层,真正的业务逻辑实现 在这里。该项目具有针对Products.BusinessEntity和Products.DataAccess的项目引用; Products.Service.Interface:WCF服务的契约接口定义在这里。该项目具有针对Products.BusinessEntity的项目引用; Products.Service:用于定义实现了上述契约接口的服务。该项目具有针对Products.Service.Interface 、Products.BusinessEntity和Products.BusinessComponent的项目引用; Products:为本模块提供基本的功能,不仅仅包含对服务的调用,也包括一些必要的逻辑处理。该项目具有针对Products.BusinessEntity、Products.Service.Interface和Products.Interface的项目引用; Products.Interface:模块提供给其他模块的服务接口。该项目具有针对Products.BusinessEntity的项目引用


3.


tips:

1."解决方案文件夹"能帮助你很好的规划项目结构

2.通过对"解决方案文件夹"前面加数字1,2,3,4....,能让项目按你想要的顺序排序

3.公司名.项目名.包名.架构名的命名空间 命名约定能让你的项目结构更清晰

4.分项目的多少还是要根据项目具体情况和架构设计,分太多编译速度慢不说,其实用起来也麻烦

4.


5.


微软根据DDD架构做的一个分层示范项目,NLayerAppV2:

下载网址:http://microsoftnlayerapp.codeplex.com/workitem/6687

6.


下载网址:http://orchard.codeplex.com/


7..Net下大名鼎鼎的CMS  ,DotNetNuke(DNN):


8.架构分层中的入门级


9.


10.


Microsoft – Spain团队有一个很不错的“面向领域多层分布式项目”案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Sample(在本系列文章中,我使用NLayerApp作为该项目的名称进行介绍)。它是学习领域驱动设计(DDD)的一个非常不错的案例项目。该项目采用的是经典的DDD架构,而不是CQRS架构,但我觉得整个案例做的非常不错,基本上包含了基于DDD的架构实践的各个方面。因此,应不少社区朋友的要求,我打算花一部分精力来写一个介绍该项目理论与实践的系列文章。这部分系列文章将分为两个部分: 原理部分:这部分介绍Microsoft NLayerApp的一些理论依据,包括架构设计原则、分层架构、DDD、Distributed DDD、面向对象分析与设计等。事实上,microsoftnlayerapp.codeplex.com站点上已经有一些文档对这部分内容作了介绍,因此,原理部分的内容我将基本上是对这些英文文档进行翻译整理,然后再添加一些自己的注释,这样做的好处是,能够就整个企业级项目的开发与设计为读者提供一套相对系统全面的学习材料。NLayerApp的官方站点本身也在做西班牙语到英语的翻译工作,所以这部分英文文档也并不全面,我会在新英文版文档发布后,在此相应地添加所缺失的部分 实践部分:这部分将对整个NLayerApp Solution的结构、各个逻辑层、各种用到的技术进行剖析和介绍。与原理部分不同,此部分内容更关注技术的具体实现细节,而不是去讨论什么是面向对象,什么是分层架构等基础性问题 注意:Microsoft – Spain团队一直以“Domain Oriented”一词来形容这个项目,而不是用“Domain Driven Design”,原因是,Domain Driven Design包含的内容,不仅仅是某一种架构技术,它还包含软件项目的开发方式、开发团队的协作管理、用于领域专家和软件人员之间的“通用语言”的创建等内容。然而,在整个NLayerApp项目中,并没有用到DDD的所有这些内容,项目的范围仅限于逻辑/技术层面的架构设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值