---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------

三层架构介绍

1关于架构

架构这个词从它的出现后,就有许许多多的程序员、架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的。当然,目前应用三层架构开发也正是业界最关注的主题。那么这里我们来看看单层、双层、三层甚至多层架构到底是怎么一回事。单层结构是80年代以来小型应用的结构,在那个结构化编程充斥的时代,还没有出现架构的概念,典型的是基于Dbase、Foxbase等小型数据库的应用。双层结构的同义词可以理解为传统的客户/服务器结构,尽管目前占统治地位的结构,但是其封装移植等方面的缺陷,已使它步入暮年,典型是基于Oracle、Infomix等大型数据库的C/S应用。三层结构是传统的客户/服务器结构的发展,代表了企业级应用的未来,典型的有Web下的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。 之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。

2三层架构概述

随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对封装、复用、扩展、移置等方面的要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应 运而生,可以说,三层架构体系结构是面向对象思想发展中的必然产物。当然三层架构对于目前来说早已经不是什么新鲜事物了,最早听到这个词应该是几年前使用java知道的吧, j2ee三层架构体系流行了这么多年,一直没有使用过,不过j2ee三层架构体系的提出,对软件系统的架构产生了巨大的影响,Microsoft、Boland这些公司自然不甘落后,例如Microsoft的.net平台,更有甚者,称.net之c#为java的儿子。那么何谓三层架构?所谓三层架构,是在客户/服务之间加入了一个"中间层",也叫组件层。它与客户层、服务器层共同构成了三层体系。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才有三层体系结构,三层是指逻辑上的三层。通过引入中间层,将复杂的商业逻辑从传统的双层结构(Client-Server)应用模型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种应用服务分别封装部署于应用服务器,同时增强了应用程序可用性、安全性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小化,从而实现了便捷、高效、安全、稳定的企业级系统应用。

3分层描述三层架构

三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是中间层向外提供接口,通过COM/DCOM通讯或者Http等方式与中间层建立连接,再经由中间层与数据库进行交互。当然数据通过中间层的中转无疑是降低了效率,但是它脱离于界面与数据库的完美封装,使得它的缺点显然不值得一提。

典型的三层结构分为表示(presentation)层, 领域(domain)层, 以及基础架构(infrastructure)层,而微软的DNA架构定义了三个层:表示层(presentation),业务层(business),和数据存储层(data access),当然J2ee 也有它不同的分法不过都大同小异吧。既然我用.net做的开发,这大三层我无需多说了,根据我的理解,我对此做了更详细的分层,界面外观层、界面规则层、业务接口层、业务逻辑层、实体层、数据访问层、数据存储层共七层,其具体的调用如图1所示:

图1

由图1可以看出,虽然我将系统的架构分为七层,实际上大的方面来说,它就是一个典型的三层架构设计思想。单从这个图来看,数据的调用显得繁琐而抽象,也许这时候就会有人说,我只是想实现界面上与用户交互,然后根据用户的请求将数据读出/写 入数据库就好了,为什么要做如此复杂的分层调用呢?从这个问句中我们也只看到了界面和数据库,也就是说从用户的需求来说,就是这两层而已,但是这里我们首 先要搞清楚的是三层架构它主要是为程序员为了实现部署、开发、维护企业级数据库系统而服务的。如果我们在中间层实现了对表示层和数据库层的完全脱离,其部 署、开发、维护系统的费用和时间至少降低到原来的一半,甚至更多。

---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------

