写点什么

.NET Framework 4.8 预览

  • 2018-06-20
  • 本文字数:1091 字

    阅读完需:约 4 分钟

虽然人们的大多数关注点都在.NET Core 上,但经典的.NET Framework 仍然在开发中。.NET 4.8 的“早期访问”预览版表明了微软最关心的领域包括高 DIP、可访问性和并发性。

.NET 4.8 预计将于 2019 年发布。目前的预期是,它将在稍后的 Windows 10 build 1607 上运行,但这一决定并非最终结果。

Span

在介绍新版本将要包含哪些内容之前,值得一提的是,最受期待的功能 Span不会成为此版本的一部分。据微软的 Rich Lander 称,

Span 包含在.NET Core 2.1 中。我们试图在.NET Framework 4.8 中包含 Span,但由于对现有应用程序的兼容性问题而决定不这么做。你可以 System.Memory Nuget 包中访问 Span 和其他相关类型。

System.Memory: https://www.nuget.org/packages/System.Memory/

高 DPI

高 DPI 仍然是.NET 的焦点。随着显示器分辨率不断提高,应用程序需要放大以补偿文字和图像太小造成的无法辨认。在此版本中,ClickOnce 和 WinForms 将迎来高 DPI 更新。

高 DPI 问题持续存在的原因有两个。首先是高分辨率显示器的可用性问题。在支持缩放的硬件变得可用之前,微软无法有效测试 200% 和 300%的缩放比例。因此,除非显示器已经改进到一定程度,否则缩放仍然是一个问题。

另一个挑战是多监视器设置。当应用程序在不同分辨率的显示器之间移动时,必须重新计算缩放并换出图像。更糟糕的是,应用程序可能会在两个或多个具有不同分辨率的显示器上发生重叠。解决这种情况需要各种妥协,结果并不总是令人满意。

性能

除了通常的内部调整(如减少 AsyncLocal 的内存使用量或微调旋转锁)之外,此版本还修复了 SqlDataReader.ReadAsync 实际上不是异步执行的问题。

死锁和静态条件

鉴于.NET Framework 日趋成熟,我们可能会惊奇地发现,许多核心库仍存在竞态条件和死锁。以下是与并发相关问题的部分列表。

  • CLR:在并发调用新动态方法可能发生的潜在崩溃
  • CLR:调用 EventSource 的 Dispose() 时可能发生死锁
  • 网络:在锁定 NetworkChanged 监听器和用户回调时,NetworkInformation.NetworkChange 可能会发生死锁
  • WCF:在调用 Set() 之前关闭 WaitHandle,可能在 AsyncResult 中存在竞态条件
  • WCF:当中止连接导致从 CleanupChannelCollections 中抛出 ObjectDisposedException 时可能发生的竟态条件
  • 工作流程:在极端使用条件下(与 MSDTC 的大量连接),单个线程可能会无限期地持有 CriticalSection
  • 用户界面可访问性(UIA)

UIA 的关注点仍然是 WinForms 获得新的 UIA 行为,以及修复 UIA 和 WPF 中 UIA 错误。(很多非 UIA 错误也在二者中得到修复。)

有关变更的完整列表,请参阅.NET 4.8发布说明预览版本身可以通过.NET 博客获得。

查看英文原文 An early Look at .NET 4.8

2018-06-20 13:033673
用户头像

发布了 731 篇内容, 共 480.8 次阅读, 收获喜欢 2008 次。

关注

评论

发布
暂无评论
发现更多内容

深入了解NIO底层原理

陈皮的JavaLib

Java 面试 nio 8月日更

oeasy教您玩转vim - 7 - # 从头插入

o

如何从 0 到 1 设计 B 端产品?

蒋川

后台开发 产品开发 后台 后台管理系统 tob产品

Go并发之CSP并发模型、协程并发

Regan Yue

协程 CSP Go 语言 8月日更

docker编排参数详解(docker-compose.yml配置文件编写)

xcbeyond

Docker 容器 8月日更

Linux中buff-cache占用过高解决方案

入门小站

Linux

spring的循环依赖

卢卡多多

spring aop 8月日更

超全激活函数学习总结!!!

Shirakawa

神经网络 机器学习 算法 激活函数

oeasy教您玩转vim - 8 - # 追加文本

o

🏆【Java技术之旅】「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)!

码界西柚

Java 编译器 8月日更 JIT编译器

有状态流处理简介(一)

Databri_AI

flink 批处理 状态

Druid 使用 Kafka 数据加载教程——下载和启动 Kafka

HoneyMoose

Druid 加载 Kafka 数据后查询和清理数据

HoneyMoose

两个小女孩

箭上有毒

8月日更

架构训练营 模块4作业

sophiahuxh

【Flutter 专题】75 图解基本 TabBar 标签导航栏 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

JavaScript代码片段学设计模式

devpoint

设计模式 工厂模式 8月日更

Druid 使用 Kafka 将数据载入到 Kafka

HoneyMoose

oeasy教您玩转vim - 9 - # 换行插入

o

元数据管理服务分析报告

漫长的白日梦

数据湖 AWS 元数据

Druid 加载 Kafka 数据时通过控制台来提交一个 supervisor

HoneyMoose

kubernetes入门:harbor个人私有仓库傻瓜式搭建

小鲍侃java

8月日更

Vue进阶(十四):config/index.js 配置文件详解

No Silver Bullet

Vue 8月日更 配置文件

前端之数据结构(三)集合和字典

Augus

数据结构 8月日更

netty系列之:Event、Handler和Pipeline

程序那些事

Java Netty nio 程序那些事

番外2. OpenCV 中摄像头捕获与视频处理与常见问题解决方案

梦想橡皮擦

8月日更

Vue进阶(十三):MOCK

No Silver Bullet

Vue Mock 8月日更

【设计模式】桥接模式

Andy阿辉

编程 后端 设计模式 8月日更

在线邮箱地址提取工具

入门小站

工具

Druid 加载 Kafka 数据时直接提交一个 supervisor

HoneyMoose

数据探索

南湖职业技术学院机械狗

.NET Framework 4.8预览_.NET_Jonathan Allen_InfoQ精选文章