今年最大的.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. django 如何在HMTL中使用媒体media_url

    django 如何在HMTL中使用媒体media_url中指定的路径 第一种: 一. setting.py里,一般图片或者文件上传路径都是是以下设置, MEDIA_URL = '/media/'    ...

  2. centos7配置bind重启后错误解决

    最近研究centos7安装bind做DNS服务器,都配置好了后,重启后用systemctl status named 发现好多诸如以下错误:error (network unreachable) re ...

  3. String(char[] value, boolean share) {

    记录一下今天被蠢到 1. 在观察StringBuffer类的toString方法时,发现了个没见过的方法 return new String(toStringCache, true); @Overri ...

  4. NOIP 模拟八 考试总结

    T1星际旅行 给出n个点,m条边,求满足一条路径使得m-2条边经过2次,2条边经过1次的方案数.并且题目中给出有自环. 看到题面我以为是个计数DP,可能是计数题做多了吧哈哈.其实仔细朝图的方向想一想就 ...

  5. Go的Select

    Go 的通道有两种操作方式,一种是带 range 子句的 for 语句,另一种则是 select 语句,它是专门为了操作通道而存在的.这里主要介绍 select 的用法. 一.select的语法 se ...

  6. CefSharp请求资源拦截及自定义处理

    CefSharp请求资源拦截及自定义处理 前言 在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理. 什么是资源 ...

  7. Go语言核心36讲(Go语言基础知识三)--学习笔记

    03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...

  8. 题解 「CTSC2018暴力写挂」

    题目传送门 题目大意 给出两个大小为 \(n\) 的树,求出: \[\max\{\text{depth}(x)+\text{depth}(y)-\text{depth}(\text{LCA}(x,y) ...

  9. luogu3888 GDOI2014拯救莫里斯 (状压dp)

    题目描述 莫莉斯·乔是圣域里一个叱咤风云的人物,他凭借着自身超强的经济头脑,牢牢控制了圣域的石油市场. 圣域的地图可以看成是一个n*m的矩阵.每个整数坐标点(x , y)表示一座城市\(( 1\le ...

  10. 秒级接入、效果满分的文档预览方案——COS文档预览

    一.导语 ​ 说起 Microsoft Office 办公三件套,想必大家都不会陌生,社畜日常的工作或者生活中,多多少少遇到过这种情况: 本地创建的文档换一台电脑打开,就出现了字体丢失.排版混乱的情况 ...