打破传统三层架构,实现六层架构

版权声明:本文为博主原创文章,未经博主允许不得转载。

前言:对于一个项目的实现,往往都是,产品需求分析,产品设计,UI设计,数据库设计,后台编码,前端页面,各种测试,发布产品;

这个产品是我个人利用闲暇时间做着玩,包括网站,以及后台管理系统;额外说一句,前端页面是在网上下的模板,个人对前端不算精通。从产品分析到设计,以及数据库建立还有框架的搭建,我只花了2天时间,当然,这是个小网站,表的设计没有很多只有4-5张;

废话不多说了!

整个产品架构采用6层架构,主要目的是减少每层之间的耦合度以及依赖性,方便以后代码的复用和变动

图中每个箭头的指向代表引用

解释下这6层的各自作用以及实现的功能:

Model层:这里没什么好讲的,主要是利用EntityFramework框架和codingfirst直接生成的各个类以及context,但还得自己加一个类,作为之后调用context入口时的唯一性,也就是再写一个单例模式的类

IDAL层:是对DAL层的抽象,在这里我们定义了每个DAL层的行为规范,这里我们定义了四个,增删改查和分页查询,四个行为规范;为了体现代码质量,尽量避免写重复得代码,我又把这四个行为放到一个IbaseDao<T>,而具体的每个Idal只需继承即可,如图:

DAL层:数据访问层,对于每张表都有的增删改查的功能,抽出来一个泛型BaseDao<T>在此类中实现上述IbaseDao定义的几个行为,而具体的每个DAO类只需要继承ibaseDao<T>,和其对应IDAL接口类

Factory层:是BLL与Dal层进行交互的一个节点,本层采用依据传过来的IDAL接口,通过读取dal程序集,依据idao类型是不是其父类这个特性,找到dao,并返回给bll层;对于直接在BLL层中创建dao相比,耦合度大大的降低依赖性也不是那么重要,对于在后面的维护和复用是不言而喻的;代码下图:

BLL层:说到这个层,其实大家还可以去试一下,多加两个层IBLL,和BLLfactory,其作用和上述的IDAL和factory层大相径庭,作用也是减少BLL和UI层的耦合度和依赖,在原来的三层中,BLL是直接new dal对象调其方法,但在本项目中,是调取Factory层的CreateDAO方法,而且不需要引用dal层,只需引用IDAL,在传过去的类型中我们也只需要把相应的dal的接口idal类型传过去,从而对dal层的依赖减少,代码如下图:

UI层:采用MVC框架搭建,对于数据前后台交互式采用强类型视图,一般是把需要的数据封装到Model中然后再前端操作;

时间: 2024-11-06 18:42:17

打破传统三层架构,实现六层架构的相关文章

asp.net mvc 三层架构之dal层查询方法

分享分享分享!!! 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BLL(业务逻辑层).WEB层各司其职,意在职责分离. .net的三层结构中,并没有action这个概念. asp.net mvc 是微软新发布的一种网站开发架构.为了解决传统asp.net开发中不能分离Model,View和Controller而设计的. 普通的网站为了解决可移植,可维护,可扩展等问题,会把网站设计成三个独立的模块,Model负责数据库部分,View负责网页的界面,而Controller

4、传统三层架构与DDD分层架构

4.传统三层架构与DDD分层架构 模型是抽象的 现实是形象的 技巧是重要的 思想是永恒的 从传统三层架构与DDD分层架构的编程演变其实是思想的演变. 传统三层架构,即用户界面层UI.业务逻辑层BAL.数据访问层DAL.一般同时还有建立一个Model实体类的工程项目.DDD分层架构,即表现层UI.应用层Application.领域驱动层Doman.基础设施层Infrastructure. 传统三层架构,我一直使用.结构单一.逻辑也清晰,三层各处理各自的事务,上层向下层引用接口与方法,下层向上层提供

【转载】 JAVA三层架构,持久层,业务层,表现层的理解

JAVA三层架构,持久层,业务层,表现层的理解 转载:http://blog.csdn.net/ljf_study/article/details/64443653 SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发. (View:沿用JSP,HTTP,Form,Tag,Resourse : Co

