链接: https://pan.baidu.com/s/1VCNq6AXWXTYcrjjdzLR78A?pwd=cin6 提取码: cin6
出版社: 清华大学出版社
ISBN:9787302618508
版次:2
商品编码:13770912
品牌:清华大学
包装:平装
丛书名: 开源.NET生态软件开发
开本:16开
出版时间:2022-11-01
用纸:胶版纸
产品特色
编辑推荐
本书的编写方式与很多技术书籍不同,作者站在架构师的视角,以一个项目的整个生命周期
为主线,向读者展示了如何在云时代设计和实现一款软件,其内容涵盖了从软件架构设计的基本
原则、需求收集、解决方案设计,可选技术架构的选择与分析,应用软件的数据层、逻辑层和展
现层的最佳实践与框架选择一直到构建团队协作平台、持续交付流水线,以及自动化测试。如
果你是一名拥有3-5年软件开发经验的软件开发人员,希望能够成为一名架构师,这本书会对你
非常有帮助。
内容简介
软件架构是指可以简化软件开发过程并提高应用程序质量的实现架构和系统。本书在第1版的基础上进行了全面修订和扩展,面向.NET 5和C# 9,介绍了一些能够助你成为一名卓越的软件架构师所需的关键技能、知识和最佳实践。
第2版增加了对软件架构原则的额外讲述、Azure服务结构、Kubernetes和Blazor等新章节。另外,还增加了关于安全性、微服务和DevOps的讨论,以及软件开发周期的GitHub部署。
首先,介绍如何将用户需求转换为软件架构需求,并探讨功能性需求和非功能性需求之间的差异。然后,探讨如何为基础设施选择云解决方案,以及如何在基于云的环境中管理应用程序。最后,讲解软件设计模式和各种软件方法,从而帮助你解决开发过程中遇到的常见问题。
学习完本书,你将能够构建并交付可满足组织业务需求的高度可扩展的企业应用程序。
主要内容
● 使用多种技术克服现实工作中的架构挑战,并从设计层面解决问题
● 应用分层架构、面向服务架构和微服务架构
● 利用容器、Docker、Kubernetes和Blazor等工具高效管理微服务
● 快速使用Azure工具和功能提供全局解决方案
● 使用C# 9及其新功能编程和维护Azure功能
● 了解什么情况下使用测试驱动开发方法
● 编写自动化功能测试用例
● 充分利用DevOps原则实现CI/CD环境
作者简介
Gabriel Baptista是一名软件架构师,他领导技术团队跨项目使用Microsoft平台完成了多个与零售和工业相关的项目。他是Azure解决方案方面的专家,也是一位讲授软件工程、开发和架构等课程的教授,并出版了一些与计算机相关的书籍。他在知名.NET技术社区网站Microsoft Channel 9上演讲,还与他人一起创办了SMIT公司,主要开展开发解决方案方面的业务,他将DevOps理念视为满足用户需求的关键。
“致我亲爱的家人Murilo、Heitor和Denise,他们经常鼓励我。感谢我的父母Elisabeth和Virgílio,以及我的祖母、外祖母Maria和Lygia,他们一直鼓励我。特别感谢Packt团队,全体成员的辛勤劳动保证了这本书的优秀质量。”
Francesco Abbruzzese是MVC Controls Toolkit和Blazor Controls Toolkit程序库的作者。他从 ASP.NET MVC第一个版本就开始为Microsoft Web技术栈的传播和推广做贡献。他的公司Mvcct Team提供一些与Web技术相关的Web应用程序、工具和服务。他曾从事人工智能系统相关的工作(例如为金融机构实施了首批决策支持系统),后来转型去做电视游戏(如当时排名前10位的Puma Street Soccer)。
“感谢亲爱的父母,我的一切都来自他们。特别感谢Packt全体员工以及为改进本书整体代码质量做出贡献的审稿人员。”
目录
第1章软件架构的重要性 1
1.1什么是软件架构 1
1.2软件开发过程模型 4
1.2.1传统的软件开发过程模型 4
1.2.2敏捷软件开发过程模型 6
1.3收集正确信息以设计高质量软件 10
1.3.1了解需求收集过程 10
1.3.2收集准确的用户需求 10
1.3.3分析需求 11
1.3.4将需求整理成规范的文档 11
1.3.5复核用户需求文档 13
1.4设计技术 13
1.4.1设计思维 13
1.4.2设计冲刺 14
1.5收集需求阶段就要考虑的常见问题 14
1.5.1问题1:网站太慢,无法打开网页 14
1.5.2问题2:用户的需求未得到正确实现 16
1.5.3问题3:系统会在什么环境使用 17
1.6World Wild Travel Club案例简介 17
1.7本章小结 19
1.8 练习题 19
第2章非功能性需求 21
2.1技术性要求 21
2.2使用Azure和.NET 5实现可扩展性、可用性和可恢复性 21
2.2.1在Azure中创建可扩展的Web应用程序 22
2.2.2使用.NET 5创建可扩展的Web应用程序 26
2.3C#编程时需要考虑的性能问题 29
2.3.1字符串串联 29
2.3.2异常 30
2.3.3多线程 31
2.4易用性——插入数据为什么会耗费太长时间 32
2.4.1如何设计快速选择 33
2.4.2从大量的条目中进行选择 34
2.5.NET Core的互操作性 35
2.6在设计层面实现安全性 37
2.7用例——了解.NET Core项目的主要类型 38
2.8本章小结 40
2.9练习题 40
第3章使用Azure DevOps记录需求 41
3.1技术性要求 41
3.2Azure DevOps介绍 41
3.3使用Azure DevOps 组织工作 45
3.3.1Azure DevOps存储库 45
3.3.2包源 47
3.3.3测试计划 49
3.3.4管道 50
3.4使用Azure DevOps管理系统需求 50
3.4.1Epic工作项 50
3.4.2Feature工作项 51
3.4.3Product Backlog工作项/ User Story工作项 51
3.5用例——在Azure DevOps中展现WWTravelClub 51
3.6本章小结 55
3.7练习题 55
第4章 确定基于云的最佳解决方案 56
4.1技术性要求 56
4.2不同的软件部署模型 56
4.2.1IaaS和Azure服务 57
4.2.2PaaS—— 开发者的世界 59
4.2.3SaaS——只需要登录即可开始 63
4.2.4无服务器解决方案 64
4.3为什么混合应用程序在许多情况下如此有用 64
4.4用例——哪一种才是最好的
云解决方案 65
4.5本章小结 66
4.6练习题 66
第5章 在企业应用中应用微服务架构 67
5.1技术性要求 67
5.2什么是微服务 67
5.2.1微服务与模块概念的演变