.NET架构概述

什么是架构?

架构是系统的结构轮廓。引出问题:

  • 系统都有哪些层?
  • 每层的职责是什么?
  • 层与层之间的关系是什么?
角色:架构师,设计师,开发者

架构师:
  • 理解现有的技术和工具
  • 为支撑业务寻找技术方案
  • 提供一个中心视野
  • 识别技术组合的优点和弱点
设计师:
  • 某方面的技术专家
  • 分析需求和代码
  • 面向对象设计和非面向对象设计
  • 设计模式
开发者:
  • 熟悉技术和工具
  • 开发语言
架构模式

tier是物理分层,layer是逻辑分层。
一个系统可以划分为很多tier。
  • 单tier,远程桌面
  • 两tier,客户端,数据库
  • 三tier,web,应用,数据库
  • 四tier,web,缓存,应用,数据库
Layer
  • 按功能将应用程序分层,如逻辑上的组件
  • 层数不限,不强制用多层,刻意多层只会降低效率
  • Layer在tier里,每tier有一或多layer
如何分Layer
  • 利用抽象,将通用的功能抽象出来,将需要改变的独立出来。
  • 严格和松散分Layer层,松散的分层很难交换两个Layer,紧密耦合
设计Layer
  • 耦合,紧耦合意味着改变一layer会影响到其依赖layer,反之则反之
  • 内聚,高内聚意味着一个layer把一件事情做好。小而专注的layer容易被集成到复杂的组件中。低内聚则意味着一个layer做很多事情。
Google的Layer
  1. Sawzall 是用来处理数据的脚本语言
  2. MapReduce是一套简单的风格数据处理API
  3. BigTable提供灵活的分布式存储API
  4. GFS是一个分布式文件系统
Tier与Layer的映射关系

逻辑分层:

物理分层:


分布式系统的挑战
  • 潜在因素,远程通信速度慢,序列化开销大
  • 局部故障,远程组件可能随时出现故障,必须能优雅地恢复
  • 并发,高效地处理多个连接,异步调用
通信方式
  • 同步,Remoting,WebService
  • 异步,MSMQ,同步并发
  • 协议,TCP,HTTP
  • 序列化格式,XML(可互操作,速度慢),二进制(不可互操作,速度快)
扩展性
  • 灵活性架构,如果负载(包括web请求,数据量,大量计算)增加,可迅速加入新的资源(硬盘,CPU,内存,带宽)
  • 设计挑战,架构模式,程序设计,成本,工期
稳定性
  • 任何环节都可能出故障,软件,硬件,网络,数据中心
  • 发现问题,容错,抢救,恢复
灵活性和重用性
  • 软件需求改变
  • 设计模式升级
  • 可重用的开发(类,组件,服务)
  • Layer的重用(抽象API,扩展性)
安全性
  • 控制对服务的访问(身份认证,代码访问的安全)
  • 保护信息(加密,读写权限)
性能
  • 80、20原则,80%的时间解决20%的代码上,用工具发现瓶颈
  • 好算法带来高性能
  • IO瓶颈,网络瓶颈,CPU常常不是瓶颈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值