《Microsoft.NET企业级应用架构设计(第2版)》——导读

简介: 软件架构有一些前置条件(设计原则)和一个后置条件(实现一个产生预期结果的系统)。本书的第1部分是“基础”,为软件架构打下基础,关注架构师的角色、软件项目的固有机制以及提升软件品质方面,如可测试性和可读性。


f48b2def272348451be365602753e679232b0ff9

**

前言
**
我们写这本书的主要目的是为你带来一个关于软件架构的坚实、可重用以及易于访问的知识库。在过去,我们使用Microsoft Windows DNA、分布式COM、多层CRUD、SOA、DDD、CQRS和事件溯源等技术完成了很多项目。我们用过Microsoft Visual Basic 6、C#、C++、Java和JavaScript。我们目睹了技术解决方案不断改变,对于这些方案的看法也进化了。

最终,我们和Fred Brooks得出的结论相同。我们不穿白袍,我们不是医生,我们不写处方。我们在这里的目的是汇聚各方观点,加入我们对这些观点的见解和评论,如实地总结这些事实和看法。

当开发者和架构师被要求立刻采取正确的方案时,我们提供一个知识快照——现成的软件架构师心得,可以用作进一步研究的起点,也可以用来形成你自己的判断。如果软件架构是一个定理,(我们希望)这本书将会提供一些必要的引理。
软件架构有一些前置条件(设计原则)和一个后置条件(实现一个产生预期结果的系统)。本书的第1部分是“基础”,为软件架构打下基础,关注架构师的角色、软件项目的固有机制以及提升软件品质方面,如可测试性和可读性。

第2部分是“设计架构”,关注构成典型企业系统的最上面两层:表现层和业务层。我们把标准的第3层放在后面:数据访问层。我们推行一个比较新的系统设计方案,叫作用户体验优先。它是一个基于任务的方法学,从达成共识的模型和屏幕引出命令和领域事件。就基于任务的设计理念而言,领域模型的角色不再是中心,数据访问层也只是基础设施的一部分了,而且不一定基于标准的关系型表。第2部分最给力的一章是第5章“发现领域架构”,我们推荐所有人阅读。简而言之,这章的观点是只有深刻理解领域才能发现合适架构。更重要的是,结果架构不一定是适用于整个应用程序的单个顶层架构。当识别出子领域时,你可以把它们建模成子应用程序,给予每个最有效的架构。听起来可能有点奇怪,但这就是领域驱动设计(DDD)的要旨。

第3部分是“支撑架构”,涵盖3个可以用来构建各种子领域的支撑架构。每个架构都有两章——介绍和实现。我们考虑的第一个支撑架构是领域模型。接着,我们会讲命令/查询责任分离(CQRS)和事件溯源。

最后,第4部分“基础设施”,只包含一章,它处理基础设施和持久层。有趣的是,这章不仅仅讲到SQL、Entity Framework和关系型数据库,还着重讲了多样化和持久化、NoSQL数据存储和用来隐藏存储细节的服务。

那么,这本书到底是关于什么的?

这是关于在.NET平台上更好地满足你的客户需要知道和做到什么的一本书。我们给出的模式、原则和技术一般来说都是有效的,并非针对复杂的行业系统。一个好的软件架构可以帮助控制项目的复杂性。控制复杂性和支持可维护性是我们应对技术领域的墨菲定理的最好策略:“没有什么能按时、按预算构建出来。”为了做到这点,只有一件事情是不允许失败的:(深刻)理解业务领域。

目录

