从IE11迁移到Edge:在现代浏览器中调用.NET组件的替代方案

32次阅读

从 IE11 迁移到 Edge:在现代浏览器中调用。NET 组件的替代方案

本文旨在解决从 internet explorer 11 迁移至 microsoft edge 时,原先通过 `` 标签调用。net 组件(dll)失效的问题。鉴于现代 浏览器 已不再支持 activex 或 com 组件,文章将深入探讨两种主流替代方案:利用 blazor 将 c# 代码编译为 webassembly 在客户端运行,以及通过 clickonce 技术从 edge 浏览器 启动独立的桌面应用程序,为开发者提供在 edge 环境中继续利用现有。net 资产的专业指导。

背景:IE11 与。NET 组件的遗留集成方式

在 Internet Explorer 11 时代,开发者常利用 html 的 <Object> 标签结合 classid 属性来直接加载和调用客户端的 COM 或 ActiveX 组件,其中包括基于。NET Framework 编写的 DLL。这种方式允许 Web 应用程序与本地系统资源进行深度交互,例如:

<object id='example' name='example' classid='Example.dll#org.exam.Sample' VIEWASTEXT></object>

上述代码片段尝试加载名为 Example.dll 中的 org.exam.Sample 类。然而,随着 Web 技术的发展和安全标准的提升,现代浏览器如 Microsoft Edge 已经放弃了对 ActiveX 和 COM 组件的原生支持。这意味着,当应用程序从 IE11 迁移到 Edge 时,这种依赖 <object> 标签直接调用。NET DLL 的机制将不再工作。

现代解决方案:在 Edge 中集成。NET 功能

为了在 Microsoft Edge 中继续利用现有的。NET 逻辑或实现类似的功能,开发者需要采纳符合现代 Web 标准的替代方案。以下是两种主要的策略:

方案一:使用 Blazor 进行客户端 C# 代码执行

Blazor 是微软推出的一个 Web 框架,它允许开发者使用 C# 和。NET 构建交互式的客户端 Web ui。Blazor 通过 WebAssembly 技术,使得编译后的。NET 代码可以直接在浏览器沙箱中运行,而无需插件或额外的运行时。

工作原理:

  1. C# 到 WebAssembly: 您的 C# 代码(包括业务逻辑和 UI 组件)被编译成 WebAssembly 字节码。
  2. 浏览器执行: WebAssembly 文件被浏览器下载并在其沙箱中执行。
  3. dom操作: Blazor 通过javaScript 互操作性(js Interop)来更新和操作浏览器的 DOM,实现用户界面。

优点:

  • C# 开发: 可以在 前端 和后端都使用 C#,减少语言切换成本。
  • 代码复用: 现有。NET 库和业务逻辑可以更容易地迁移和复用。
  • 高性能: WebAssembly 提供接近原生代码的执行速度。
  • 安全性: 代码在浏览器沙箱中运行,遵循 web 安全 模型。

实施概述: 要将原先 DLL 中的逻辑迁移到 Blazor,您通常需要:

  1. 创建 Blazor 项目: 根据需求选择 Blazor WebAssembly 或 Blazor Server 项目。
  2. 重构 .NET 逻辑: 将 DLL 中的核心业务逻辑提取并 封装 为 C# 类库,供 Blazor 应用引用。
  3. 构建 UI 组件: 使用 Razor 组件(.razor 文件)来构建用户界面,并在需要时调用重构后的 C# 逻辑。
  4. javascript互操作(如需): 如果需要与浏览器特定的 JavaScript API 或第三方 JS 库交互,可以使用 Blazor 的 JS Interop 功能。

示例(概念性): 假设原 DLL 中有一个计算服务,现在可以将其封装在 Blazor 组件中:

// Example.Client/Services/SampleService.cs namespace Example.Client.Services {public class SampleService     {         public string GetSampleData()         {// 模拟原 DLL 中的复杂逻辑             return $"Data from Blazor .NET component at {DateTime.Now}";         }     } }  // Example.Client/Pages/Index.razor @page "/" @inject Example.Client.Services.SampleService SampleService  <h1>Hello, Blazor!</h1>  <p>@message</p>  <button @onclick="LoadData">Load Data</button>  @code {private string message = "Click the button to load data.";      private void LoadData()     {message = SampleService.GetSampleData();     } }

