【问题标题】:Can you create a webbased UI using .Net?您可以使用 .Net 创建基于 Web 的 UI 吗?
【发布时间】:2010-10-17 17:55:14
【问题描述】:

我有一个 WPF 应用程序,我想将其转换为从浏览器运行的应用程序。原因是 WPF 不能在 Mac/Linux 上运行,Silverlight 也不是一个选项,因为它有安全限制。

基本思想是将应用程序变成类似网络服务器的应用程序,并完全在 html/ajax 中处理 UI。这个“网络服务器”不依赖于 WPF/Winforms,因此也可以在 Mono 上运行。您甚至可以在旅途中通过 Android/iOS 设备控制该应用。

我的问题是:是否可以使用 .NET 创建此用户界面?网络服务器部分的代码不是问题,但我正在努力处理正在提供的实际 html。例如,当有人单击按钮时,我需要将事件绑定到该按钮。我必须为所有这些小“事件”编写大量 javascript,用于列表框、进度条等简单控件。如果我可以从 VS 设计 Web 界面会容易得多。虽然它支持 ASP,但我不能使用它的页面设计器,因为最终用户不会在他们的台式 PC 上运行 ASP 服务器。

那么使用 .NET 设计这些动态页面的最佳方法是什么?还是根本不可能?

编辑:为了更清楚,它不是互联网应用程序。用户在本地运行 server-part,并连接到 127.0.0.1:80 以查看应用程序的用户界面。

编辑二:因为它们看起来很混乱,让我举一个类似应用程序的例子:SABnzbd。它是一个二进制新闻采集器,您可以作为“Windows 服务”安装,并且可以通过您的网络浏览器进行控制。它是多平台的,并且是用 Python 编写的。我想采用相同的方法,只使用 (VB).NET

【问题讨论】:

  • “Silverlight 不是一个选项,因为它的安全限制”
  • "虽然它支持 ASP,但我不能使用它的页面设计器,因为最终用户不会在他们的台式 PC 上运行 ASP 服务器。"
  • "虽然它支持 ASP,但我不能使用它的页面设计器,因为最终用户不会在他们的台式 PC 上运行 ASP 服务器。"
  • “你这是什么意思?Html+JS 没有比 SL 更多的权限”比你没看我的问题吗?网络服务器 .exe 将执行所有工作,并拥有完整的系统访问权限。 HTML+JS 仅适用于该 .exe 的 UI
  • “那部分根本没有任何意义”

标签: asp.net .net wpf ajax vb.net


【解决方案1】:

首先让我说:是的。您可以使用 .Net 创建基于 Web 的 UI。

其次,让我说你的问题有很多不正确的地方,很难知道我应该从哪里开始。


Silverlight 不是一个选项,因为它有安全限制

啊?!?


webserver-part 的代码没有问题

为什么您必须编写自己的 Web 服务器? Ans 为什么你会知道怎么做,却不知道 ASP.Net 是什么?


虽然它支持 ASP,但我不能使用它的页面设计器,因为最终用户不会在他们的台式 PC 上运行 ASP 服务器。

啊?!?首先,页面设计者与呈现的 html 如何到达用户有什么关系?其次,您的用户不需要在他们的机器上运行任何服务器。您的 Web 服务器就是服务器。您的用户只需要一个浏览器。


将现有 WPF 应用程序转换为 Web 应用程序的最简单方法是将其转换为 Silverlight。如果(如您所说)您不想这样做,那么我建议您查看 ASP.Net。如果您安装 IIS(随 Windows Server 免费),您可以轻松免费地部署 ASP.Net。这将能够为 Mac、Windows、Linux 等机器提供内容。您的用户不需要在他们的机器上运行 ASP 服务器。他们只需要一个浏览器。

ASP.Net 允许您将事件处理程序绑定到按钮单击等事件。它还允许您动态生成页面。

EDIT(回答已编辑的问题)

编辑:为了更清楚,它不是互联网应用程序。用户在本地运行 webserver/http 守护进程,并连接到 127.0.0.1:80 以查看应用程序的用户界面。

如果用户在本地运行 Web 服务器和客户端应用程序,那么你得到了什么?如果您希望此应用程序在多个平台上运行,您仍然需要编写应用程序来支持这些平台(无论您是编写 Web 服务器还是 GUI)。

