- 浏览: 476643 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
N-tier architecture N层架构
下面的内容既有我的理解,也有翻译的内容,翻译的书名为:
<<Expert C# 2008 Business Objects >>http://www.douban.com/subject/3442908/
n层架构,包括两方面的架构。一方面是n-tier 的物理架构,一方面是n-tier的逻辑架构。笼统的说呢,物理架构就是计算机和其他辅助硬件的架构,要分层,目的是获得高性能Performance、高扩展性Scalability、高安全性Security、和高容错性Fault tolerance;逻辑架构指的是代码设计方面的架构,代码的分层,主要的目的都是方便我们开发人员的,主要好处:
l 使代码更有逻辑性
l 更加容易维护
l 更好的代码复用
l 更好的团队开发体验
l 更清晰的代码职责
在N-tier物理架构带给我们的好处中,高性能和高扩展性、高安全性、高容错性是成反比的,需要我们在设计的时候来衡量。其实,是层数越少,性能越高,减少了网络通信量,但是其他性能就会下降,其他性能如果高了,就意味着需要加加入更多的层,至少是增加验证,增加错误的处理,这些都会带来性能的损耗。
这就需要我们针对具体的客户环境进行设计,例如银行类系统,那么他的安全性好容错性当然要比高性能更重要,用安全来换取一些性能的损耗是值得的;但是某些要求实时性高,用户体验更重要的场合,安全的地位相对要低一些,要保证处理的及时性,保证网站或者系统的运行性能。
逻辑的n-tier架构,这里我引用CSLA.NET的设计,5-layer login architecture。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>
五层的作用分别是
Layer |
Roles |
Interface |
向用户呈现信息和收集用户的输入 |
Interface Control |
扮演用户和逻辑层之间的角色,将用户的输入交给逻辑层,然后将返回结果给用户 |
Business Login |
提供所有的业务逻辑规则,验证,操作,处理和应用程序的安全保证 |
Data Access |
扮演业务逻辑层和数据管理层的中间角色,包装和包含所有的数据访问技术、数据库和数据结构 |
Data Storage and Management |
物理的创建、获取、更新和删除存储在持久存储中的数据 |
逻辑的五层可以分布在单一物理环境或者是多层物理环境,逻辑的一层可以分布在多个物理的一层,多个逻辑的层也可以分布在一个物理层中。
在两层的物理环境中,通常是将数据存储和管理层分离出来,也就是用单独的服务器安装MS SQL或者是Oracle这类数据库管理系统,使得数据库管理系统充分发挥它的作用。
两层物理架构中,MS SQL Server最多可以处理350人左右的并发请求。两层物理架构极大的提高了性能,但是他们不如三层物理架构的可扩展性好。一个好的原则是,如果你的并发用户超过50甚至到了100,你最好将数据访问层也分离出来,组成三层物理架构。
将数据访问层分离出来的另外一个原因是安全。因为数据访问层包含和数据库的直接交互,数据访问层所在的机器被数据库服务器所信任,与其将这种信任放在一个客户端机器上,不如将它独立在一个应用服务器中。这样用户的计算机就不会直接被数据库服务器信任,这样就增加了数据库服务器的安全。
也可以将业务逻辑层分布在一个应用服务器上,这样将给那些非交互性的处理,例如:批量更新、密集的业务数据计算,带来好处。大部分的应用都允许用户进行交互,因此都有一个明确的需要,将业务逻辑层分布在一个应用服务器上,来提升交互性。
前面讲过了,可以将一个逻辑的层分布在多个物理的层中,你可以将数据库访问层分布在一个应用服务器中,将业务逻辑层分布在客户端应用层和应用服务器层中。在.NET中,如果所有用户链接数据库都使用相同的用户ID和密码,你可以使用连接池来管理所有的用户。这样可以使用更少的数据库连接代替每个客户直接连接数据库服务器的做法。实际中这些需要依赖于应用的细节,但是这就意味着,两三个数据库连接可以支持150到200的并发量。
当然了,这么做,所有的请求都需要经过外部网络,这就增加了潜在问题(例如性能的下降)。这种性能的花销,换来了大的可扩展性,因为这种物理配置比2-tier可以处理更多的并发请求。
将业务逻辑层部署在客户端和服务器端,这种应用可以完全的发挥两端计算机的长处。一些验证和业务处理可以放在客户端计算机上,这样提供了丰富的、很好的客户交互体验,同时非交互性的处理也能在应用服务器上高效的运行。
如果设计的好,这样的架构可以支持上前用户的并发请求,同时提供足够的性能保证。
性能最优的web client
在WPF和WinForm应用中,通过较少物理层的数量来获得好的系统性能。但是,这类交换在web方案中就不一样了:在增加性能和可扩展性的同时,对于安全的花销,下面也将证明。
为了在web应用中获取最佳的性能,将大部分代码运行在一个单一机器的环境中是可取的。
接口层一定是物理分离的,因为他运行在浏览中,但是接口控制层、业务逻辑层、数据访问层可以运行在相同的物理机器上,同时处理。有时候,你会把物理存储也放在一起,但是这只适用于很小的应用。
上面的这幅图中展示的是最优的性能,同时可以获取好的可扩展性,因为web服务器可以使web服务器场的一部分,所有的web服务器运行相同的代码。
这种类型的安装提供了很好的数据库连接池,因为每台web服务器可以处理上百的请求,所有的数据库连接都在池中。
除非来自服务器场的连接占了主要地位,否则不需要分离出应用服务器,因为额外的应用服务器增加了物理的层,带来了可扩展性的同时也降低的性能。在这样的环境中考虑容错性是必要的,因为大量的应用服务器会出现点的失败。
高安全的web client
在前面我们已经讨论过,我们的许多项目规定web服务器不能直接访问数据库。Web服务器一定要运行在DMZ(军事隔离区)中,夹在外部防火墙和内部防火墙中。Web服务器一定会通过内部防火墙的一个服务和内部的数据库或者是其他系统进行交互。上图的虚线代码防火墙。
在winform的解决方案中,这种业务逻辑层部署在web服务器和应用服务器两层的方式带来很多的好处。
分离数据访问层,将它运行在一个分布的应用服务器中,增加了应用的安全。但是,这样做带来了性能损耗,这在前面已经讨论过了。这种配置大概会导致性能下降50%。从另外一个角度看,这种配置的可扩展性很好。比如说第一个web配置,你可以通过实现一个服务器场类提高可扩展性,每一个服务器都运行相同的接口控制层和业务逻辑代码。
发表评论
-
NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
2010-06-04 00:13 528如果你的应用是通 ... -
NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
2010-06-05 00:48 630组件提供了一种将 ... -
NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 498本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该 ... -
NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
2010-06-06 06:15 5655 决定数据绑定的 ... -
NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
2010-06-07 06:58 585前言 业务组件 ... -
微软企业库5.0学习笔记(四十二)异常处理模块
2010-06-14 00:04 810企业库的异常处理 ... -
关于程序员在30岁、35岁之后怎么办的新思考
2010-06-14 10:40 599首先给大家问个好 ... -
NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题
2010-06-17 20:00 557概况 大部分的 ... -
微软企业库5.0学习笔记(四十三)数据验证模块
2010-06-19 08:07 967概况 任何接受用户或者是其他系统输入的应用,一定要确保 ... -
关于项目进度慢的思考----如何提高整体开发效率
2010-06-21 23:42 775我们都是软件行业 ... -
微软企业库5.0学习笔记(四十四)实战数据验证模块
2010-06-23 19:22 8001 在业务对象上添加验证 添加对程序集【Microso ... -
微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇
2010-06-24 19:41 9531、添加自定义的提示信息 验证失败的提示信息可以自定义 ... -
面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
2010-06-29 15:45 741引言 面向对象类设计,或者说是面向对象设计,有五大原则 ... -
《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)
2010-07-01 06:42 626oreilly的《Head.First ... -
《深入浅出设计模式-中文版》读书笔记-继承与组合(三)
2010-07-03 16:53 582经过上一次的改造 ... -
《深入浅出设计模式-中文版》读书笔记-观察者模式(四)
2010-07-06 06:34 606今天要接触的是观 ... -
利用attribute实现简单的ORM
2010-07-09 15:27 651我不知道NH的ORM具 ... -
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
2010-07-14 13:02 790题外话 最近已经在努力学习了,学习基本功,学习设计模式 ... -
《深入浅出设计模式-中文版》读书笔记-工厂模式(五)
2010-07-16 12:46 673今天给大家带来的是:工厂模式。 我们在代码中创建一个对 ... -
Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)
2010-07-18 21:47 642题外话 又是一本Head.First系列的书,这个系列 ...
相关推荐
Author introduces the basics of n-tier architecture with example.
N-tier架构的基本设计模式
3-Tier-Architecture-using-dapper-master.zip Dapper
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
Without a clear and well- defined architecture, most developers and architects will resort to the de facto standard traditional layered architecture pattern (also called the n-tier architecture), ...
基于三层架构的电子封签管理系统设计与实现,丁杰,吉国力,本文针对传统运油车“黑盒子”管理方式的缺点与不足,设计出了基于IC卡的电子封签综合管理系统。该综合管理系统将智能IC卡的强大��
沿模型,SFA,Two-tier Stochastic Frontier Mod el:案例数据+命令+程序命令源代码+案例文章****面板改进版*** *--- --------Panel SFA 一般化设定----------------- * * y[it] = a + x[it]B + v[it] - u [it] (1...
双边随机前沿模型,SFA,Two-tier Stochastic Frontie r Model:视频讲解+程序命令源代码是基于Kumbhakar的Two-tie r Stochastic Frontier理论 双边随机前沿模型,SFA,Two -tier Stochastic Frontier Model:视频讲解...
QSL-Tier电路图QSL-Tier电路图QSL-Tier电路图QSL-Tier电路图
Completely based on n-tier architecture 完全基于多层架构n-tier Forms based authentication 基于Forms的验证 User management via Membership providers 使用成员提供者管理用户 Role based security ...
interference avoidance technique for a femtocell based two-tier DS-CDMA network using shared spectrum. Assuming randomly distributed macrocell users and femtocell base stations (BS), we evaluate a ...
Windows编程的三层架构应用,简单介绍,可以直接应用到你的项目中,
(英文版)WCF 4.0 Multi-tier Services Development with LINQ to Entities Packt Publishing 出版2010, PDF格式
详细描述了TC 2-Tier客户端的安装过程
npm install --save multi-tier-menu 用法 import React , { Component } from 'react' import MultiTierMenu from 'multi-tier-menu' import 'multi-tier-menu/dist/index.css' class Example extends Component { ...
在「N-tier架构的基本模式」文章里,已经介绍5个基本的模式了。该文也强调:学习这些基本模式时,也必须学习如何修正它们,以便迅速落实于您的特殊新环境中,才算学以致用! 于是,本文就基于该5个模式而继续推演出...
Symantec Multi-Tier Protection 经过精心设计,通过为多平台企业网络、邮件服务器和邮件网关提供无可匹敌的恶意软件防御能力,能够保护企业资产并降低风险。ymantec:trade_mark: Endpoint Protection 不仅提供了...
CAB: Cache Aware Bi-tier Task-stealing in Multi-socket Multi-core ArchitectureQuan Chen∗ , Zhiyi Huang†, Minyi Guo∗ ∗Department of Computer Science, Shanghai Jiao Tong University, Shanghai, ...
Java_N层 我的JAVA业余爱好者
WCF 4.0 Multi-tier Services Development.with LINQ to Entities