【问题标题】:Running a WinForms Application Inside Web Browser在 Web 浏览器中运行 WinForms 应用程序
【发布时间】:2020-04-26 13:38:55
【问题描述】:

我有一个 win 表单应用程序,我正在尝试在网络浏览器中运行它,我翻遍了网络并找到了一些链接:

我试过这个链接:Embedding a .NET WinForms Application in an Internet Browser Using WPF ,这很好,但问题是最终用户必须安装dot net frame work 才能运行应用程序。

我在这里找到了 running a WinForms Application Inside Web Browser 的另一个链接,带有 Visual WebGui 开发框架。

有人使用过 WebGui 吗?

【问题讨论】:

标签: c# wpf web visual-web-gui


【解决方案1】:

Thinfinity VirtualUI 允许您通过向 C# 应用程序添加一小行代码来实现这一点,这样就可以通过支持 HTML 的浏览器从任何操作系统和设备访问它。

https://www.cybelesoft.com/thinfinity/virtualui/web-integration-for-windows-apps/

【讨论】:

  • 虽然价格完全不合理。每位用户 70 美元?哎呀。我会说,仅作为最后的手段使用。
【解决方案2】:

根据我对Visual WebGui 的有限经验,这是一项非常酷的技术。简单来说,据我了解,您可以使用 Windows 窗体开发 IDE 创建一个符合 HTML5 的 ASP.NET 客户端/服务器 web 应用程序...不仅仅是一个网站或页面,具有外观和感觉非常像 Windows 窗体桌面应用程序。它通过在客户端将 Winforms 控件转换为 jquery 代码来实现这一点,并将大部分可执行代码存储在服务器端。

我已经使用它来创建简单的应用程序用于测试目的,并且有一些注意事项。首先,要创建一个“漂亮”的网站,您需要重新考虑 Winforms 的布局,使其像 web 一样,带有标题、侧边栏等。这是一种不同的范式,用户期望网站上有某些东西。好消息是,这种调整通常可以通过简单的控制来完成。即面板控件可以成为侧边栏或标题的容器。您还可以创建“主题”,类似于用于修改外观的控件的皮肤。

另一个考虑因素是弹出对话框之类的事件在 Web 环境中的行为不同。在 Winforms 中,程序执行会暂停,直到用户单击“确定”按钮或其他东西。在 Visual WebGui 中,所有的执行都发生在服务器端;因此,程序将继续执行而无需等待用户输入。这可以通过为弹出框创建一个 Form.Close 处理程序来处理。但需要牢记这些差异。

您还必须考虑对象布局异常。 Visual WebGui 通常在模仿 Winforms WYSIWYG 的好处方面做得很好:对象通常在网页上看起来非常接近您在环境中放置它们的位置。但情况并非总是如此。您有时需要使用对象填充、边距等来获得正确的布局。尽管如此,它通常比使用 CSS 或 div 对象繁琐地更改间距要容易得多。

【讨论】:

【解决方案3】:

我觉得这个问题和这个问题很相似:

Is it possible to convert a WinForm to a WebForm in .NET?

如前所述,在浏览器中“按原样”运行应用程序的唯一方法是使用一些 activex 控件,这需要 IE + .NET Framework。 您可以使用一些工具将应用程序自动迁移到 Web,但总会涉及一些手动工作,这与从头开始将应用程序构建为 Web 应用程序不同。

【讨论】:

    【解决方案4】:

    winforms 不是网络。网络就是网络。

    Web 意味着 HTML + 一些东西(通常是 JavaScript、CSS 可能还有 jQuery 等)。

    1 - 如果您需要一个 Web 应用程序,并希望使用 .Net 来实现,请创建一个 ASP.Net 应用程序。

    2 - 如果您需要 Windows 应用程序(桌面),请创建 WPF 应用程序。

    3 - 如果您需要 Windows 8“Metro”风格的应用程序(也称为 Windows Store 应用程序),请创建一个 WinRT XAML 应用程序。

    4 - winforms 完全没用。算了。

    如果您的客户不想安装任何版本的 .Net Framework,您唯一的选择是 #1。

    winforms 应用程序永远不会是 Web 应用程序,无论您为使其在 Web 浏览器中运行而采取的任何 hack 措施。

    XBAP(WPF 浏览器应用程序)也不是 Web 应用程序。它只是一个普通的 WPF 客户端应用程序,没有自己的窗口。

    编辑:

    如果你以正确的方式做事(也就是说,保持关注点分离并将应用程序逻辑放在控制器或视图模型中,而不是大多数 winform 开发人员通常习惯的可怕代码背后的做法),它在保持数据访问和业务逻辑层完好无损的同时,重用应用程序逻辑并创建新应用程序(Web 或其他应用程序)应该不会那么难。

    【讨论】:

    • 我完全知道这一点!我只是想问一下有没有使用 WebGui 的经验?
    • @Irsog 我不知道那是什么,我也不在乎。如果我需要网络,我会去网络,否则 WPF。没有理由使用过时的 winforms 东西。
    • 我有一个 winform 应用程序。我可以使用 wpf 浏览器应用程序作为主机元素运行 i,工作正常但用户必须安装 .net,所以我没有足够的时间编写相同的网络应用程序,我看到了 WebGui表单设计与winform应用程序相同,我想知道我可以将我的表单复制到WebGui应用程序而不进行修改。
    • 我的代码主要是从视图中分离出来的,最后我必须为网页制作一个 UI 等等...+1 因为没有方便的方法来做到这一点:)
    • 只是好奇 - 为什么当它不直接解决问题时将其标记为答案,而下面直接解决问题的答案不是并且已被否决?这是一个有趣的评论,值得一读,但似乎不是一个实际的答案。
    【解决方案5】:

    嗯,Visual WebGui 基于 ASP.NET 的网络。它的开发体验与使用集成到 Visual Studio 中的 Visual WebGui 设计器的 Windows 窗体的开发体验相同/相似。您在后面的代码与在 Windows 窗体上的代码相同,WebGui 运行时将其转换为 HTML5/CSS/JS。

    将您的 Windows 窗体应用程序转换为等效的 Visual WebGui Web 应用程序所需的工作将取决于您的 Windows 窗体应用程序中使用的(第 3 方/.NET)组件。 Visual WebGui API 与 Windows 窗体的 API 非常相似,因此在某些情况下,您可以添加一些对 WebGui 特定程序集的引用,然后对几个命名空间进行搜索/替换。当然有一些区别,因为这是两个不同的平台,但是开发体验和 Windows Forms 很相似。

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 2011-01-16
      • 1970-01-01
      • 2014-10-23
      • 2022-09-27
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      相关资源
      最近更新 更多