首页 > 自考资讯 > 自考知识

微软放弃windows10,微软放弃win7了吗

头条共创 2024-06-27

微软最近宣布其Teams 应用程序的活跃用户数量已达到惊人的2.5 亿。这使得Teams 成为继Word 和Excel 之后Microsoft Office 生产力套件中第二受欢迎的明星。然而,Teams一直受到性能问题的困扰,疯狂消耗系统资源,导致用户投诉。

不久前,微软Teams执行副总裁宣布Teams将退役Electron,转而使用微软自家的Edge WebView2渲染引擎以获得更好的性能。官方称,调整后Teams的内存消耗将直接减半,预计将在Windows 11中以Teams 2.0的形式出现,并于2022年底发布。

据报道,Windows 11 允许用户通过文本、聊天、音频和视频即时与联系人联系,无论他们使用的是Windows、Android 还是iOS。即使对方尚未下载Teams 应用程序,您仍然可以通过双向短信进行通信。 Windows 11 还支持即时静音和取消静音,或直接从任务栏启动Teams 演示文稿。

5c18f9e2478b411fb28932d729ecd2f7~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720062709&x-signature=GrlKdEuYVwOdRnpyK0iqgNMI3A4%3D

追求更低的内存占用

这对于微软来说似乎是一大进步,微软一直在尝试各种技术来减少其桌面客户端所需的内存。不少网友表示很高兴看到这样的变化。

Teams 工程师Rish Tandon 在Twitter 上表示:“Angular 也消失了。我们现在100% 采用Reactjs。” “这些变化看起来很棒!”有人留言,但Tandon 没有回答网友的问题,“Win10 和MacO 也可用吗?”

9f65f4f40b7749549ef18e6be9c7e647~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720062709&x-signature=sC0WKwPrPxXoNzb0XOdNf7FlcvA%3D Tandon 表示,Teams 团队大约花了六个月的时间才完成这项工作。 Optimized Teams 2.0 消耗的内存仅为Teams 1.0 中同一帐户的一半。

直到今天,许多流行的应用程序仍然使用Electron 来提供支持。 Electron 框架帮助Web 开发人员将Web 应用程序发布到桌面平台,而无需特定平台的复杂性。然而,每个Electron 应用程序后端都必须运行自己的Chrome OS 实例,因此同时运行两个或多个此类应用程序可能会以惊人的速度消耗主机资源。

因此,团队在Electron 上进行大量处理将不可避免地过度消耗内存并降低计算机速度。微软还发布了一个文档页面,解释了为什么Teams 的内存使用率如此之高。

与Electron 不同,WebView2 监视Chromium 的行为并检测可用系统内存量,以更有效地使用内存资源来优化渲染体验。当其他应用程序或服务需要系统内存时,Chromium 会将空间传递给这些进程。因此,即使在内存量较小的低端计算机上,您也可以获得卓越的性能。

WebView2类似于一个类似于应用程序窗口的控件,专门用于渲染网页。事实上,WebView2 控件还允许您将Web 技术(HTML、CSS、JavaScript 等)嵌入到您的本机应用程序中。因此,将Teams 规模的应用程序迁移到WebView2 需要开发团队重写Electron 提供的许多抽象。因此,Teams 本质上成为本机Windows 应用程序。

WebView2 目前作为Microsoft“One Outlook”项目的一部分包含在Outlook 中。

为什么选 Webview2 ?

由于Teams 需要处理大量音频和视频内容,Microsoft 认为最好将部分工作负载转移到WebView2 擅长的本机形式。事实也证明电子摘要无法有效地完成这些处理任务。然而,Webview2 并不是严格意义上的Electron 替代品。

Webview2 并不是像Electron 这样的打包器,可以让你在桌面平台上快速发布Web 应用程序。 Electron 和WebView2 都是基于Chromium 构建的,但更具体地说,WebView2 继承了Edge 的源代码,而Edge 使用Chromium 源代码的分支。 Electron 不与Chrome 共享任何DLL。 WebView2 二进制文件硬链接到Edge(Edge 90 稳定版),因此两者都使用相同的磁盘和一些其他工作集机制。

Electron 应用程序始终与用于开发的特定Electron 版本捆绑和分发。相比之下,WebView2 有两种发布选项。您可以直接捆绑开发应用程序时使用的特定WebView2 库,也可以使用系统上已存在的共享运行时版本。 WebView2 为每种方法提供了工具,包括防止共享运行时丢失的引导安装程序。此外,从Windows 11 版本开始,操作系统包含WebView2 运行时。

