《ASP.Net Core技术内幕与项目实战》读书笔记_1

ch1 .NET Core入门

  • .NET介绍

    这一章主要说的是.Net Core、.Net Framework、.Net Stanard三个之间的关系。通俗来讲就是Core是新出的、能跨平台,Framwork是老版的、不能跨平台,Standard是为了在Framework、Core、Xamarin中统一库的使用而定制的规范,以便于开发出来的库可以在多个平台公用,是一个规范。在新的.NET 5以后,微软将几个平台合并了,就没有Standard这一说了。

  • 项目应该用.NET Core开发吗?

    微软已经宣布不再对.NET Freamwork增加新特性,以后只会修复缺陷。如果想体验.NET的新特性,并且使用跨平台、独立部署、模块化等特性,去考虑.NET Core。对于当前已有的Framework项目,如果运转良好,不需要升级和增加新功能,没必要用.NET Core重写。在我看来,Framework上面的特性基本已经够用,新版的很多特性都有点华而不实的感觉。

ch2 .NET Core新特性

  • 顶级语句
    支持异步, 感觉有点鸡肋,我一般是不会用的
  • 全局using指令
    应用非常多的第三方库时用到,简化重复using书写,创建一个Using.cs文件
csharp 复制代码
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Text;
global using System.Threading.Tasks;
  • using声明
    using释放资源时用到,但是感觉不如用括号版本的直接,需要猜
  • 可为空的引用类型
    搞出一些? !语法,感觉就是蛋疼,我还是选择在项目文件中增加 <Nullable>disable</Nullable>关闭这个特性
  • 记录类型
    public record Preson(string FirstName,string LastName);重写了ToString()和Equals()方法,算是C#的一个新的语法糖
  • 异步编程
    在4.5就有了,用async、await大大简化了异步编程,内部使用状态机实现不同线程的等待切换,值得一学
  • LINQ
    这里主要是对查询语法来进行说明,书中作者说在"编写复杂的查询条件时,用方法语法编写的代码会更清晰"这句话不太赞同,应该是两种语法都有其适合的场景,可以看下面两个例子:在两个List中查询姓名相同的学生,组合为一个完整的学生。
csharp 复制代码
    public record StudentAge(string Name,int Age);
    public record StudentWeight(string Name, int Weight);
    public record Student(string Name,int Age,int Weight);


    public class Test
    {
        public List<Student> QueryByFun(List<StudentAge> arr1, List<StudentWeight> arr2)
        {
            var items = arr1.SelectMany(item1 => arr2.Where(item2 => item1.Name == item2.Name)
                                           .Select(item2 => new Student(item1.Name, item1.Age, item2.Weight)));
            return items.ToList();
        }

        public List<Student> QueryByQuery(List<StudentAge> arr1, List<StudentWeight> arr2)
        {
            var items = from item1 in arr1
                        from item2 in arr2
                        where item1.Name == item2.Name
                        select new Student(item1.Name, item1.Age, item2.Weight);
            return items.ToList();
        }
    }

可以看到,查询语法看起来更简洁直观,这里只是两组数据,如果是三组、四组呢?查询语法的优越性便出现了。

相关推荐
cr7xin19 分钟前
缓存三大问题及解决方案
redis·后端·缓存
间彧1 小时前
Kubernetes的Pod与Docker Compose中的服务在概念上有何异同?
后端
间彧1 小时前
从开发到生产,如何将Docker Compose项目平滑迁移到Kubernetes?
后端
间彧2 小时前
如何结合CI/CD流水线自动选择正确的Docker Compose配置?
后端
间彧2 小时前
在多环境(开发、测试、生产)下,如何管理不同的Docker Compose配置?
后端
间彧2 小时前
如何为Docker Compose中的服务配置健康检查,确保服务真正可用?
后端
间彧2 小时前
Docker Compose和Kubernetes在编排服务时有哪些核心区别?
后端
间彧2 小时前
如何在实际项目中集成Arthas Tunnel Server实现Kubernetes集群的远程诊断?
后端
brzhang2 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
草明3 小时前
Go 的 IO 多路复用
开发语言·后端·golang