在本文中,我们将回顾一些未能进入.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 中,该方法终被标记为已过时。

原文链接:https://www.infoq.cn/article/5McxpFwRxeKGeiBfTKPy

.NET 5 的重大改变:消失的历史技术相关推荐

  1. 男人,改变了航空历史

    男人,改变了航空历史 古架原型机于公元前5世纪创建并命名的风筝.罗杰·培根在13世纪进行的研究,后来给了他的想法,空气可以支持一门手艺,就像水支援船. 1.爱德华·纽波特 建立并试行了他原来的计划的飞 ...

  2. Gartner最新洞见:数据分析将是改变“游戏规则”的技术、企业的中台需要可组装的架构

    作者 | 宋慧 出品 | CSDN 头图 | 付费下载于IC Photo 国际研究机构Gartner在2020年发布的一张技术炒作曲线图显示,中台概念正在炒作周期的顶峰.很多企业在讨论中台是什么,很多 ...

  3. 人工智能未来会取代人类吗?AI智能,科技正在改变我们的历史

    当今社会科技发展之快让人张目结舌,但凡对新事物的认知度不够,立刻会被社会的长河所淘汰.从摩托罗拉到现今的智能手机,甚至连政府机关也慢慢从排队办公的模式,转变成扫描二维码全程电子化程序. 小编大学时代去 ...

  4. 物联网改变生活——飞思卡尔技术论坛中国站侧记

    近日,飞思卡尔技术论坛(FTF)中国站在深圳举行.飞思卡尔总裁兼首席执行官Gregg Lowe亲临论坛,布道物联网.论坛提供了超过110个小时的技术培训课程,涵盖汽车.消费电子.医疗保健.工业.网络. ...

  5. jquery input值改变事件_前端技术--JQuery

    JQuery 一.引言 1.JQuery是一个基于javascript语言的框架 --- 是对js代码的合理封装 2.js缺点,jquery优点 ​1)js代码比较复杂 var tag = docum ...

  6. “消失”的Android技术博主们现在如何!Android开发者前路在哪?

    作者:qing的世界 链接:https://juejin.im/post/5e93e305f265da48076dfce3 概述 想了很久怎么样可以让文章的标题不那么悲观,但是各种文案都在我脑海里面不 ...

  7. 美国科技博客网:改变世界15种技术

    根据国外媒体新闻报道,近期,美国科技博客网站Business Insider汇总了改变世界的15种新技术,其中谷歌眼镜和无人驾驶车上榜了.技术改变了我们生活方式,将我们带入一个数字化时代.智能手机.无 ...

  8. “消失”的Android技术博主们现在如何,framework框架

    希望看过文章,能有同感的朋友也能多思考一下. 最近因为疫情的关系,相信很多国内的小伙伴都逐渐开始了解到在家上班的体验.在美国基本上work from home在IT公司里面算是比较常见的现象了.一般大 ...

  9. 人工智能如何改变半导体的分层技术

    为了制造计算机芯片,世界各地的技术人员都依赖原子层沉积 (ALD),它可以制造出只有一个原子厚的薄膜.企业通常使用 ALD 来制造半导体器件,但它也应用于太阳能电池.锂电池和其他能源相关领域. 今天, ...

最新文章

  1. 贪心:Wiggle Subsequence 摇摆序列
  2. 200.Number of Islands
  3. 一些经典的常用ASP代码[经典简单] (2)
  4. Css--input输入框点击时去掉外框outline:medium;(chrome)
  5. html图片在ie中有边框,html – 表格的边框在IE中不起作用
  6. Android Full-Disk Encryption
  7. 蓝字冲销是什么意思_梦见上学 做梦梦到上学是什么意思 梦到上学有哪些预兆...
  8. 带你封装一个上传图片组件(ant design+react)
  9. 三年白干!程序员因违反《竞业协议》赔偿腾讯97.6万元,返还15.8万元
  10. 前段时间是Flash大战HTML5,现在是SliverLight“被遗弃”,我啊羡慕你们的热闹。...
  11. CCCC-GPLT L1-034. 点赞 团体程序设计天梯赛
  12. 使用Shell工具连接虚拟机
  13. 财会法规与职业道德【3】
  14. 白皮书显示,2022年仅有28.4%企业实现社保基数完全合规,有38.1%企业额外购买补充商业保险 | 美通社头条...
  15. kprobe与perf probe使用简单记录
  16. SAP MM 事务代码VL10B对于有多个Delivery Schedule的STO item的处理
  17. 付鼻窦瓦氏位与付鼻窦柯氏位区别
  18. APP开发应注意的几点
  19. 个人成长的15种能力
  20. Java基础——高级

热门文章

  1. 环境部署(九):linux下安装python+chrome+Xvfb
  2. TeaPot 用webgl画茶壶(3) 环境纹理和skybox
  3. 看出每个应用程序最高可用内存是多少
  4. px,em,rem,vw单位在网页和移动端的应用
  5. Oracle数据库案例整理-Oracle系统执行时故障-Shared Pool内存不足导致数据库响应缓慢...
  6. 分析cocos2d-x中的CrystalCraze示例游戏
  7. DropDownList 選項改變確認腳本
  8. C#——一个简单的文件管理器
  9. google +按钮_如何禁用或改善Google的Google+集成
  10. applecare多少钱?_否,AppleCare +无法覆盖丢失或被盗的iPhone