捆绑这两个框架的应用程序负责使框架保持最新,包括任何小的安全增强更新。对于使用共享WebView2运行时的应用程序,版本维护依赖于WebView2自己的更新程序。该更新程序独立于应用程序运行,其运行方式与Chrome 和Edge 类似。 WebView2更新应用程序代码和其他依赖项由开发人员管理,类似于Electron。请注意,Windows 更新管理功能不包括Electron 和WebView2。

Electron和WebView2都继承了Chromium的多进程架构。这意味着单个主进程与一个或多个渲染器进程进行通信。这些进程与系统上运行的其他应用程序完全隔离。每个Electron 应用程序都有一个独立的进程树,其中包括根浏览器进程、一些实用程序进程和固定数量的渲染进程。与应用程序套件类似,非渲染器进程在使用相同用户数据文件夹的WebView2 应用程序之间共享,但进程不在使用不同数据文件夹的WebView2 应用程序之间共享。

ElectronJS流程模型:

545897be86f3420a88d9d37fe508bfbe~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720062709&x-signature=y3cyTryDOPNHe70rSnE7%2FK2lfus%3D 基于WebView2的应用程序流程模型:

48e1a3aae9f74aa7b97aa8ca927a8070~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720062709&x-signature=ywCZWPexNhn5hAcloPfGWwNi%2FDw%3DElectron 提供API 来满足各种常见桌面应用程序需求,包括菜单、文件系统访问和通知。 WebView2可以以组件的形式集成到WinForms、WPF、WinUI、Win32等应用程序框架中。此外,WebView2 仅通过JavaScript 提供符合Web 标准的操作系统API。

Node.js 与Electron 集成,因此Electron 应用程序可以在渲染器和主进程中使用任何Node.js API、模块或Node 本机插件。 WebView2应用程序不对应用程序不同部分使用的编程语言或框架做出任何假设。 JavaScript代码必须通过应用程序宿主进程代理才能访问操作系统。

Electron 为Web 内容提供了可配置的安全模型,范围从完全开放访问到完全沙箱模式。 WebView2 内容始终保持沙盒状态。 Electron 还提供了有关如何选择安全模式的大量文档,WebView2 提供了丰富的安全最佳实践。

Electron的源代码在GitHub上维护和分发,每个应用程序都可以修改它来构建自己的Electron品牌。 WebView2的源代码没有记录在GitHub上。

具体差异可以概括如下:

电子的

网页视图2

奠定基础

角落

源码是否记录在GitHub上

是的

是否共享Edge/Chrome DLL

是(Edge 90 及更高版本)

是否在不同应用程序之间共享运行时

选项

应用程序接口

是的

Node.js

是的

沙箱

选项

每次

需要一个应用框架

是的

支持的平台

Mac、Win、Linux

Win(Mac/Linux正在准备中)

不同应用程序之间是否共享进程

我从来没有

选项

谁将管理框架的更新?

应用程序

网页视图2

性能差异有多大?

这是Electron 应用中一个重要的性能考虑因素。

在Chromium 中,浏览器进程负责充当沙箱渲染器和系统其余部分之间的IPC 代理。 Electron 支持非沙箱渲染过程,但许多应用程序选择启用沙箱以提高安全性。 WebView2 始终启用沙箱,因此IPC 会影响大多数Electron 和WebView2 应用程序的整体性能。

尽管Electron 和WebView2 流程模型基本相似,但底层IPC 不同。 JavaScript 和C++ 或C# 之间的通信需要封送,最常见的方法是封送为JSON 字符串。请注意,JSON 序列化/解析操作非常消耗资源,因此IPC 瓶颈将不可避免地对性能产生负面影响。因此,从Edge 93 开始,WebView2 对网络事件使用CBOR。

Electron 使用结构化克隆算法,通过MessagePorts API 支持任意两个进程之间的直接IPC。此功能允许应用程序在进程之间发送对象时避免资源密集型JSON 序列化操作。

虽然Electron 和WebView2 之间存在很多差异,但它们在渲染Webn 内容方面非常一致。核心影响来自应用程序架构和JavaScript库/框架对内存和性能的影响。

2017 年,Electron 是在桌面平台上发布Web 应用程序的最佳选择,甚至是唯一的选择,但现在它是一个需要优化的对象。这可能代表跨平台框架领域的一个重要里程碑,但也可能只是Microsoft Teams 的一个小调整。不过,具体细节还需要时间的检验。

相关链接:

https://www.electronjs.org/blog/webview2

https://blog.devgenius.io/microsoft-is-finally-ditching-electron-9e081757f9db

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