最后,有一个一致的方法来托管Chromium引擎在你的Windows应用程序中。
在20世纪90年代的古老日子里,当互联网还是一个新的时髦的发明时,程序员们想知道它是否可以成为一个很好的应用载体。于是我们尝试着将当时的桌面技术融入到我们的网络浏览器中。我们使用ActiveX插件和Java小程序等工具。我们使用了像Office Web Components和FrontPage Extensions这样令人尴尬的、专有的插件。大多数明智的程序员都离得远远的。
最终,人们意识到,这些策略在网络的规模下,以及在各种难以置信的网络连接的计算机和设备上,永远不会奏效。安装量太大,安全风险太大,对不同平台的支持太少。相反,事实证明,正确的模式是相反的。我们不需要把原生应用放到浏览器中,木马式的,而是需要把网络应用偷偷放到我们的桌面应用中。今天,这种类型的方法被称为混合应用程序,它的范围从一个简单的网页与原生内容一起显示到Electron中的一个完整的JavaScript应用程序。
尽管混合应用程序很受欢迎,但滚动自己的现代解决方案有点像拼凑。如果你不想使用像Electron这样的完整框架,你需要依靠像WebBrowser(最初的、由IE驱动的窗口,用于托管Web内容)或较新的WebView(基于Edge,但仅限于Windows 10)这样的系统控件。在最好的情况下,你要在旧电脑上管理IE的后备系统,并处理早已过期的Internet Explorer浏览器。作为一个副作用,你永远不知道你会得到什么级别的标准合规性,这使得它无法利用最现代的JavaScript和CSS功能。
微软已经承诺修复一段时间了。他们在去年的Build大会上展示了WebView for C++应用的后续产品。现在,这个继任者WebView2终于到来,并最终支持所有类型的Windows应用程序。
下面是大势所趋。WebView2可以运行在任何版本的Windows上,可以追溯到Windows 7。微软还宣称,它可以在Windows Server的各个版本上运行,一直到荒唐的Windows Server 2008 R2(这个事实既令人难以置信,又大多无用)。
更重要的是,WebView2保证使用Edge浏览器对老式工业标准Chromium引擎的实现。在Windows 10之前的电脑上,你可能需要包含一个小的可分发文件(本质上,Edge的组件化版本)。一旦你这样做,你保证最新版本的Edge渲染引擎,在永久。还有一个 "固定 "模式,让你把你的应用程序锁定在你构建它的Edge版本上。但如果你走这条路,就要看你如何管理Edge更新的分发,并接受旧版本的安全风险。
WebView2广泛的兼容性和轻量级的特性令人印象深刻。这足以让我原谅Edge积极地试图潜入我的任务栏并接管默认浏览器设置。(为了记录在案,我认为Edge是一个比IE好得多的浏览器,但仍然受到一些怪癖的困扰。它最好的功能是从Chrome上复制过来的,而且--虽然我不会批评任何选择它作为日常驱动的人--Edge仍然没有成为我最喜欢的浏览器。) WebView2还拥有广泛的应用支持。它的第一个早期预览版只支持C++。现在它可以运行在.NET框架的新旧版本上(从.NET框架4.6和.NET Core 3,到未来的.NET 5)。而且您对应用程序的选择并不受限制,因为WebView2可以在每一种重要的Windows应用程序中无缝地工作,包括WPF、新版本的WinUI、Windows Forms,甚至是老式的Win32,正如您所期望的那样。
换句话说,你可以使用一个传统的应用程序,不触碰它的任何应用程序代码,但插入一个Chromium支持的窗口来承载附加的内容。你可以将该窗口用于文档系统、新闻内容或附加功能。如果你想扩展你的应用,模糊桌面和Web之间的界限,还有通常的消息传递能力(你可以在你的托管网页中调用一个自定义的JavaScript函数,或者你的网页可以通过发布一个字符串或许一些JSON来通知你)。WebView2已经在整个Office中出现,包括在桌面版的Outlook中,它托管了Room Finder面板。
虽然WebView2仍然没有完成,但它终于毕业了,是一个预览版,微软有大量的文档和示例内容。所有应用类型的普遍可用性定于今年年底。
WebView2的未来可能更加光明。很容易想象,WebView2将成为Electron的轻量级替代产品,而且没有Node.js的开销。而且,现在微软正在试验能够降低Blazor的桌面托管足迹的方法,这一点尤为重要。事实上,考虑到Electron和各种类型的混合应用的流行,微软花了多长时间才把这个工作做好,令人惊讶。而这也让他们放弃IE而采用Chromium的决定更加容易理解。
如果想了解微软的新闻、编程的深度挖掘和偶尔的幽默,请订阅每月的Young Coder通讯。
www.deepl.com 翻译
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!