Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

.NET架构概述

$
0
0

什么是架构?

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

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

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

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常常不是瓶颈

作者:cuit 发表于2013-2-18 23:43:56 原文链接
阅读:82 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>