第1部分 基础
**[第1章 今天的架构师和架构
1.1 软件架构到底是什么](https://yq.aliyun.com/articles/92703)**
1.1.1 把架构原则应用到软件中
1.1.2 确认需求
1.1.3 什么是架构,什么不是
1.1.4 架构流程
1.2 谁是架构师
1.2.1 架构师的职责
1.2.2 架构师的角色
1.2.3 关于架构师的常见误解
1.3 总结
1.4 笑到最后
**[第2章 为成功而设计
2.1 “大泥球”](https://yq.aliyun.com/articles/92729)**
2.1.1 “大泥球”的成因
2.1.2 “大泥球”的征兆
2.1.3 使用指标检测BBM
2.2 软件项目的机制
2.2.1 组织文化
2.2.2 帮助团队更好地写代码
2.3 走出混乱
2.3.1 有一种奇怪的东西叫作“遗留代码”
2.3.2 在3招之内将杀(checkmate)
2.3.3 决定是否添加人手
2.4 总结
2.5 笑到最后

相关文章
|
11月前
|
开发框架 缓存 Cloud Native
微软发布 .NET 云原生开发框架—— .NET Aspire
微软于 2023-11-14日 发布了 .NET 8 的正式版。伴随着这个重要 .NET 版本的发布,微软也发布了一个全新的 .NET云原生开发框架 —— .NET Aspire,它提供了如下 3 个方面的能力,来帮助我们使用 .NET 开发分层、云就绪的可观测、本地与生产环境一致的分布式云原生应用程序。
599 0
|
关系型数据库 虚拟化 C#
|
移动开发 架构师 .NET
《Microsoft.NET企业级应用架构设计(第2版)》——第1章 今天的架构师和架构 1.1软件架构到底是什么
在计算机的最初年代,硬件成本远远大于软件成本。数十年之后,我们发现情况有了根本的变化。整个工业有了显著的进步,而硬件成本也急剧下降。另一方面,软件成本却大幅上升,这主要是因为开发自定义企业软件的复杂性提升了。
2765 0
|
Web App开发 缓存 负载均衡
一起谈.NET技术,大型高性能ASP.NET系统架构设计
  大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。    大型动态应用系统又可分为几个子系统: Web前端系统 负载均衡系统 数据库集群系统 缓存系统 分布式存储系统 分布式服...
1633 0
|
Web App开发 JavaScript 安全
一起谈.NET技术,初识Silverlight 4及其架构
  简介   Silverlight 4是今年早些时候发布的。这项技术为我们带来了许多革新。它不仅是为用户带来了丰富的交互式的互联网和多媒体内容,还为我们提供了强大的轻量级的平台。我们可以在此平台上开发可移植的,跨平台的,基于网络的应用程序,并且可以从不同的源头集成服务和数据。
1173 0
|
Web App开发 缓存 负载均衡
大型高性能ASP.NET“.NET研究”系统架构设计
  大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。    大型动态应用系统又可分为几个子系统: Web前端系统 负载均衡系统 数据库集群系统 缓存系统 分布式存储系统 分布式服...
1920 0
|
Web App开发 缓存 监控
一起谈.NET技术,实战ASP.NET大规模网站架构:Web加速器
  大规模网站瓶颈之一就是性能问题,如何让你的网站飞速运转起来,一直是架构师和开发人员苦于思考的问题。文章将针对基于ASP.NET开发的网站交互性非实时部分进行讨论。   一、WEB加速通常有如下方案:   1、基于ASP.NET技术的页面缓存   基于ASP.NET技术的页面缓存,通常有如下两种应用方式:   一、基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口)。
1162 0
|
机器学习/深度学习 JavaScript C#
一起谈.NET技术,DotNetNuke 5 C#版本解读之--架构介绍
整体上DNN5和其它比较大的企业级应用系统一样分为web服务器和数据库服务器。Web服务器包括表现层,商业逻辑层和数据访问层,而数据库服务器主要是数据层。如下图:          首先给大家介绍下DNN的表现层,上图中的Presentation部分:       表现层主要包含如下几个部分:       1.web forms : 整个DNN主要的就是哪个default.aspx页面来展示内容。
1282 0
|
SQL .NET 数据库
一起谈.NET技术,.NET 分布式架构开发实战之三 数据访问深入一点的思考
  前言:   首先,感谢朋友们对文章的支持,感谢大家,希望本系列的文章能够真正的对大家起到一点帮助的作用。再次感谢大家。   大家也许想问,什么时候出代码,代码一定会出的,我不想一上来就开始抛出一大堆的代码,然后讲解,架构的设计在思考的过程,思考到了,代码也就水到渠成了。
1018 0
|
程序员
一起谈.NET技术,.NET企业级架构解决方案:业务层
  引言   Martin Fowler说过:“任何人都可以写出计算机才能理解的代码,只有写出人能理解的代码的程序员才是好程序员。” 每一个复杂的软件都应该按层来组织。每一层代表系统的一个逻辑部件。尤其是,业务层的模块包括了所有使得系统运行的时候和其它层交互所需要的功能算法和计算,其他层包括数据访问层DAL和表现层。
866 0
下一篇
无影云桌面