`
long546324
  • 浏览: 207632 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

.net分层构架技术

    博客分类:
  • .net
阅读更多
技术总是随着时代而进步。跟随着硬件的摩尔定律的飞速发展,现在的软件和传统的软件也有了天壤之别。传统的软件由于受到硬件速度和存储空间的制约,不得不在算法上大做文章,以节省本来就少得可怜的硬件空间和有限的CPU资源,而现今的软件则不同,高速的CPU处理能力,超大容量的存储空间,使得软件在算法上的选择空间更大,当然,这里的意思并不是说,现在的软件设计不需要设计算法,而是说在设计过程中可以有更多的选择,可以同时兼顾软件的效率和其他特性(可扩展性、易用性、稳定性等)。于是,系统分层应运而生。

1.1            经典三层结构

1.1.1 经典三层结构概述

三层架构即将系统分为三层,分别是数据访问层、业务逻辑层和表示层。其中,数据访问层实现对数据库操作的封装,以隔离具体业务和数据库之间的联系;而业务逻辑层则实现对业务逻辑的封装,隔离用户操作的界面和具体业务逻辑;表示层即用户界面层,提供用户操作接口。这样分层封装的好处是分化了复杂的系统,同时也提高了系统的可维护性,也使得开发过程中的分工协作更加方便快捷。

以下是经典三层结构的简单图示:

Oracle数据库

Sql Server数据库

表示层

业务逻辑层

数据访问层

用户



从上图中可以看出,用户所能看到的只有他所操作的界面——表示层,其它各层对表示层都是隐藏实现的。这样做的好处在于,一方面提高了安全性,用户只能通过界面上的操作来进行业务,杜绝了违规操作的可能;另一方面,业务逻辑层和数据访问层的分离,在一定程度上保证了系统的可扩展性,在新增一个业务逻辑或者某个已存在的业务逻辑发生改变时,数据访问层可能不需要改变,或者在更改数据库服务器时,业务逻辑层不需要有任何改变,只要更新数据访问层即可。

1.1.2      经典三层结构的详细描述

我们来看一下三层结构中各层的描述及详细结构:

一、数据访问层

数据访问层的主要功能是提供访问不同数据库的方法的封装。该层处在系统的最底层,对上层用户隐藏实现。在业务逻辑层通过调用数据访问层的接口来完成其操作。具体静态结构图如下所示:



其具体实现过程是:首先通过DALFactory创建SQLServerDAL或OracleDAL中类的实例,并将其赋予他们的父类IDAL(接口),然后通过IDAL的类的实例来调用其相应的方法已实现复杂的业务逻辑(面向对象技术)。

二、业务逻辑层

业务逻辑层的主要功能是提供业务逻辑的封装,对其上面的表示层隐藏实现。在表示层通过调用业务逻辑层的接口来实现各操作。其静态结构图如下所示:



业务逻辑层主要依赖于数据访问工厂和数据访问层的接口。

三、表示层

表示层主要是提供用户的操作界面(用户接口),具体的业务逻辑通过调用业务逻辑层的方法实现。

1.1.3      总结

分层架构的主要优点是分化了系统的复杂度,同时也提高了系统的灵活性(这点从系统同时满足各种类型数据库即可看出),另外,分层架构大大提高,由于层次的增多,同一个了系统的可维护性和可扩展性。但是,分层架构在众多优点的背后也隐藏着缺点解决方案下项目也多,过多的跨项目访问对应用程序的效率有一定的影响,但这一点现在可以在越来越快的硬件提升速度中忽略。

1.2            简单三层结构

对于某些小型的MIS项目,如果严格按照经典三层结构来设计,则会因为层次上项目过多而导致系统繁琐,所以提出一个经典三层结构的变体——简单三层结构。

简单三层结构可以有两种表现形式,一种是系统要求数据访问的灵活性较高,而业务逻辑层和表示层却相对固定,此时可以将业务逻辑层和表示层相结合,形成一个两层的结构,即:

Orcale数据库

Sql Server数据库

表示层

业务逻辑层

数据访问层



而另一种则是系统要求业务逻辑灵活多变,而表示层却相对固定,此时可以将业务逻辑层和数据访问层相结合,而将相对固定的表示层独立出来,形成一个两层结构,即:

Orcale数据库

Sql Server数据库

表示层

业务逻辑层

数据访问层



    以上是简单三层结构的两种表现形式,其实这种结构是在综合了小型信息管理系统的性能和灵活性两方面来考虑的,它可以在一定程度上满足系统灵活性的要求,也可以在一定程度上满足性能要求(就目前硬件的速度来看,软件对性能的要求会越来越低,但这并不能说明我们在开发过程中可以不去考虑性能问题,只是说在性能上可以适当放宽要求)。

1.3            三层结构的扩展——五层逻辑架构

逻辑N层架构的好处就是把所有的功能区分开,形成清晰的角色或组,是软件的架构变的更加清晰和克维护。

1.3.1 五层逻辑架构概述

这个扩展的五层逻辑架构的层次分别为:表示层、用户界面层、业务逻辑层、数据访问层、数据存储和管理层。以下将分别对这几个层次进行简单介绍。

表示层

用户界面层

业务逻辑层

数据访问层

数据存储和管理层



一、            表示层

为什么要将表示层和用户界面层分离开来呢?从Windows桌面应用来说,表示层和UI层是同一层,即用户能操作的图形用户界面(GUI)。但是从Web应用的角度来看,区别就比较明显了。用户所看到的界面(浏览器)只负责将信息显示给用户和采集用户输入的数据信息,而实际的操作逻辑却运行在服务器端。

二、            用户界面层

这一层的作用主要是决定用户程序的外观和解释用户输入的逻辑。在许多的应用程序中,UI代码非常复杂,它是以一种非线性的方式来响应用户的请求(控制用户如何点击控件,或者是进入或离开窗体或页面是很困难的),另外,UI层代码还必须要和业务逻辑层的逻辑互操作来验证用户的输入,并对用户的输入作必要的处理。

UI层存在的作用基本上就是接受用户的输入,然后提供给业务逻辑层,在业务逻辑层中用户的输入得到验证、处理或操作,然后UI层再把业务逻辑层所得到的结果给客户显示出来以响应用户。

三、            业务逻辑层

业务逻辑层包括所有的业务规则、数据验证、数据操作、数据处理和应用程序的安全性。它制定了企业的业务处理方式。

如果你希望所做的软件能够获得不断增加的可维护性和可重用性的好处的话,把业务逻辑层和用户界面层相分离绝对是非常关键的。因为任何延伸到UI层的业务逻辑都只存在于特定的UI当中,任何以后可能创建的UI都无法使用。

四、            数据访问层

数据访问代码是通过与数据管理层进行交互来提取、插入、更新和删除数据信息的。数据访问层并不管理和存储数据,它只是在业务逻辑和数据库之间提供一个接口。

其实,这样做的好处还有一个。大家都知道,数据访问技术的变动是很频繁的(从ODBC到DAO、OLEDB、ADO、ADO.Net等),这意味着每一次数据访问技术的变动都要重写那些数据访问的代码,如果把数据访问放到一个单独的、特定的层里,上面的改变对应用程序的冲击会降低许多。

五、            数据存储和管理层

这一层的关键在于它对所处理的数据进行物理的创建、提取、更新和删除。这和数据访问层不同,数据访问层只是对创建、提取、更新和删除数据提出请求。数据管理层实际上是在数据库中实现这些操作。

下面让我看看这五层分别扮演的角色:

层次
角色

表示层
负责显示和搜集用户输入

用户界面层
用户和业务逻辑之间的中间层,负责搜集用户输入并提供给业务逻辑,然后把结果返回给用户

业务逻辑层
负责提供应用程序所有的业务规则、数据验证、数据操作、数据处理和安全

数据访问层
业务逻辑和数据管理之间的中间层,封装当前主要的数据访问技术、数据库和数据结构的信息

数据存储和管理层
负责数据在一个持久的数据存储中物理的创建、提取、更新和删除


1.3.2 五层逻辑架构的最优性能模型

当所有的焦点都集中在分布式系统的时候,大家很容易地忘记了单层解决方案的价值。我们可以把所与的东西运行在同一台客户机上,系统部署在一个单一的物理层(客户机)上并不会对逻辑架构的分离造成伤害。如下图所示:

表示层

用户界面层

业务逻辑层

数据访问层

数据存储和管理层



我觉得这一点的重要性是不言而喻的:N层系统可以运行在同一台电脑上来支持需要独立环境的许多种应用程序。其实,这和两层的胖客户端的物理架构是基本上一样的,唯一的区别就是数据存储和管理层将运行在中央数据库服务器上(如Sql Server或Oracle),如下图所示:

表示层

用户界面层

业务逻辑层

数据访问层

数据存储和管理层



除了数据存储的位置不同以外,这与单层配置一模一样,而且通常从单层到两层的切换出了修改数据库设置字符串外,几乎没有什么其他要做的。

1.3.3 五层逻辑架构的高可扩展性模型

单层配置适用于独立环境,它们的高性能是毋庸置疑的(不需要考虑任何的网络延迟问题),但缺点也很明显——可扩展性能差。通常会使用两层的配置,这样可以兼顾性能和可扩展性。

进一步来看,我们可以通过将数据库访问层移到一台独立的电脑上的办法来牺牲一部份性能以换取可扩展性。如果你有超过一百个并行的用户,你就可以从使用单独的服务器来处理数据访问中获得好处。这样做的另一种好处是安全。因为数据访问层包含有直接操作数据库的代码,所以运行数据库访问层的电脑一定要有用来访问数据库服务器的用户名和密码。与其在客户机上保存这些用户名和密码,不如将它移到应用服务器上,这样用户的电脑就不需要保存访问数据库服务器的用户名和密码,提高了安全性。

另外,我们也可以将业务逻辑层移到应用服务器上,这对于非交互的业务逻辑非常有用,如批量更新或数据密集型的业务算法。然而,大多数的应用程序允许用户交互,所以又要求业务逻辑运行在客户机端,提供高级别的用户交互性能。

这样,数据访问层可以移到单独的应用服务器上,而业务逻辑层可以同时运行在客户机端和应用服务器上,如下图所示:

表示层

用户界面层

业务逻辑层

业务逻辑层

数据访问层

数据存储和管理层

客户机端

数据库服务器

应用服务器



1.4            逻辑架构总结

逻辑架构定义了如何分离应用程序中不同的代码。一个好的逻辑架构的目的是使代码更容易维护、理解和可重用。而物理架构的定义则指定了运行应用程序的电脑,一个好的物理架构目的在于使系统在性能、可扩展性、安全性和容错能力之间取得最好的平衡,来满足你的特定环境。

分层架构的主要优点是分化了系统的复杂度,同时也提高了系统的灵活性(这点从系统同时满足各种类型数据库即可看出),另外,分层架构大大提高了系统的可维护性和可扩展性。但是,分层架构在众多优点的背后也隐藏着缺点,由于层次的增多,同一个解决方案下项目也多,过多的跨项目访问对应用程序的效率有一定的影响,但这一点现在可以在越来越快的硬件提升速度中忽略。
分享到:
评论

相关推荐

    在.NET上构架企业级应用程序

    我们将从软件架构的基础知识开始,逐步介绍.NET框架的核心组件,以及如何利用ASP.NET、C#和SQL等技术来实现复杂的业务逻辑和数据管理。 【标签】:.net, asp.net, c#, compiere, SQL 【正文】: 企业级应用程序的...

    外国佬的.net MVC构架底层

    《深入理解外国佬的.NET MVC架构底层》 在软件开发领域,.NET MVC...综上所述,外国佬的.NET MVC构架底层涉及到的技术和设计思路相当丰富,通过深入学习和实践,我们可以更好地理解和应用这一强大的Web开发框架。

    asp.net 三层构架 留言板例子 源码

    5. **ASP.NET技术** ASP.NET是Microsoft开发的Web应用程序框架,支持多种Web应用模型,如Web Forms、MVC和Web API。这个例子中使用的是Web Forms模型,它提供了一种基于控件的编程模型,适合快速开发复杂的交互式...

    .net 三层构架入门源代码

    这个入门源代码提供了学习.NET三层架构的良好起点,特别适合初学者和对.NET技术感兴趣的朋友。 首先,三层架构的核心理念是将应用逻辑划分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business ...

    ASP.NET基础教程—C#案例版,通过本书的学习,读者可了解用ASP.NET构建功能更强大的构架更好的Web应用程序需要哪些专门技能,清华大学出版

    5. 数据访问:了解ADO.NET或Entity Framework等数据访问技术,可以方便地与数据库进行交互,进行CRUD(创建、读取、更新和删除)操作。同时,学习ORM(对象关系映射)可以帮助开发者更好地管理数据库操作。 6. 部署...

    asp.net 简单的三层构架例子 适合初学者

    在这个"简单的三层构架例子"中,我们将会探讨如何使用C#编程语言在ASP.NET平台上实现一个基本的三层架构,这对于初学者来说是非常有价值的入门实践。 三层架构是一种常见的软件设计模式,它将应用程序分为三个主要...

    ASP.NET的三层构架(可做其他技术的三层构架参考)

    ### ASP.NET的三层架构解析 #### 一、引言 在软件开发领域,合理的架构设计是确保项目成功的关键因素之一。对于初学者来说,理解软件架构可能会感到有些困难,特别是像“三层架构”这样的概念。本文将通过一个具体...

    容易理解的多层构架框架(ASP.Net)示例

    想学构架分层,看PetShop可能还是有点难度滴哦。。。。 本示例不是要求大家明白其中的优化,旨在让大家明白如何分层, 已经能看懂PetShop的朋友别下,浪费你的分,是CSDN的不对;浪费你的时间,那就让我很不好意思了!

    ASP.NET个人社区博客系统案例

    ASP.NET个人社区博客系统是一个基于ASP.NET技术构建的在线平台,专为个人用户提供博客创作、照片分享等功能。这个系统的设计和实现充分利用了ASP.NET的特性,以三层架构为基础,确保了代码的可维护性、扩展性和高效...

    图书馆管理系统 三层构架 .net语言书写

    在.NET环境中,DAL可以使用ADO.NET或Entity Framework等技术来实现。 二、.NET语言应用 .NET框架是微软提供的一套全面的开发平台,支持多种编程语言,如C#、VB.NET等。在这个图书馆管理系统中,开发者可以选择其中...

    asp.net mvc插件

    描述中提到的"三层构架"指的是应用程序设计中的常见分层架构,包括数据访问层、业务逻辑层和表示层。在ASP.NET MVC中,数据访问层通常处理与数据库的交互,业务逻辑层负责应用的核心逻辑,而表示层则包含了视图组件...

    [ASP.NET.2.0.揭秘].Sams.ASP.NET.2.0.Unleashed.Jun.2006

    [ASP.NET.2.0.揭秘].Sams.ASP.NET.2.0.Unleashed.Jun.2006 共2个包这是第一个 第I部分 基础篇  第1章 Web编程概述  第2章 建立开发环境  第3章 C#编程基础 ... 第24章 分层与构架  第25章 学习资源

    ASP.NET 控件的使用

    15.3 构架思考 488 15.3.1 创建多层应用程序 489 15.3.2 创建用户界面层 489 15.3.3 创建业务逻辑层 492 15.3.4 创建数据访问层 494 15.4 小结 497 第16章 使用ObjectDataSource控件 498 16.1 使用ObjectDataSource...

    ASP.NET 3.5 开发大全

    3.4.3 分层设计中使用命名空间 3.5 类的方法 3.5.1 编写方法 3.5.2 给方法传递参数 3.5.3 通过引用来传递参数 3.5.4 方法的重载 3.6 封装 3.6.1 为什么要封装 3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写...

    Pet Shop 4.0 架构与技术分析PPT.ppt

    它起源于.NET与J2EE技术之间的比较,作为.NET平台的一个标杆案例,为开发者提供了学习和理解.NET设计模式的机会。 该应用程序采用了一个典型的“三层”架构,包括数据访问层、业务逻辑层(领域层)和表示层。这种...

    asp.net(C#)新闻系统

    【ASP.NET(C#)新闻系统】是一个基于C#编程语言和ASP.NET技术构建的三层架构应用程序,用于实现新闻管理的功能。这个系统的核心在于其分层设计,它将业务逻辑、数据访问和用户界面分离,提高了代码的可维护性和可重用...

    ASP.NET3.5从入门到精通

    3.4.3 分层设计中使用命名空间 3.5 类的方法 3.5.1 编写方法 3.5.2 给方法传递参数 3.5.3 通过引用来传递参数 3.5.4 方法的重载 3.6 封装 3.6.1 为什么要封装 3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写...

    ASP.NET 3.5 开发大全word课件

    3.4.3 分层设计中使用命名空间 3.5 类的方法 3.5.1 编写方法 3.5.2 给方法传递参数 3.5.3 通过引用来传递参数 3.5.4 方法的重载 3.6 封装 3.6.1 为什么要封装 3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写...

Global site tag (gtag.js) - Google Analytics