【问题标题】:I have a C# Windows Forms application. Can I deploy it on web, so that users can access through web?我有一个 C# Windows 窗体应用程序。我可以把它部署在web上,让用户可以通过web访问吗?
【发布时间】:2011-06-01 12:08:38
【问题描述】:

我们使用 C#(.NET 2.0,Visual Studio 2005)完成了一个基于 Windows 的应用程序。现在重做这个基于 Web 的应用程序是一个耗费时间和资源的过程,这对我来说几乎是不可能的。

我们需要托管这个,以便用户可以通过互联网访问。

通过RDP用户可以访问Windows应用程序,但是这里的问题是更多用户不能同时操作。

是否可以将其托管为 Web 应用程序,以便用户可以通过浏览器访问它?

【问题讨论】:

    标签: c# windows hosting


    【解决方案1】:

    不,您不能像网站一样直接通过网络访问它,Windows 窗体应用程序直接在客户端计算机上运行。

    您可以将其打包为 MSI 安装程序,以便最终用户可以轻松安装它,然后通过 Internet 访问数据库等资源(公开这些资源的最简单方法是作为 Web服务)。如果你选择使用这种机制,那么你只需要重构你的应用程序的一部分,假设你已经将它很好地构建成一个n-tier 应用程序。

    请注意,尽管用户不必通过 Internet 访问这些资源 - 您提到使用 RDP 的用户表明您将其放在 Intranet 上,这意味着您可以“托管”服务,例如机器上的数据库,所有客户端都可以通过网络查看(和访问)。在这种情况下,您可能需要更改应用程序配置文件中的任何连接字符串或路径。

    【讨论】:

    • 我成功为一个应用程序所做的是使用 ILMERGE 创建一个可执行文件,该可执行文件通过单击链接直接“从网络”运行。当然它会在本地下载,但它不需要安装,也不需要管理员权限。
    【解决方案2】:

    您至少可以使用ClickOnce

    在网络上部署它通过

    ClickOnce 部署使您能够将基于 Windows 的应用程序发布到 Web 服务器或网络文件共享以简化安装。 Visual Studio 为发布和更新使用 ClickOnce 技术部署的应用程序提供全面支持。

    http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.90).aspx

    【讨论】:

    • 我同意@frou。这就是要走的路。或者我觉得如果现在的winforms应用是3层应用,并且设计得当,应该可以很快放个web ui。在这里你只需要构建你的表现层,其余所有层都保持不变。
    【解决方案3】:

    您可以使用单击一次通过网络部署您的应用程序并支持通过它进行更新,但我不知道有什么方法可以将 winform 应用程序转换为基于 Web 的应用程序,我真的怀疑是否有考虑基本架构的方法两个平台之间的变化。

    【讨论】:

      【解决方案4】:

      我建议投入一些时间并修改架构以采用SOA

      您应该重组您的代码并创建一个web service,它将向客户端公开方法。这些方法将从客户端获取输入,执行操作并将数据返回给 UI 显示。您可以从现有解决方案中挑选核心业务逻辑类并按原样重用它们。将表示逻辑从业务逻辑中分离出来可能需要付出一些努力,但值得付出努力。

      托管 Web 服务后,您可以将其与桌面应用程序或 Web 应用程序一起使用。当然,您需要为 Web 应用程序编写 UI 代码,但这比从头开始编写要容易得多。

      【讨论】:

      • 这绝对是我的建议。尽管重构架构可能需要一些工作,但从时间/精力方面来看,这似乎是侵入性最小的方法,并且可能会为您在未来维护应用程序时提供更大的灵活性。
      【解决方案5】:

      如果您在 Windows 中使用数据库应用程序,那么您可以做一件事。您可以将数据库部署在服务器上,但您想在 ASP.NET 中为其设计一个前端应用程序,以便您可以在安装应用程序的机器上使用您的 Windows 应用程序,并且所有其他人也可以访问它通过网络。

      【讨论】:

      • 它是一个数据库应用程序。主控位于其中一个 Web 应用程序中,事务位于另一个 Web 应用程序中。
      猜你喜欢
      • 2011-03-09
      • 2011-09-18
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2017-08-21
      • 2016-12-28
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多