前 言
本书涵盖了业界最新的基于云的分布式软件架构中较常见的设计模式和框架。本书基于实际工作中的真实场景来讨论应该何时以及如何使用每种模式。本书还介绍了DevOps、微服务、Kubernetes、持续集成和云计算等技术与软件开发流程,从而帮助你为客户开发并交付优质的软件解决方案。
本书将帮助你了解客户的需求,指导你解决在开发过程中可能面临的一些大难题,还列出了基于云环境管理应用程序需要了解的注意事项。通过学习本书,你可以了解不同的架构方法,例如分层架构、面向服务架构、微服务、单页应用程序和云架构,并了解如何将这些架构方法应用于具体的业务需求。
本书所有概念都将借助和基于现实工作中的实际用例进行解释。在这些用例中,软件设计原则能够帮助你创建安全和健壮的应用程序。通过学习本书,你可以使用 Azure 在远程环境或云上部署代码,还能够开发和交付高度可扩展且安全的企业级应用程序,以满足最终客户的业务需求。
值得一提的是,本书不仅介绍了软件架构师在开发C#和.NET Core解决方案时的最佳实践,还讨论了在最新趋势下开发软件产品需要管理和维护的各种环境。
与第1版相比,本书(即第2版)在代码及其说明方面进行了改进,并根据C# 9和.NET 5提供的新功能做出了调整。本书添加了最新的框架和技术(如gRPC和Blazor),并专门新增章节详细介绍了Kubernetes。
本书读者对象
本书适用于任何希望提高C#与Azure解决方案相关知识水平的软件架构师,也适用于想要成为架构师或希望使用.NET技术栈构建企业应用程序的工程师和高级开发者。学习本书之前,读者需要拥有C#和.NET的使用经验。
本书内容
第1章“软件架构的重要性”解释了软件架构的基础知识。该章帮助你以正确的心态来面对客户需求,从而选择正确的工具、模式和框架。
第2章“非功能性需求”带你进入应用程序开发的一个重要阶段,帮助你了解收集和说明应用程序必须满足的所有约束和目标,如可扩展性、可用性、可恢复性、性能、多线程、互操作性和安全性。
第3章“使用 Azure DevOps记录需求”介绍一些用于记录应用程序相关需求、bug和其他信息的技术。该章重点介绍Azure DevOps和GitHub的使用,其中的大多数概念也通用于其他平台和工具。
第4章“确定基于云的最佳解决方案” 对云和Microsoft Azure中可用的工具与资源进行了概述。在该章,你将学习如何正确地搜索工具和资源,以及如何配置它们以满足你的需求。
第5章“在企业应用中应用微服务架构”介绍微服务和Docker容器。在该章,你将了解如何基于微服务的架构利用云的各种优势,如何在云中使用微服务实现灵活性、高吞吐量和可靠性,以及如何使用容器和Docker在架构中混合不同的技术,从而让软件不依赖于特定平台。
第6章“Azure Service Fabric”介绍Microsoft特有的微服务编排器Azure Service Fabric。在该章,将实现一个简单的基于微服务的应用程序。
第7章“Azure Kubernetes服务”描述Kubernetes 在Azure上的实现。Kubernetes是微服务编排器的事实标准。在该章,你将学习如何在Kubernetes上打包和部署微服务应用程序。
第8章“在C#中与数据进行交互——Entity Framework Core”详细解释应用程序如何在对象关系映射(ORM)框架,尤其是在Entity Framework Core 5.0的帮助下与各种存储引擎进行交互。
第9章“在云上选择数据存储”介绍云和Microsoft Azure中可用的主要存储引擎。在该章,你将学习如何选择最佳存储引擎来实现所需的读取/写入的并行性,以及如何配置它们。
第10章“Azure函数应用”描述了无服务器计算模型以及如何在Azure云中使用它们。在该章,你将学习如何在需要运行某些计算时分配云资源,从而只为实际计算时间付费。
第11章“设计模式与.NET 5实现”通过.NET 5示例描述了常见的软件模式。在该章,你将了解设计模式的重要性以及使用它们的最佳实践。
第12章“不同领域的软件解决方案”描述现代领域驱动设计的软件生产方法,如何使用它来应对需要多领域知识的复杂应用程序,以及如何使用它来为基于云和基于微服务的架构提供帮助。
第13章“在C# 9中实现代码复用”描述在使用C# 9的.NET 5应用程序中最大化代码可重用性的模式和最佳实践,还讨论代码重构的重要性。
第14章“使用.NET Core实现面向服务的架构”描述面向服务的架构,它使你能够将应用程序的功能公开为Web或专用网络上的服务终节点,以便用户通过各种类型的客户端与它们进行交互。在该章,你将学习如何使用ASP.NET Core和gRPC实现面向服务的架构的服务节点,以及如何使用现有的OpenAPI程序包对它们进行文档化。
第15章“ASP.NET Core MVC”详细描述ASP.NET Core框架。在该章,你将学习如何基于模型-视图-控制器(MVC)模式实现Web应用程序,以及如何根据第12 章所描述的领域驱动设计的方法来组织它们。
第16章“Blazor WebAssembly”描述Blazor框架,该框架利用WebAssembly的强大功能在用户浏览器中运行. NET。在这一章,你将学习如何使用C#实现单页应用程序。
第17章“C# 9编码最佳实践”描述了使用C# 9开发.NET 5应用程序时的最佳实践。
第18章“单元测试用例和TDD”描述了如何测试应用程序。在该章,你将学习如何使用xUnit测试.NET Core应用程序,并了解如何在测试驱动设计的帮助下轻松开发和维护满足规范的代码。
第19章“使用工具编写更好的代码”描述了评估软件质量的指标,以及如何借助Visual Studio的所有工具来衡量它们。
第20章“DevOps”描述了DevOps软件开发和维护方法的基础知识。在该章,你将学习如何组织应用程序的持续集成/持续交付周期。该章还描述了整个部署过程是如何自动化的:首先在源代码存储库中创建新版本,然后通过各种测试和批准步骤,最后在实际生产环境中最终部署应用程序。你还将了解如何使用Azure Pipelines和GitHub Actions来自动化整个部署过程。
第21章“持续集成所带来的挑战”用持续集成场景补充了对DevOps的描述。
第22章“功能测试自动化”专门介绍功能测试的自动化,即自动验证整个应用程序的版本是否符合约定的功能规范的测试。在该章,你将学习如何使用自动化工具模拟用户操作,以及如何将这些工具与 xUnit 结合使用来编写功能测试。
如何阅读本书
● 本书涉及很多主题,可以将其作为一本解决实际工作问题的指导书。
● 本书需要使用Visual Studio 2019社区版或更高版本。
● 读者需要具备C#和.NET基础知识。
在线资源
本书的代码存储库托管在GitHub上(见参考网站0.1)。本书免费提供代码、参考网站、各章练习题的答案和各章的扩展阅读等资源,可以通过扫本书封底的二维码下载。