后台三层架构

后台三层架构

所谓的三层开发就是将系统的整个业务应用划分为表示层、业务逻辑层、数据访问层,这样有利于系统的开发、维护、部署和扩展。

分层实现了“高内聚、低耦合”,采用“分而治之”的思想,把问题划分开来解决,易于控制、延展,易于分配资源。

第一层:表现层/表示层:负责直接跟用户进行交互,一般是指系统的界面,用于数据录入、数据显示等。意味着只做与外观显示相关的工作,不属于它的工作不用做。

第二层:业务层/服务层:用于做一些有效性验证的工作,以更好地保证程序运行的健壮性。如完成数据添加、修改和查询业务;不允许指定的文本框中输入空字符串;数据格式是否正确及数据类型验证;用户权限的合法性判断等。通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。文件名常含有service

第三层:持久层/数据访问层:顾名思义,就是用于专门跟数据库进行交互,执行数据的添加、删除、修改和显示等。需要强调的是,所有的数据对象只在这一层被引用,如System.Data.SqlClient等,除数据层之外的任何地方都不应该出现这样的引用。文件名常含有DAO(data access object)

1. 为什么使用三层架构

对于一个简单的应用程序来说,在代码量不是很多的情况下,单层架构或二层架构开发完全够用,没有必要将其复杂化,如果将一个复杂的大型系统设计为单层架构或二层架构,这样的设计则会存在很严重的缺陷。下面会具体介绍,分层开发其实是为大型系统服务的。

在开发过程中出现相似的功能时,初级程序人员经常会复制代码,那么同样的代码为什么要写那么多次?这样不但使程序变得冗长,也不利于维护,一个小小的修改或许会涉及很多页面,经常会导致异常的产生,使程序不能正常运行。最主要的是面向对象的思想没有得到丝毫的体现,打着面向对象的幌子却依然走着面向过程的道路。

针对这样的问题,初级程序人员应学会将程序中一些公用的处理程序写成公共方法,封装在类中,供其他程序调用。例如写一个数据操作类,对数据操作进行合理封装。在数据库操作过程中,只要类中的相应方法(数据添加、修改、查询等)可以完成特定的数据操作,这就是数据访问层,不用每次操作数据库时都写那些重复性的数据库操作代码。在新的应用开发中,数据访问层可以直接拿来用。面向对象的三大特性之一的封装性在这里得到了很好的体现。采用面向对象的方法,可使代码量较以前有很大的减少,而且修改的时候也比较方便,实现了代码的重用性。

2. 使用三层架构开发的优点

从开发角度和应用角度来看,三层架构比二层架构或单层架构有更大的优势。三层架构适合团队开发,每个人可以有不同的分工,协同工作能使效率倍增。开发二层或单层应用时,每个开发人员都应对系统有较深的理解,对人员能力要求很高,而开发三层应用时,则可以结合多方面的人才,只需少数人对系统有全面的了解即可,在一定程度上降低了开发的难度。

三层架构可以更好地支持分布式计算环境。逻辑层的应用程序可以在多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。美国人曾利用分布式计算进行解密,几个月就破解了据称永远都破解不了的密码。

三层架构的最大优点是它的安全性。用户只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。

示例:

表示层:

var express = require(‘express‘);
var router = express.Router();
var UserService = require("../service/UserService");

/* GET users listing. */
router.get(‘/‘, function(req, res, next) {
  res.send(‘respond with a resource‘);
});
router.get(‘/validate‘,function(req,res){
    var username = req.query.username;
    UserService.validate(username,function(data){
        if(data.length > 0){
            res.send("用户名已存在");
        }else{
            res.send("用户名可用");
        }
    });
});

业务层:

var UserDAO = require("../dao/UserDAO");
exports.validate = function(username,func){
    UserDAO.findByUsername(username,func);
}
exports.reg = function(username,pwd,func){
    UserDAO.insert(username,pwd,func);
}
exports.login = function(username,pwd,func){
    UserDAO.findByUsernameAndPwd(username,pwd,func);
}

持久层:

var db = require("./database");