方案二:通过 ClickOnce 启动桌面应用程序

如果您的。NET DLL 实际上是一个包含丰富功能的桌面应用程序,并且您希望从 Web 页面触发其启动,那么 ClickOnce 是一个合适的解决方案。ClickOnce 是微软提供的一种部署技术,允许用户通过 Web 链接或网络共享轻松安装和运行 windows 桌面应用程序。

从 IE11 迁移到 Edge:在现代浏览器中调用。NET 组件的替代方案

代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

从 IE11 迁移到 Edge:在现代浏览器中调用。NET 组件的替代方案 51

查看详情 从 IE11 迁移到 Edge:在现代浏览器中调用。NET 组件的替代方案

工作原理:

  1. 发布应用程序: 将您的。NET 桌面应用程序发布为 ClickOnce 部署包(.application 文件)。
  2. Web 链接: 在 Web 页面中提供一个指向该。application 文件的链接。
  3. 浏览器启动: 当用户点击该链接时,Edge 浏览器会识别这是一个 ClickOnce 部署,并提示用户安装或启动关联的桌面应用程序。
  4. 应用程序执行: 应用程序在用户本地机器上独立运行,拥有完整的桌面应用权限。

优点:

  • 利用现有桌面应用: 无需重写整个桌面应用程序。
  • 易于部署和更新: 自动更新机制简化了维护。
  • 全功能桌面体验: 应用程序可以访问本地资源,提供比 Web 应用更强大的功能。

实施概述:

  1. 准备桌面应用程序: 确保您的。NET 桌面应用程序(WinForms, wpf等)功能完善。
  2. 启用 ClickOnce 发布:visual studio 中,为项目启用 ClickOnce 发布。配置发布路径、更新选项等。
  3. 生成部署文件: 发布应用程序会生成一个。application 文件和相关的部署文件。
  4. Web 页面集成: 在您的 SpringFramework 应用程序或其他 Web 页面中,提供一个指向 ClickOnce 部署文件的链接。

示例(概念性): 在您的 Web 页面中,可以这样提供 ClickOnce 应用程序的启动链接:

<p> 点击下方链接启动您的桌面应用程序:</p> <a href="http://yourserver.com/YourDesktopApp/YourApp.application"> 启动桌面应用程序 </a>

当用户点击此链接时,如果未安装,浏览器会引导用户安装;如果已安装,则会直接启动应用程序。

注意事项与选择建议

  • 安全模型: Blazor 运行在浏览器沙箱中,受 Web 安全模型限制;ClickOnce 应用作为桌面程序运行,拥有更高的权限,但需要用户明确信任。
  • 用户体验: Blazor 提供无缝的 Web 体验;ClickOnce 会启动一个独立的桌面窗口,可能在用户感知上与 Web 应用分离。
  • 开发复杂性: 迁移到 Blazor 可能需要对现有代码进行较大程度的重构,特别是涉及 UI 的部分。ClickOnce 则更多是部署层面的工作。
  • 功能需求: 如果需要与 操作系统 进行深度交互(如访问文件系统、硬件设备),ClickOnce 通常是更直接的选择。如果目标是构建纯 Web 端的 C# 应用,Blazor 更合适。
  • 部署环境: Blazor 应用部署为静态文件或托管在 ASP.NET Core 后端。ClickOnce 需要一个 Web 服务器来托管部署文件。

总结

从 IE11 迁移到 Microsoft Edge,意味着告别了基于 ActiveX/COM 的传统。NET 组件集成方式。面对这一挑战,开发者应拥抱现代 Web 技术。Blazor 通过 WebAssembly 为客户端 C# 代码执行提供了强大的平台,实现了全栈。NET 的 Web 开发体验;而 ClickOnce 则为从 Web 页面启动功能丰富的桌面应用程序提供了便捷的途径。根据项目的具体需求、现有代码结构以及对用户体验的期望,选择最适合的方案,将有助于平稳过渡并充分利用。NET 生态系统的优势。

站长
版权声明:本站原创文章,由 站长 2025-11-12发表,共计3386字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources