百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

.NET 5 的重大改变:消失的历史技术

yuyutoo 2024-10-12 00:42 7 浏览 0 评论

在本文中,我们将回顾一些未能进入.NET Core 的历史性.NET 技术。有趣之处在于,这些技术的 API 被复制过来了,这暗示着微软当时在考虑将来在.NET Core 中对它们进行实现。

全局程序集缓存

全局程序集缓存(GAC)背后的理论是,所有.NET 库都可以存储在单个集中的位置。在这种方式下,它与COM库类似。但与 COM 不同的是,它可以存储每个库的多个版本。通过这种方式,微软希望可以避免困扰 90 年代应用程序的“DLL 地狱”情景。

但是,版本问题仍然存在。此外,获得代码签名证书的需要以及 Windows Vista 带来的安全性的增加使得 GAC 成为一项令人讨厌的技术。到.NET 4.5 发布时,几乎没有应用程序将 GAC 用于非微软库。主要的例外是商业库,但即使是这些库也已经转向了对 NuGet 更友好的交付模型。

因此,也就不奇怪,微软在.NET Core 中从根本上改变了他们的哲学。在新模型中,所有库依赖项都与应用程序一起部署,从而使得应用程序可以与其他.NET Core 应用程序隔离开来。因此,.NET Core 中没有 GAC 的概念。

尽管如此,GAC API 在.NET Core 中仍然存在。它们所做的事情不多,例如,指示程序集是否在 GAC 中的属性被硬编码为返回 false。

为了进一步明确意图,所有的 GAC API 现在都被标记为已过时,微软正考虑在未来的版本中删除它们。

Remoting

.NET Remoting是受DCOM和Java Remoting(Java RMI)的启发。这三种方法的基本思想都是一个应用程序可以使用代理对象来操作在另一个应用程序中运行的真实对象。虽然它在技术上可以工作,但.NET Remoting 从来就没有流行过,因为要正确地使用它很难,而且人们一般认为它很脆弱。

考虑到这一点,.NET Core 从未实现过.NET Remoting API。就像 GAC API 一样,它只有不可操作的占位符。因此,它们也被标记为已过时,而最终目的是将其删除。

代码访问安全

继续这个主题,代码访问安全(CAS)是另一种 API 被复制到.NET Core 中,但被标记为已过时的.NET Framework 技术。

代码访问安全创建于 Docker 等隔离容器之前。在.NET Framework 时代,多个应用程序会托管在单个 Internet Information Server(IIS)实例中。理论上,每个应用程序都将被隔离到一个单独的应用程序域中,但要打破这种隔离并干扰在 IIS 中运行的其他应用程序并不难。

代码访问安全的创建就是为了限制这种可能的损害。其基本思想是,危险的 API 会被加上表示风险的属性。IIS 之类的主机可以配置为运行具有不同“信任”级别的应用程序,从理论上讲,是将它们放入一个沙箱中。

CAS 的另一个用途是用于浏览器托管的应用程序。早在 Silverlight 出现之前,就已经可以在 Internet Explorer 中运行 Windows 窗体应用程序了。应用程序的信任级别部分取决于它是从哪里加载的,内部站点会获得更高的权限。

但是和许多早期的.NET 技术一样,要正确地实现 CAS 很困难。恶意应用程序有许多方法可以绕过 CAS 限制,而良性应用程序却常常为这些限制所限。结果,浏览器托管的应用程序很快就把它禁用了,而 IIS 在很大程度上忽略了 CAS 信任级别。

Thread.Abort

这可能会令你感到惊讶。Thread.Abort在.NET Core 中从未实现过。虽然它总是被认为有危险,但总也不可避免。在 ASP.NET 中,像请求超时或客户端断开连接这样简单的事情就会触发一个Thread.Abort调用。如果你没有认真地编写代码进行处理,这可能会导致资源泄漏,比如获取的锁或打开的数据库事务。

