3

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

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

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

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

谢谢,

RDV

4

2 回答 2

2

没有太多代码更改?

来自 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 应用程序。我会推荐这个作为第一个候选人。如果你已经解雇了它,那么再看看为什么。

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

祝你好运。

于 2019-05-10T10:11:46.110 回答
1

看起来最小更改的唯一选择是桌面 WPF 应用程序。它是唯一使用兼容 XAML 的平台。现代应用程序不会像 WPF 那样将视图映射到视图模型,而且 xamarin 没有相同的功能集。

如果将其转换为 web api,您可以维护大部分业务逻辑而无需进行重大更改。但是,webapi 是无状态的,因此您需要弄清楚如何管理状态。这已经是比坚持使用 WPF 大得多的变化,而且您仍然需要重新编写前端。

于 2020-04-01T19:03:19.760 回答