
资源介绍
电子书)
目标读者:适合希望使用微软技术栈构建 SaaS 应用的开发者,具备 C# 和.NET 基础知识、数据库和 Web 开发经验者更佳,但初学者也能从中学习。
主要内容概览
本书围绕使用 C# 和.NET 构建现代 SaaS 应用展开,涵盖从基础概念到实际开发、部署和维护的全流程,共分为 5 个部分 13 章。
第一部分:入门(Part 1: Getting Started)
SaaS—— 我们都需要的现代分发模式
SaaS 定义:通过互联网以浏览器形式交付,通常采用月订阅费模式的软件应用。
其他应用类型:包括桌面应用(安装在用户机器,存储文件和数据在本地)和本地 Web 应用(已多被 SaaS 替代,企业可自主控制更新,但需专人管理)。
云的概念:核心在于高可用性和近乎无限的即时可扩展性,SaaS 应用的组件多托管于云服务提供商(如 Azure、Google Cloud、AWS)。
SaaS 发展历程:从早期大型主机终端模式,到互联网成熟后,1994 年安全支付技术出现,1999 年 Salesforce 推出首个真正的 SaaS 应用,再到后来ASP.NET发展及 Gmail 等服务推动 SaaS 普及。
SaaS 流行原因:对用户而言无需安装、可在任何设备访问等;对企业而言能全球覆盖、灵活定价等。
构建 SaaS 应用的工具:数据库开发(SQL Server Express)、API 开发(C# 和.NET 7、Visual Studio Community Edition)、前端开发(Blazor)、身份验证与授权(OAuth 2.0 协议)、托管(Azure 门户)、Docker(简化开发过程)。
构建 SaaS 应用的技术:测试驱动开发(TDD)、领域驱动设计(DDD)、微服务、多租户、响应式设计、渐进式 Web 应用(PWA)等。
对开发过程的影响:需频繁且早期发布、注重自动化测试、开发者最好具备全栈知识、了解用户需求。
构建简单演示应用
技术要求:代码可在指定 GitHub 仓库获取。
环境设置:安装 Docker Desktop 和 Visual Studio Code,并配置相关扩展。
开发容器(dev container):将开发所需工具和服务封装,确保开发环境一致性,介绍了其定义、配置及使用方法。
构建示例应用:包括数据库技术(使用 Entity Framework 的 “代码优先” 方式)、API 技术(.NET Web API 框架)、用户界面技术(Blazor),并介绍了应用的启动和解决方案文件添加等。
第二部分:构建后端(Part 2: Building the Backend)
什么是多租户及其在 SaaS 应用中的重要性
多租户定义:单一应用实例服务多个客户群体(租户),共享基础设施和资源,但数据和配置隔离。
相关概念区分:客户(购买或订阅软件的组织或个人)、租户(使用共享 SaaS 应用实例的独立组织等)、用户(使用系统的个人)。
多租户替代方案:单租户,即每个租户单独部署应用栈和数据库,安全性高但成本高、扩展性差。
多租户优缺点:优点包括成本效益高、定价灵活等;缺点包括复杂性增加、安全要求高等。
多租户应用的数据存储选项:单租户一数据库、共享模式、单租户一模式、单租户一表等,并介绍了设计和安全考虑。
构建数据库和规划数据丰富的应用
数据在 SaaS 应用中的重要性:是应用的基础,其类型、访问和操作方式等影响应用设计和架构。
数据库构建:介绍了数据库类型(关系型、文档数据库等)、ACID 特性(原子性、一致性、隔离性、持久性)、Entity Framework(ORM 工具)、数据丰富应用的测试以及数据库升级(使用 Entity Framework 迁移)。
构建 RESTful APIs
RESTful APIs 定义:基于 REST 架构的 Web 接口,利用 HTTP 方法操作资源。
关键概念:幂等性、安全性、HTTP 状态码、错误处理、JSON 数据格式、API 操作与 HTTP 动词匹配(GET、POST、DELETE、PUT、PATCH)、数据传输对象(DTOs)。
API 设计与版本控制:良好的 REST 设计原则、示例 API 设计、公共 API 版本控制及示例代码、API 测试。
SaaS 应用的微服务
微服务定义及使用原因:将大型应用拆分为小型、独立服务,便于开发、部署和扩展。
松耦合与紧耦合区别:紧耦合系统组件依赖强,松耦合系统组件独立。
Docker 与微服务:Docker 可高效可靠地运行微服务,便于打包和部署。
构建微服务的最佳实践:为故障设计、注重解耦、拥抱自动化等。
微服务与 RESTful APIs 结合:REST 常作为微服务间通信协议。
常见陷阱及避免方法:如过度复杂化、缺乏团队沟通等。
实际建议与示例:介绍了微服务架构示例及实际服务(如 UserService)、API 网关等。
第三部分:构建前端(Part 3: Building the Frontend)
构建用户界面
技术栈介绍:重点介绍 Blazor,它允许使用 C# 和.NET 编写客户端 Web 应用,基于 WebAssembly。
开发环境:使用 Visual Studio Code 及相关扩展。
UX 考虑因素:了解客户,包括用户角色、用户旅程映射、可访问性、视觉吸引力设计等。
构建简单 UI:规划 UI、编写需求工单、介绍 Blazor、设置 Blazor 项目、构建 UI、连接后端等。
身份验证和授权
基本概念:身份验证(验证用户身份)和授权(确定用户可访问的资源和操作)及其协同作用。
重要性:对 SaaS 应用安全至关重要。
多租户和微服务考量:多租户中需确保数据隔离,微服务架构中需统一身份验证等。
用户、角色和权限管理:用户配置和取消配置、角色管理和分配、权限管理和细粒度访问控制。
第四部分:部署和维护应用(Part 4: Deploying and Maintaining the Application)
SaaS 应用的测试策略
测试重要性:确保应用可靠性、功能和质量。
最佳实践:测试驱动开发(TDD)。
测试技术:测试金字塔(单元测试、集成测试、端到端测试)。
测试工具和框架:.NET 应用通用测试、API 测试、Blazor 应用测试、数据库测试挑战及实际演示。
监控和日志记录
监控:关键方面包括性能指标、资源利用率等,介绍了监控工具、方法和最佳实践。
日志记录:关键方面包括事件捕获等,介绍了日志工具、方法和最佳实践。
SaaS 应用的特殊考虑:多租户、微服务等环境下的监控和日志注意事项。
频繁且早期发布
CI/CD 理解:持续集成(CI)和持续部署(CD)的概念。
环境:不同环境(开发、测试、 staging、生产)的作用。
采用 CI/CD 的好处:加快交付、提高质量等。
CI/CD 与 DevOps 关系:CI/CD 是 DevOps 的关键部分。
配置 CI/CD 流水线:源代码控制集成、构建触发器和代理、定义构建任务和阶段等。
工具概述:流行 CI/CD 工具及选择因素。
SaaS 特定考虑:容器化、升级、安全和合规。
成长的烦恼 —— 大规模运营
大规模运营挑战:性能和响应时间、可靠性和可用性、安全和合规等。
扩展规划:拥抱 DevOps 和自动化。
数据库扩展:分片、分区、缓存等技术。
API 扩展:负载均衡、版本控制等。
UI 扩展:设计最佳实践、优化静态资源等。
第五部分:结论(Part 5: Concluding Thoughts)
总结
回顾本书内容,强调持续学习、掌握 SaaS 开发技能、采用行业最佳实践等。
介绍如何应用所学知识,如应用于当前工作、自由职业或咨询、构建自己的 SaaS 产品等。
展望未来学习方向。