前         言

我在2018年成立了52ABP,开始尝试基于ABP做基础设施,搭建的应用框架起名为52ABP。我也接触到了各类人群,很多初学者、中高级开发工程师,甚至是跨行业的人都找到我,有让我教他们编程的,有让我开培训班的,有找我做项目的。目的各有不同,但是相似点就是,我们喜欢.NET、喜欢C#。但是目前市场上,相关的优秀学习视频和图书较少,想系统地学习比较困难。

2019年3月辞职后,同年5月一次偶然的机会,我有幸遇到了人民邮电出版社的陈聪聪编辑。她问我是否有兴趣出版一本ASP.NET Core的基础图书,我觉得这是一个机会,就答应了。其实当时我已经写了一部分内容,是配合基础视频的参考文档,但是距离一本图书还差得远。半年过去了,我也才完成了一小半,说来真是惭愧。

这本书原本的计划是描述EF Core中的知识点,带领读者完整地做一个管理系统。但是个人觉得这样写与市场上的其他图书没有什么区别,它就是一本概述知识点的图书,无非多了一个较为完整的功能系统而已。对于我而言这是有落差的。有一天和朋友吃饭,他建议把ABP中那些有效的、目前市场上流行的设计理念整合进图书,不用讲解得太明白,只是告诉读者如何用以及这么用的好处即可。

这个建议我是认同的,但是也有点担心,这样做之后,这本书会变得“不伦不类”,怕在后面涉及思想的时候会弄巧成拙。不过,我也相信人生的每一个阶段都需要不停地学习,已经30岁的我,或许确实没有那些“互联网大厂”架构师华丽的履历或头衔,但是我一直在学习,并且从未停止。学习的乐趣让我充实,而这些学习的过程也让我收获颇多。随着读的书越来越多,我也经常跟许多.NET技术社区或其他架构社区的朋友一起交流,这也让我认识到,自己已经初步具备把自己学到的一些知识传授出来的能力了。虽然我已尽力提高本书的质量,但若有考虑不周或描述不妥当的地方,还望各位读者海涵。

本书只是一个开始,如果读者在学习知识点的过程中遇到疑问,可以关注我的微信公众号角落的白板报,并给我留言,我会尽量为读者提供思路或者解决方案。当然,随着本书的出版,我也会考虑建立相关的社区,我相信有了社区的帮助,更多的人将有所收获。

本书适合有一定的C# 编程经验和HTML、 JavaScript基础,并对ASP.NET Core感兴趣的开发者,包括以下对象。

● .NET工程师。

● 计算机相关专业的 .NET或网页设计方向的在校大学生。

● 从其他面向对象语言转向学习 .NET编程的开发者。

本书分为以下5个部分。

● 第一部分(第1章~第9章)介绍ASP.NET Core的基础知识,比如中间件、环境变量和配置信息等,简单讲解完整的ASP.NET Core的项目结构。

● 第二部分(第10章~第20章)介绍并运用MVC模型及路由中间件,结合ASP.NET Core提供的TagHelper等新特性,完成对学生信息的增删改查、图片上传;介绍简单的仓储模式与依赖注入的关系,为搭建管理系统做好基础准备。

● 第三部分(第21章~第29章) 通过搭建一个基础管理系统,分析及处理实际业务场景中的常见问题,比如身份验证和授权、客户端及服务端验证、配置信息、 EF Core数据访问、数据分页和统一异常处理等。

● 第四部分(第30章~第38章) 介绍架构的作用以及意义,根据架构的思想应用设计模式,结合C#泛型特性优化仓储模式,建立多层体系架构,通过并发、 LINQ及活用Entity Framework Core中的常用功能完成一个类似领域驱动设计的项目。

● 第五部分(第39章~第42章)介绍简单的Web API入门、部署ASP.NET Core项目以及从ASP .NET Core 2.2到ASP.NET Core 3.1的版本升级过程。

要完成本书中的练习,读者需要配备以下的硬件和软件。

● Windows 7或更高版本。

● macOS 10.12或更高版本。

● Linux,比如CentOS、 Ubuntu等。

● Visual Studio 2019或更高版本(如企业版、专业版和社区版)。

● Visual Studio Code。

我使用的操作系统为Windows 10,开发工具是Visual Studio 2019专业版。同时计算机需要联网,用于下载软件及项目所需的数据库文件。

梁桐铭,微软最有价值专家(Microsoft MVP)、 Microsoft AI Open Hack教练、Microsoft Tech Summit 2018讲师和52ABP开源框架作者。我从2015年开始在国内推广ASP.NET Boilerplate Project开源框架,拥有多年的项目开发与技术团队管理经验,熟悉互联网及电商行业,负责过多个大型项目的开发和管理,擅长应用系统项目规划及企业解决方案的设计。读者可以通过关注微信公众号(角落的白板报)联系我。

创作本书的过程充满了曲折,如果没有其他人的帮助,也就不会有本书的存在了。

感谢参与本书审校的李志强、邹锭、朱国栋、王冠,他们参与审校没有获取报酬,对待本书就像对待自己的孩子一样,提出了详细的反馈和经过深思熟虑的见解,正因为有他们的反复阅读、勘误,以及给予的建议,才让本书的内容更加完善,谢谢他们。

感谢本书的编辑陈聪聪,没有她的帮助,本书肯定是无法完成的,再多的言语也无法表达我的感激之情。

感谢微软最有价值专家项目组Christina Liang对我的支持。

最后,感谢家人对我的支持。

虽然我尽量夯实本书的内容,但是由于自身水平有限,书中难免出现不太准确的地方,恳请读者批评指正。读者可提出宝贵意见,让我们在学习ASP.NET Core的道路上共同进步。

我希望本书能够启发读者,给读者的工作带来帮助!如果需要额外的支持,可以给作者发送邮件,邮件地址是ltm@ddxc.org。

在本书的写作过程中,我得到了很多人的鼓励和支持,在此表示感谢。除此之外,在写作和编码的过程中,我还参考了很多图书和资料,在此也向其作者表示感谢。

本书中的网址仅供学习使用。

梁桐铭