到 ASP.NET Core 被创建时,CancellationToken已成为一个安全且被广泛接受的Thread.Abort替代者,因此就不需要在.NET Core 的第一个版本中实现它了。尽管.NET Core 已经将其功能扩展到 Web 站点之外,但其他主要的应用程序框架都不需要Thread.Abort,因此它会继续抛出PlatformNotSupportedException

在.NET 5 中,该方法终被标记为已过时。

原文链接:

.NET 5 Breaking Changes: Historic Technologies

延伸阅读:

微软发布.NET 5.0 RC1,未来将只有一个.NET-InfoQ

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

相关推荐

Python操作Word文档神器:python-docx库从入门到精通

Python操作Word文档神器:python-docx库从入门到精通动动小手,点击关注...

Python 函数调用从入门到精通:超详细定义解析与实战指南 附案例

一、函数基础:定义与调用的核心逻辑定义:函数是将重复或相关的代码块封装成可复用的单元,通过函数名和参数实现特定功能。它是Python模块化编程的基础,能提高代码复用性和可读性。定义语法:...

等这么长时间Python背记手册终于来了,入门到精通(视频400集)

本文毫无套路!真诚分享!前言:无论是学习任何一门语言,基础知识一定要扎实,基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路,你的进步速度也会快很多,无论我们学习的目的是什么,...

图解Python编程:从入门到精通系列教程(附全套速查表)

引言本系列教程展开讲解Python编程语言,Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。Python生态丰富,库(模块)极其丰富,这使...

Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够

本书是Python经典实例解析,采用基于实例的方法编写,每个实例都会解决具体的问题和难题。主要内容有:数字、字符串和元组,语句与语法,函数定义,列表、集、字典,用户输入和输出等内置数据结构,类和对象,...

Python函数全解析:从入门到精通,一文搞定!

1.为什么要用函数?函数的作用:封装代码,提高复用性,减少重复,提高可读性。...

Python中的单例模式:从入门到精通

Python中的单例模式:从入门到精通引言单例模式是一种常用的软件设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁创建和销毁的对象,比如日志对象、线程池、缓存等...

【Python王者归来】手把手教你,Python从入门到精通!

用800个程序实例、5万行代码手把手教你,Python从入门到精通!...

Python从零基础入门到精通:一个月就够了

如果想从零基础到入门,能够全职学习(自学),那么一个月足够了。...

Python 从入门到精通:一个月就够了

要知道,一个月是一段很长的时间。如果每天坚持用6-7小时来做一件事,你会有意想不到的收获。作为初学者,第一个月的月目标应该是这样的:熟悉基本概念(变量,条件,列表,循环,函数)练习超过30个编...

Python零基础到精通,这8个入门技巧让你少走弯路,7天速通编程!

Python学习就像玩积木,从最基础的块开始,一步步搭建出复杂的作品。我记得刚开始学Python时也是一头雾水,走了不少弯路。现在回头看,其实掌握几个核心概念,就能快速入门这门编程语言。来聊聊怎么用最...

神仙级python入门教程(非常详细),从0到精通,从看这篇开始!

python入门虽然简单,很多新手依然卡在基础安装阶段,大部分教程对一些基础内容都是一带而过,好多新手朋友,对一些基础知识常常一知半解,需要在网上查询很久。...

Python类从入门到精通,一篇就够!

一、Python类是什么?大家在生活中应该都见过汽车吧,每一辆真实存在、能在路上跑的汽车,都可以看作是一个“对象”。那这些汽车是怎么生产出来的呢?其实,在生产之前,汽车公司都会先设计一个详细的蓝图...

学习Python从入门到精通:30天足够了,这才是python基础的天花板

当年2w买的全套python教程用不着了,现在送给有缘人,不要钱,一个月教你从入门到精通1、本套视频共487集,本套视频共分4季...

30天Python 入门到精通(3天学会python)

以下是一个为期30天的Python入门到精通学习课程,专为零基础新手设计。课程从基础语法开始,逐步深入到面向对象编程、数据处理,最后实现运行简单的大语言模型(如基于HuggingFace...

取消回复欢迎 发表评论: