博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET架构概述
阅读量:2506 次
发布时间:2019-05-11

本文共 1116 字,大约阅读时间需要 3 分钟。

什么是架构?

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

  • 系统都有哪些层?
  • 每层的职责是什么?
  • 层与层之间的关系是什么?
角色:架构师,设计师,开发者
架构师:
  • 理解现有的技术和工具
  • 为支撑业务寻找技术方案
  • 提供一个中心视野
  • 识别技术组合的优点和弱点
设计师:
  • 某方面的技术专家
  • 分析需求和代码
  • 面向对象设计和非面向对象设计
  • 设计模式
开发者:
  • 熟悉技术和工具
  • 开发语言
架构模式
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常常不是瓶颈

转载地址:http://allgb.baihongyu.com/

你可能感兴趣的文章
RedHat7/Windows7搭建JAVA开发环境(Eclipse)
查看>>
浅析mydumper
查看>>
jQuery实现Ajax应用
查看>>
关于click和submit的笔记
查看>>
python nose单元测试生成报告
查看>>
FTP站点建立 普通电脑版&&服务器版
查看>>
js 给一段代码,给出运行后的最终结果的一些综合情况、
查看>>
webservice 详解
查看>>
js自动补全实例
查看>>
VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
查看>>
npm 安装 sass=-=-=
查看>>
WINFORM中加入WPF控件并绑定数据源实现跨线程自动更新
查看>>
C#类对象的事件定义
查看>>
各类程序员学习路线图
查看>>
HDU 5510 Bazinga KMP
查看>>
关于select @@IDENTITY的初识
查看>>
ASP.NET MVC ajax提交 防止CSRF攻击
查看>>
关于CSS伪类选择器
查看>>
适用于带文字 和图片的垂直居中方法
查看>>
Part 2 - Fundamentals(4-10)
查看>>