JavaEE使用三层架构(显示层、业务逻辑层、数据访问层)实现数据的增删改查

实例: 1.功能描述 实现一个简易新闻发布系统,包括查看.添加.修改和删除新闻等基本功能 2.具体要求 (1) 创建数据库 newssystem,创建表 news,要求如下: (2) 程序运行时,显示'发布新闻'页面(如图 1),输入相关内容,单击'提交'按钮,将新闻内容添加到数据库 (3) 单击图 1 中的'查看'按钮,显示'查看新闻'页面(如图 2),增加'修改'和'删除'链接 (4) 单击图 2 中的'update'链接,显示'修改新闻'页面(如图 3),修改后单击'修改'按钮确认,单击'

业务层架构模式

一:业务层架构模式概述 在三层架构中,业务层负责所有业务相关的工作,包括根据输入数据或已有数据进行计算,对从表示层输入的数据进行验证,以及根据从表示层接收的命令来确定应该调用哪些数据访问逻辑.对于应用系统来说,业务层主要维护业务逻辑,是系统的核心部分.因此,在应用系统开发时,业务层的开发是最为关键的. 业务层的架构模式有多种,最著名的就是以下两种 : 事务脚本模型(面向过程的设计) 领域模型(面向对象的设计) 二:事务脚本模型 事务脚本(Transaction Script)架构模型是按照传统的

说说视图层架构

前言 最近在思考关于iOS视图架构的一些东西,于是开始纠结MVC.MVVM等架构.由于项目里原来的代码比较乱,日积月累,维护的人也换了又换,可以说到了十分臃肿难以维护的地步.所以借某个机会得以对其进行重新设计.项目里的业务逻辑比较多,也比较乱.所以必须把架构做好,以方便后期的维护. 说回视图层架构,这阵子参考了很多资料,包括MVC.MVVM等,每个人的说法都不完全一致.只有一种解释,那就是架构模式不是一层不变的,而是在不断发展的,正如项目也在发展,项目的代码也在重构.所以,这篇文章谈到的不一定是

回头再看N层架构(图解)

不知不觉来博客园已经快两半了,时间过的真快. 这次的目标是再回顾一下传统的N层架构并且分析一下在DDD中的N层架构. 一.先来看一看传统的N层架构 N-层架构的出现,主要是由于观注点的分离而产生,这三层中BL层的职责一般比较难理清,具体请看下图. 接下来我们关注一下层间交互(分离出角色与职责以后,如何交互将成为架构或模式的主要特征) 然而在实际项目中我们也会出现这样的状况 这里存在一个反模式 二.传统的N层架构与DDD中N层架构的关系 三.分层架构的一个重要原则是:每层只能与位于其下方的层发生耦

HTTP服务七层架构技术探讨

原文链接http://kb.cnblogs.com/page/158568/ 1. 为什么分层? 计算机领域的体系结构普遍采用了分层的方式. 从整体结构来看: 从最底层的硬件往高层依次有: 操作系统 -> 驱动程序 -> 运行库 -> 系统程序 -> 应用程序等等. 从网络分层模型OSI来讲,由上至下为: 应用层 -> 表示层 -> 会话层 -> 传输层 -> 网络层 -> 数据链路层 -> 物理层 当然实际应用的TCP/IP协议的分层就没OSI

三层应用与单块架构

1.1 三层应用架构的发展 1.1.1 三层应用架构的发展 层能够被单独构造 每层具有区别其他层的显著特点. 层与层之间能够相互链接,互相支撑,相互作用,相互协作,从而构成一个整体, 层的内部可以被替换成其他可工作的部分,但对整体影响不大 1.1.2 什么是三层架构 三层架构通常包括表示层,业务逻辑层以及数据访问层. 表示层 表示层部分通常指当用户使用应用程序时,看见的,听见的,输入的或者交互的部分.    业务逻辑层 业务逻辑层部分是根据用户输入的信息,进行逻辑计算或者业务处理的部分.  数据