今年最大的.NET活动正在进行, 可以通过Channel9 https://channel9.msdn.com/Events/dotnetConf/2021 看具体的Session 。微软和社区一直在努力统一.NET技术栈。从Visual Studio 到 SQL 和 Azure ,所有功能聚集一堂,让您在桌面、网络、移动和跨平台开发梦想成为现实。在第一天的Keynotes上斯科特 ·亨特 和其他的团队成员为我们做.NET 6发布的相关说明。

首先是回顾了.NET统一平台的生态系统,这张图相比以往有大的变化, 底层完成了统一,生态工具越发完整。自2014年11月12日宣布开源后,.NET就成为了一个跨平台、面向多场景的技术。你可以在传统的Windows上安装.NET,也可以在Linux,macOS下安装.NET并进行云原生、桌面、移动应用、大数据、机器学习、游戏、物联网的开发。这次更新也围绕这些场景,为不同行业进行赋能。

过往一年.NET的生态继续增长,使用vs开发的人数增长到了540万,特别是.NET 6的开发,社区贡献者超过6900人,贡献的超过2.1W。

NET 6 带来了许多性能改进和生产力提升,而且还是一个长期支持版本,意味着你除了可以稳定地使用外,还可以得到安全和补丁更新。根据.NET官网上的资料,.NET 6在2023年11月前都会得到维护,所以大家可以安心使用 。在.NET 的每个连续版本中,.NET 在执行速度和内存使用方面都取得了一些令人印象深刻的进步。如果你一直没有跟踪, 你很可能会被. NET 框架的累积收益吹走。这一点你可以看看Techempower的测试的报告,具体参见 https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=composite

Visual Studio 2022从公开预览开始,微软就告诉⼤家这是第⼀个64位版本的Visual Studio。这意味着你不再需要受限于devenv.exe进程内4G内存的限制,开发人员能够更快打开,编辑,运⾏和调试更多大而复杂的解决⽅案。当然Visual Studio 2022是64位应⽤程序,但它是不会改变通过Visual Studio构建应⽤程序的类型和位数。也就是说你依然可以通过它去维护你之前构建的32位应⽤程序,以及基于arm架构的应⽤程序

Visual Studio 2022 让开发团队更快地构建云原生应用。结合GitHub Actions , 更好地让你的云原生应用能够基于CI/CD快速迭代,提升开发效率。当你构建初次构建云应用时,Visual Studio 2022就会帮你设置你所需要的相关配置,如Azure环境,如GitHub Actions 上所对应的设置等。让开发⼈员更专注于开发。

Visual Studio 2022 更好地让你编写.NET应⽤程序,⽆论你是传统的桌面和网页开发人员,是基于全新的Blazor构建你的Web解决⽅案,还是基于MAUI的跨平台客户端解决方案,你都可以通过Visual Studio 2022快速搭建,编写,调试和部署。当然之前闹得沸沸扬扬的热重载都会在Visual Studio 2022出现。作为.NET 开发⼈员的你不心动么?

.NET升级助手已经支持.NET 6,帮助你把传统的.NET Framework应用程序升级到.NET 6

C#语言的最新版本是10.0,有几个有趣的变化,对于爱整洁的csharper 来说,全局引用(Global using)和 文件范围的命名空间 是很好的互补。现在,您可以声明适用于整个编译单元(很可能是项目)的全局使用,并避免到每个文件顶部的去添加相同指令集。文件范围的命名空间还允许您声明适用于给定文件中所有代码的命名空间,无需单行无需更多匹配卷曲大括号,源文件中的凹痕级别也较少。

Minimal API 是构建 HTTP 服务的另一种方法,用于开发云原生应用是很爽的。在.NET 6通过 web 模板创建的项目都会使用Minimal API。这里需要说明⼀点:Minimal API不会取代大家熟悉的MVC框架。如果你的应用是希望构建API,建议使用web模板的方式去构建。但如果你需要更多与 ASP.NET页面相关的东西建议还是使用MVC模板。

微软云服务的产品已经使用.NET 5/6构建,获得了很大的收益,你访问https://cn.bing.com/version 就知道bing已经运行在.NET 6

YARP 也发布了期待的1.0, Microsoft Dynamics 365 和 Azure App Service已经在使用YARP。

从单体应用到微服务应用的开发也是.NET 6的主要场景,各类云服务已经全面支持.NET6,AKS 搭配Dapr 上运行dotnet应用是最佳选择,微软已经推出的Azure Container Apps 就是集成 了Dapr,使用Visual Studio 2022开发容器化应用程序可以直接发布到Azure Container Apps,具体参见我的另外一篇文章<集成Dapr的 Azure 容器应用>了解一下Azure Container Apps

在 ASP.NET Core 6 里面有大量的更新是关于Blazor。例如,Blazor 应用程序现在可以直接编译到 WebAssembly,以便在 IL 解释(即.NET 本地编译)版本的相同代码上来提高应用程序速度。本地编译/调试体验仍然很快,因为漫长的编译时间仅适用于包装/发布。微软也为Blazor的开发带来了一套组件库Blazor Fluent UI

