特斯拉为何使用.NET Core 技术框架?
知乎上有一个帖子非常热闹:特斯拉为何使用.NET Core 技术框架?为何不用 Java/Go 等?
可能有很多人对.NET 的印象还停留在 2016 年之前,认为“.NET 是闭源的”“.NET 就只能用 Windows”,但其实.NET 已经开源并实现跨平台好多年了!
Linus Torvalds 也因 Microsoft 的改变而公开宣称接纳 Microsoft!
有特斯拉的内部员工也针对这个问题给出了回复。
其实,.NET 在国外非常流行,Facebook 有很多.NET 岗位,全球大部分车厂也有用.NET,比如 BMW、德国大众、Daimler AG 等。在很多行业,.NET 一直是领导地位。
平心而论,.NET Core 的优势不容小觑!
跨平台: 可以在 Windows、macOS 和 Linux 操作系统上运行。
跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
命令行工具: 包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
部署灵活:可以包含在应用或已安装的并行(用户或系统范围安装)中,可搭配 Docker 容器使用。
兼容性:.NET Core 通过 .NET Standard 与 .NET Framework、Xamarin 和 Mono 兼容。
开放源代码: .NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。.NET Core 是一个 .NET Foundation 项目。
由 Microsoft 支持: .NET Core 由 Microsoft 依据 .NET Core 支持提供支持。
相信,国内.NET 的春风也许会迟到,但绝不会缺席!
目前,还没有哪个技术平台像 .NET Core 这样提供了如此完备的技术栈,桌面、Web、云、移动、游戏、IoT 和 AI 相关开发都可以在这个平台上完成。
在列出的这七大领域中,面向应用的 Web 开发依然占据了市场的半壁江山,为其提供支撑的 ASP.NET Core 的重要性就毋庸置疑了。
Web 应用可以采用不同的开发模式,如 MVC、gRPC、Actor Model、GraphQL、Pub/Sub 等,它们都有对应的开发框架予以支持。
虽然编程模式千差万别,开发框架也琳琅满目,但是底层都需要解决一个核心问题,那就是请求的接收、处理和响应,而这个基础功能就是在 ASP.NET Core 中实现的。
从这个角度来讲,ASP.NET Core 是介于 .NET 基础框架和各种 Web 开发框架之间的中间框架。
在前 .NET 时代( .NET Core 诞生之前),计算机图书市场存在一系列介绍 ASP.NET Web Forms、ASP.NET MVC、ASP.NET Web API 的图书。但是找不到一本专门介绍 ASP.NET 自身框架的图书。
上述这些 Web 开发框架都是建立在 ASP.NET 框架之上的,底层的 ASP.NET 框架才是根基所在。
很多资深的 ASP.NET 开发人员可能都对 ASP.NET 框架都没有进行更深入的了解。
领域旗帜性专家蒋金楠老师在出版了《ASP.NET MVC 5 框架揭秘》之后,紧跟版本再续神作,基于.NET 开发 20 年的经验,终于为大家带来了《ASP.NET Core 6 框架揭秘(上下册)》两册千页著作,助你挑战高薪,无惧裁员!
内容简介
本书只关注 ASP.NET Core 框架最核心的部分,即由一个服务器和若干中间件构建的管道,除了“第 1 章 编程体验”,其他章节基本上都不会涉及上层的编程框架。
本书共分为以下 5 篇内容。
● 初始编程
第 1 章提供了 20 个极简的 Hello World 应用程序,带领读者感受一下 ASP.NET Core 的编程体验。这些演示实例涉及基于命令行的应用创建和 Minimal API 的编程模式,还涉及多种中间件的定义及配置选项和诊断日志的应用。第 1 章还演示了如何利用路由、MVC 和 gRPC 开发 Web 应用和 API,4 种针对 Dapr 的应用开发模型也包含在这 20 个演示实例中。
● 基础框架
ASP.NET Core 建立在一系列基础框架之上,这些独立的框架在日常的应用开发中同样被广泛地使用。第 2 篇提供的若干章节对这些基础框架进行了系统而详细的介绍,其中包括“第 2~3 章 依赖注入”“第 4 章 文件系统”“第 5~6 章 配置选项”“第 7~9 章 诊断日志”“第 10 章 对象池”“第 11 章 缓存”“第 12 章 HTTP 调用”“第 13 章 数据保护”。
● 承载系统
ASP.NET Core 应用作为一个后台服务寄宿于服务承载系统中,“第 14 章 服务承载”主要对该承载系统进行了详细介绍。ASP.NET Core 应用的承载是本书最核心的部分,“第 15~17 章 应用承载(上、中、下)”不仅对 ASP.NET Core 请求处理管道的构建和应用承载的内部流程进行了详细介绍,还对 Minimal API 的编程模型和底层的实现原理进行了详细介绍。
● 服务器概述
本书所有内容都围绕着 ASP.NET Core 请求处理管道,该管道由一个服务器和若干中间件构建。第 18 章主要对服务器的系统进行了介绍,不仅会详细介绍 Kestrel 服务器的使用和实现原理,还会介绍基于 IIS 的两种部署模式和 HTTP.SYS 的使用,以及如何自定义服务器类型。
● 中间件
服务器接收的请求会分发给中间件管道进行处理。本篇对大部分中间件的使用和实现原理进行了介绍,其中包括“第 19 章 静态文件”“第 20 章 路由”“第 21 章 异常处理”“第 22 章 响应缓存”“第 23 章 会话”“第 24 章 HTTPS 策略”“第 25 章 重定向”“第 26 章 限流”“第 27 章 认证”“第 28 章 授权”“第 29 章 跨域资源共享”“第 30 章 健康检查”。
写作特点
本书的写作风格可以概括为“体验先行、设计贯通、应用扩展”12 个字。
大部分章节开头都会提供一些简单的演示实例,旨在让读者对 ASP.NET Core 的基本功能特性和编程模式有一个大致的了解。
在此之后,会提供背后的故事,即编程模型的设计和原理。将开头实例和架构设计融会贯通之后,读者基本上能够将学到的知识正确地应用到事件中,对应章节对此会提供一些最佳实践。
秉承“对扩展开放,对改变关闭”的“开闭原则”,每个功能模块都提供了相应的扩展点,能够精准地找到并运用适合的扩展来解决真实项目开发中的问题才是终极的目标,对应章节会介绍可用的扩展点,并提供一些解决方案和演示实例。
本书综合运用“文字”“图表”“编程”这 3 种不同的“语言”来介绍每个技术主题。
一图胜千言,每章都精心设计了很多图表,这些具象的图表能够帮助读者理解技术模块的总体设计、执行流程和交互方式。
除了利用编程语言描述应用编程接口(API),本书还提供了 200 多个实例,这些实例具有不同的作用,有的是为了演示某个实用的编程技巧或者最佳实践,有的是为了强调一些容易忽视但很重要的技术细节,有的是为了探测和证明所述的论点。
本书在很多地方展示了一些类型的代码,但是绝大部分代码和真正的源代码是有差异的,两者的差异有以下几个原因:
第一,源代码在版本更替中一直在发生改变;
第二,由于篇幅的限制,删除了一些细枝末节的代码,如针对参数的验证、诊断日志的输出和异常处理等;
第三,很多源代码其实都具有优化的空间。本书提供的代码片段旨在揭示设计原理和实现逻辑,不是为了向读者展示源代码。
目标读者
虽然本书关注的是 ASP.NET Core 自身框架提供的请求处理管道,而不是具体某个应用编程框架,但是本书适合大多数 .NET 技术从业人员阅读。
任何好的设计都应该是简单的,唯有简单的设计才能应对后续版本更替中出现的复杂问题。
ASP.NET Core 框架就是好的设计,因为自正式推出的那一刻起,该框架的总体设计基本上没有发生改变。
既然设计是简单的,对大部分从业人员来说,对框架的学习也就没有什么门槛。
本书采用渐进式的写作方式,对于完全没有接触过 ASP.NET Core 的开发人员也可以通过学习本书内容深入、系统地掌握这门技术。
由于本书提供的大部分内容都是独一无二的,即使是资深的 .NET 开发人员,也能在书中找到很多不甚了解的盲点。
扫码了解本书详情
评论