黑马程序员-三层架构介绍相关推荐

  1. HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第五章课后习题(课程介绍专栏效果)

    黑马程序员编著的教材  HTML+CSS+JavaScript网页制作案例教程 第五章:"课程介绍"专栏-课后习题参考代码 题目原型: 请结合给出的素材,运用列表标记,超链接标记以 ...

  2. 专访|从程序员到架构师:交流和分享最能让技术人进步

    (尧飘海:网易蜂巢首席架构师,负责容器云计算平台建设.曾负责过网易博客.游戏.易信,开源项目Pomelo研发工作,热爱开源和技术交流.) 到2016年,云计算发展已有十个年头. 十年前,亚马逊点燃了一 ...

  3. 黑马程序员最新版JavaWeb基础教程-学习笔记

    da@黑马程序员最新版JavaWeb基础教程-学习笔记 day06-HTML&CSS HTML HTML(HyperTest Markup Language):超文本标记语言 是一门语言,所有 ...

  4. 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---最新技术--篇

    第八章 最新技术(评论区留言获取原件) 一. Redis 1. Redis 的特点? Redis 是由意大利人 Salvatore Sanfilippo(网名: antirez)开发的一款内存高速缓存 ...

  5. 黑马程序员武汉中心——程序员面试套路集

    面试套路V1.0目录 1.技术篇 1.1 如何介绍项目 2.技巧篇 2.1遇到自己不熟悉的问题? 2.2 深挖一个点 2.3引导面试官 2.4 主动提问 2.5主观意识 2.6由点及面,举一反三 2. ...

  6. 黑马程序员顺义校区php_PHP面向对象开发视频教程[黑马程序员]

    PHP面向对象开发教程 中级共14节课 本套教程讲解面向对象部分内容,从面向对象基础到面向对象高级.从自主开发面向对象到系统使用面向对象.从理论讲解到图解,全方位讲解面向对象. [讲解方式] 系统梳理 ...

  7. Java程序员 面试如何介绍项目经验? Java程序员应该如何介绍自己的项目经验和自我介绍?面试如何突出自己

    Java程序员项目经验介绍:背景:姓名:张三:年龄:25:籍贯:安徽: 毕业学校:南京审计学院:工作经验:2年:求职城市:北京面试官你好,我叫张三,今年25岁,来自安徽,毕业于南京审计学院计算机专业, ...

  8. 如何系统学习一门编程语言? | 黑马程序员

    一.从认识编程语言开始: 语言有很多种,包括汉语.英语.法语.韩语等,尽管输出的形式不同,但可以达到同样的目的.同样,我们也可以通过「语言」来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言 ...

  9. 《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案

    <Android移动应用基础教程>(Android Studio)(第二版)黑马程序员 课后习题答案 目录 第1章 Android基础入门 第2章 Android常见界面布局 第3章 An ...

最新文章

  1. 查看java内存_怎么查看java虚拟机存储空间使用情况
  2. JavaScript学习笔记-JSON对象
  3. 洛谷 - P2761 软件补丁问题(spfa+状压)
  4. 二代CMS旅游网站程序国际版开发中(支持英文、法文等),支持拓展语言包
  5. 计算机导论布尔运算,计算机导论第2讲-符号化-计算化-自动化.pdf
  6. @Column(s) not allowed on a @ManyToOne property: com.strive.entity.Module.parent
  7. 阿里开源实时计算平台Blink,能让计算延迟降至毫秒级 | 附技术详解
  8. Vijos P1975 扫雷游戏【谜题】
  9. 谢希仁计算机网络第七版 以太网单播和多播MAC地址范围[纠错]
  10. laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
  11. Android网络编程(一次网络请求)
  12. http://hi.baidu.com/%BE%C5%CC%EC%C4%A7%CA%DE/blog/item/9b3263626a75ff49ebf8f808.html
  13. 系统测试(功能测试、性能测试、负载测试、压力测试、兼容性测试、安全测试、健壮性测试、配置测试、可用性测试、文档测试)
  14. zjnu 1779 KRUŽNICE(线段树成段更新+离散化)
  15. 西北乱跑娃 --- bottle微框架从注册到应用(三)
  16. android 4.4 短信拦截,Android 4.4 KitKat升级率已经接近18%
  17. guid和mbr格式的区别;32位和64位操作系统的区别。
  18. 用友-应收应付重分类公式设置
  19. 计算机基础:源代码如何被计算机执行
  20. python陆股通_陆股通什么意思(陆股通买入后会涨吗)

热门文章

  1. c语言实心圆方程式,C语言做实心圆
  2. 智能家居python编程前景_[请看正文] 小米生态链公司、智能家居头部企业招聘大量 Python 开发工程师...
  3. 最优化理论极简入门(第二部分):拉格朗日对偶问题
  4. CSS2017:聚焦新秩序下的安全之道 开放合作共建安全新生态
  5. GIS界19个研究方向
  6. BZOJ2687 交与并/BZOJ2369 区间【决策单调性优化DP】【分治】
  7. 论文阅读:《Overcoming Classifier Imbalance for Long-tail Object Detection with Balanced Group Softmax》
  8. SQL入门学习(3)子查询
  9. Node.js websocket/ws 详解
  10. 路由与接口技术——直连网络总结