exports.findByUsername = function(username,func){
    db.collection("users").find({username:username},func);
}
exports.findByUsernameAndPwd = function(username,pwd,func){
    db.collection("users").find({
        username:username,
        pwd:pwd
    },func);
}
exports.insert = function(username,pwd,func){
    db.collection("users").insert({
        username:username,
        pwd:pwd
    },func);
时间: 2024-12-28 13:08:20

后台三层架构的相关文章

从头开始做一个OA项目(三) 关于三层架构思想

下面就开始一步一步的搭建我们的项目三层架构,自从微软的PetShop推出以来,似乎它就成了三层的代名词.在国内.Net界几乎所有的项目都是根据PetShop来搭建三层架构,甚至我还见过一些项目直接就把它的架构拷贝过来,一丝未改.直接使用.在搭建之前,为了便于还未接触过三层的同学了解.我们先把三层架构的基本概念解释一下.我们先来思考一个场景.我们大家都去过饭店吃饭,那么大家回忆一下我们吃饭的流程是个什么样子呢?如下图所示. 当我们推开饭店的大门,马上就会迎来一个笑容可掬的服务员,她会忙着招待我们,

从MVC和三层架构说到ssh整合开发-下

这章主要讲整合开发,直接从实战讲起,对与ssh的单方面了解,请继续等待我的兴许文章. 解说不到位的地方欢迎大家指正:联系方式rlovep.com 具体请看源码凝视: 全部代码下载(csdn):链接 Github链接:链接https://github.com/wpeace1212/javaBlog/tree/master/sshDemo 写文章不易,欢迎大家採我的文章,以及给出实用的评论.当然大家也能够关注一下我的github.多谢. 1.整合流程 针对一个简单项目.让大家对三层机构和MVC有一个

浅谈三层架构

三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control).而web开发中的三层架构是指:数据访问层(DAL-DatabaseAccessLayer),业务逻辑层(BLL-BusinessLoginLayer),以及用户界面层(UI-UserInterface,实际就是网页后台的具体调用BLL层).这个是基本概念.曾经我以为三层架构就是在AppCode中,分为三个大类与若干小类,各司其职.在经过一番洗礼后,才发觉多么

WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)

我们第一步就是去了解三层架构和问题然后去看MVVM是怎么去解决这些问题的. 现在,感觉和事实是完全不同的两个东西.当你看到三层架构的框图的时候,你会觉得每层的职责被分配的很好.但是当你你真的去写代码的时候你会发现其实一些层被迫去做本不应该他们做的额外的事情(违反了SOLID原则的S). 这个额外的工作就是在UI-Model和Model-Data access之间的代码.让我们就把这些代码称为“GLUE”代码.有两种主要的逻辑会造成“GLUE”代码(也许我知道的并不够多,其他的可以自己发现): 1

一个用三层架构实现数据访问的例子

看了2天的三层架构,其实自己以前也看过这个,可以由于没有使用过,所以对于三层架构也只是知道罢了,昨天看了一下他一些内部的具体架构,三层分别是BLL.WEB.DAL,在web接受用户请求,bll处理业务,dal处理数据库事务,下面是一个简单的例子!这是一个添加新员工的页面: 后台代码如下: usingSystem.Collections; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.UI; usingSystem.Web.U

三层架构(我了解并详细分析)

三层架构已经学到了一些时间,一直想做一个比較完整.比較完美的总结.可是左思右想,不知道怎样下笔.都说万事开头难嘛.今天整理了一下凌乱的思路.哎,还是没整理好,想到哪就说到哪吧. 刚開始学习的人非常不理解: 1,什么是三层? 2,为什么使用三层? 3,三层与以往使用的两层相比有什么不同?它的优势在哪里? 4.怎样学好三层?怎样应用三层? -- 这篇博客里我会给大家一一解释一下.略懂皮毛忘大家见谅.! ! 米老师一直强调:让学习和生活结合,把学习和生活联系,这种学习才叫会学习,会生活. 对于三层我左

简单的web三层架构系统【第五版】

接上一版,今天差不多就是三层架构后台代码的完结了,这一版写完,接下来就是前台的制作了,前台不太熟悉,还在深入学习.过一段时间在写,今天先把后台代码写完. 三层架构包括DAL层, BLL层, UI层(也就是web层),前几版重点放在DAL上,也就是数据访问层代码的编写.其实BLL层中的代码编写起来容易,真正的要灵活的用起来,还是需要一些算法方面的基础的,BLL业务逻辑层,主要处理逻辑方面的东西,这一层不太涉及也不需要编写数据库中的代码,因为在DAL层中已经编写完成,只需要在BLL中定义使用即可.

[转]C#三层架构登陆实例

很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层的划分是物理上的划分. 表示层(UI),这个最容易理解,就是用户看到的主界面. 数据访问层(DAL),也不难理解,主要是负责数据的增删改查. 业务

三层架构(我的理解及具体分析)

三层架构已经学了一段时间,一直想做一个比較完整.比較完美的总结.可是左思右想,不知道怎样下笔.都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好,想到哪就说到哪吧. 刚開始学习的人非常不理解: 1,什么是三层? 2,为什么使用三层? 3,三层与以往使用的两层相比有什么不同?它的优势在哪里? 4,怎样学好三层?怎样应用三层? -- 这篇博客里我会给大家一一解释一下,略懂皮毛忘大家见谅!!! 米老师一直强调:让学习和生活结合,把学习和生活联系,这种学习才叫会学习,会生活. 对于三层我左思右