首页 > 解决方案 > WPF XBAP 迁移选项

问题描述

我有一个复杂且非常大的 WPF XBAP 应用程序(对于基于 Web 的应用程序,以部分信任模式运行)。由于 Microsoft 将在 2020 年之前停止对 XBAP 的支持,我们正在寻找用其他东西替换/迁移 XBAP 应用程序而无需太多代码更改。

我们评估了以下选项,但没有一个看起来非常好:

  1. ClickOnce App - 最有前途,但我们更倾向于基于 Web 的解决方案。
  2. 用 Angular 重写代码 - 最后一个选项:是否有一个插件可以通过 Angular 与 C# 代码对话。此外,Angular 不允许在客户端上写入文件。

将不胜感激迁移 XBAP 应用程序的输入/经验。

谢谢,

RDV

标签: wpfxbapweb-based

解决方案


没有太多代码更改?

来自 wpf 的 Web 应用程序将彻底重写所有内容,直至您的数据层。也许其中一些也是如此。

Web 应用程序存在于浏览器沙箱中。您可以将任何旧脚本加载到网络浏览器中,该沙箱会阻止所有那些坏人对您做坏事,例如删除 C 盘的全部内容。

除了一些有限的例外。

他们可以将文件写入本地存储。有各种插件使开发人员更加友好。

你可以考虑cshtml。这可以将 xaml 转换为 html5。

http://www.cshtml5.com/

我认为这并不是通过单击按钮 100% 覆盖所有 WPF 应用程序。在写下所有其他选项之前,我会阅读小字并仔细考虑。

为了从网页“与 c# 对话”,通常的方法是调用 Web 服务。

写入本地磁盘的一种选择是在客户端计算机上安装该服务。如果你能做到这一点,那么网络应用程序不太可能成为你的最佳选择。

那个 c# web 服务。

您的 c# 将是 web api。Web api 端点几乎只是 Web 应用控制器上的公共方法。

如果您的开发人员都是 c# 和 xaml,那么您可能会发现切换到任何基于 javascript 的东西都有一个巨大的学习曲线。

Angular 有很多东西要学。

在你可以选择的框架中,Angular 是最“有主见”的。你适应它。你很可能会找到像 React 这样的替代方案更适合这个原因。

就客户端本身的 c# 而言,您的选择非常有限。WebAssembly 是全新的东西。如果您的用户不使用 IE,那么这是 Blazor 的一个选项。问题在于 Blazor 是一种新兴技术,还没有准备好编写一些企业应用程序。

https://dotnet.microsoft.com/apps/aspnet/web-apps/client

明年这仍然是最前沿的东西。你仍然需要学习 razor CSS 和 JavaScript。

现在可用的是 Xamarin 表单。但是你必须安装这些。

比所有这些更明显的是只是一个常规安装的 wpf 应用程序。我会推荐这个作为第一个候选人。如果你已经解雇了它,那么再看看为什么。

也许你可以把它放在微软商店。

祝你好运。


推荐阅读