还有一个非常有趣的功能,使 Blazor 可用于通过 MAUI 编写桌面应用程序。Blazor 的最大好处就是开发人员可以完全用 C# 编写 Web 应用程序,而不需要为了写前端必须切换到 Javascript。如果没有 C# 和 Javascript 之间的额外接缝,前端和后端代码之间就不需要映射层。可以在两侧使用相同的 C# 模型,这意味着需要的代码更少,因此开发应用程序所需的时间也更少。Blazor 桌面进一步扩展了这一概念,以允许此共享代码现在也可以与桌面应用程序无缝集成。

MAUI 是 Xamarin 的演进,还包括桌面平台。它允许从单个代码库针对 iOS、Android、macOS 和 Windows。MAUI 处理对本机平台 API 的抽象,因此您可以以与平台无关的方式访问设备传感器等内容。对 Xamarin 的一种印象是,它们最终得到的界面很少,而且在任何平台上都不太好看。MAUI 将如何解决这一问题还有待观察。如果你关心的是跨多个平台的开发速度和维护成本,那么 MAUI 值得仔细研究。MAUI 要在2022年的第二个季度正式发布,大会上发布了.NET MAUI Preview 10, 很多同学安装了VS2022却找不到MAUI,因为他需要 需要使用Visual Studio 2022 的Preview 通道下安装17.1 Preview,建议当前采取观望的方法,进行小的尝试以了解平台在全面采用之前的长期发展方向。

.NET Conf 2021 正在进行中,带你看一看微软带来了什么内容的更多相关文章

  1. VC++ GetModuleFileName()获取路径字符串中带波浪线~

    GetModuleFileName()获取的字符串中带波浪线,不是完整的路径显示. 原因:获取的是短路径,进行了缩写 解决:还原长路径 TCHAR }; GetLongPathName( strTem ...

  2. mysql: update字段中带select

    update字段中带select UPDATE tb_report_type A INNER JOIN (SELECT LEVEL_CODE FROM tb_report_type WHERE id ...

  3. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

  4. mysql进阶(五)数据表中带OR的多条件查询

    MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...

  5. [转]关于python中带下划线的变量和函数的意义

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  6. 【.net】在ASP.NET中,IE与Firefox下载文件名中带中文汉字的文件,文件名乱码的问题

    #问题:客户端为ie或Firefox,服务端为asp.net时,下载文件名中包含中文汉字时,下载下来的文件的文件名是乱码: #解决方案: 示例代码:下载名称中带汉字的文件: public void P ...

  7. IE浏览器url中带中文报错的问题;以及各种兼容以及浏览器问题总结

    1.解决IE浏览器url带中文报错 /* encodeURI()解决IE浏览器请求url中带中文报错的问题 */ URL = encodeURI("<%=basePath%>ve ...

  8. hibernate中带查询条件的分页

    所谓分页,从数据库中分,则是封装一个分页类.利用分页对象进行分页. 但,分页往往带查询条件. 分页类的三个重要数据:[当前页码数],[数据库中的总记录数],[每页显示的数据的条数] 原理:select ...

  9. Java中带包(创建及引用)的类的编译

    Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...

随机推荐

  1. @Valid注解的一点理解

    @Valid注解存在于spring-boot-starter-web包下,只要项目中存在该依赖就无需自行导入,也就是说该注解适用于springboot项目此注解用于表单验证,简化了判断代码用法:格式如 ...

  2. Gaussion

    # Kernel density estimation import numpy as np import matplotlib.pyplot as plt from scipy.stats impo ...

  3. noip模拟78

    考试过程:先读题,然后觉得开题顺序1 4 2 3. 首先是T1,要是不考虑重复这题很简单,但是考虑重复就比较复杂了,我打完,对拍完差不多用了两个小时,然后就是忘了算内存,结果内存爆了,\(100pts ...

  4. CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程

    CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生 ...

  5. Tomcat 源码环境搭建

    Tomcat 源码搭建 下载源码 下载地址 :https://tomcat.apache.org/download-80.cgi#8.5.35 下载之后解压缩 导入Idea 添加pom.xml文件 & ...

  6. Java(13)详解构造方法

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201600.html 博客主页:https://www.cnblogs.com/testero ...

  7. NX CAM 读取加工参数

    '取加工几何试图程序组 Function GetGemoGroup_Name(ByVal camObjectTag As NXOpen.Tag) As String Dim theGemoGroupT ...

  8. docker内服务访问宿主机服务

    目录 1. 场景 2. 解决 4. 参考 1. 场景 使用windows, wsl2 进行日常开发测试工作. 但是wsl2经常会遇到网络问题.比如今天在测试一个项目,核心功能是将postgres 的数 ...

  9. 【数据结构与算法Python版学习笔记】图——词梯问题 广度优先搜索 BFS

    词梯Word Ladder问题 要求是相邻两个单词之间差异只能是1个字母,如FOOL变SAGE: FOOL >> POOL >> POLL >> POLE > ...

  10. 欧姆龙PLC HostLink协议整理

    欧姆龙PLC HostLink协议整理 1.常用的存储器功能区 CIO: 输入继电器  272 点(17 CH) 0.00-16.15 输出继电器  272 点(17 CH) 100.00-116.1 ...