【讨论】:

  • 不是我不想要 Silverlight,而是我的应用程序需要打开套接字/写入文件/等等,这些都是 Silverlight 不支持的东西(即使在提升模式下也不支持)。你误解了我的问题,我在上面做了一个“编辑”以使其更清楚。
  • 无论您是否使用 Silverlight,您仍然会受到客户端的安全限制。 Javascript/AJAX 也无法打开套接字或写入文件。您必须在服务器上执行任何操作。一旦您意识到这一点,就可以按照您希望的方式创建 UI。 Silverlight、JSP、html和javascript等
  • "你为什么要写你自己的 web 服务器?为什么你知道怎么做,却不知道 ASP.Net 是什么?"
  • 我在修改后的答案中解决了这个问题。
  • "如果用户在本地运行 Web 服务器和客户端应用程序,那么你得到了什么?"如果打开防火墙,用户可以远程(通过手机)使用该应用程序。并且应用程序不再依赖 WPF 的 UI(Mono 框架不支持)。
【解决方案2】:

如果您愿意重写 GUI,为什么不直接使用 GTK# 或 Winforms?两者都在 Windows+Linux 上运行。检查What is the difference between GTK# and Windows Forms? 进行比较。

【讨论】:

  • 因为如果人们可以通过手机远程控制应用程序,并执行停止/暂停/恢复等操作,那就太好了。如果我把它移植到 GTK# 上,那意味着我还要把 UI 移植到 Android/iOS 上,仍然需要开发一个 Client-Server 架构,以便手机接口可以向桌面 PC 发送命令。跨度>
【解决方案3】:

安全 101 - 客户端被认为是敌对的。任何客户端,任何架构。 Silverlight 没有什么特别不安全的,所以如果它满足您的其他需求,请使用它。并验证服务器上的所有内容;无论如何你都需要这样做。

【讨论】:

  • Siverlight 没有什么不安全的地方,但它有很多限制。我无法打开某些端口的套接字/访问文件系统/等。
【解决方案4】:

为什么不构建一个使用 GTK# 作为 UI 的客户端应用程序? - 然后它将在所有平台上可用。

【讨论】:

  • 因为如果人们可以通过手机远程控制应用程序,并执行停止/暂停/恢复等操作,那就太好了。如果我把它移植到 GTK# 上,那意味着我还要把 UI 移植到 Android/iOS 上,仍然需要开发一个 Client-Server 架构,以便手机接口可以向桌面 PC 发送命令。跨度>
【解决方案5】:

一直以来我只想到了两种可能的解决方案:

  • HTML5/AJAX 客户端 + .NET 服务器应用(单声道兼容)
  • Silverlight 应用程序(超出浏览器 + 提升的信任)

HTML5/Ajax 解决方案的问题在于 .NET 没有提供设计 UI 的方法。

Silverlight 解决方案的问题是“提升信任”仍然没有给我足够的权限。

CodeInChaosBlindy 为我指明了正确的方向,第三种解决方案:

  • Silverlight 客户端 + .NET 服务器应用程序

我只会将 Silverlight 用于客户端部分,而不是整个应用程序。并通过 localhost-connection(JSON 或类似的东西)与服务器 .exe 进行通信。这样我就可以使用 .NET 设计 UI,不受 Silverlight 的限制,并且可以完全访问文件系统/注册表/套接字。

【讨论】:

    【解决方案6】:

    现在您声明您将在 Web 应用程序中使用 silver-light。这是否消除了您决定采用客户端-服务器架构的全部原因?说真的,有多少手机运行 Silverlight?您仍然可以使用其他计算机,但这似乎与手机几乎没有相同的用途。就像其他一些人建议的那样,将 Gtk# 用于 UI。无论哪种方式,您都必须编写 Android/iOS 端口。

    【讨论】:

    • 每个操作系统都通过 Moonlight 运行 Silverlight,每部手机也是如此(iOS=MonoTouch、Android=MonoDroid 等)
    • @Joshua 你确定 MonoDroid 允许使用月光吗?我很想在我的 android 手机上支持 silverlight。你能把我链接到说明的地方吗?
    • 根据 MonoDroid 常见问题解答:Mono for Android 是否支持运行 Silverlight /Moonlight 应用程序?不。Android 的 Mono 目前不包含 Moonlight 或 Silverlight 用户界面功能,仅包含核心库功能。
    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2021-02-24
    • 2011-05-24
    • 1970-01-01
    相关资源
    最近更新 更多