【发布时间】:2011-06-01 12:08:38
【问题描述】:
我们使用 C#(.NET 2.0,Visual Studio 2005)完成了一个基于 Windows 的应用程序。现在重做这个基于 Web 的应用程序是一个耗费时间和资源的过程,这对我来说几乎是不可能的。
我们需要托管这个,以便用户可以通过互联网访问。
通过RDP用户可以访问Windows应用程序,但是这里的问题是更多用户不能同时操作。
是否可以将其托管为 Web 应用程序,以便用户可以通过浏览器访问它?
【问题讨论】:
我们使用 C#(.NET 2.0,Visual Studio 2005)完成了一个基于 Windows 的应用程序。现在重做这个基于 Web 的应用程序是一个耗费时间和资源的过程,这对我来说几乎是不可能的。
我们需要托管这个,以便用户可以通过互联网访问。
通过RDP用户可以访问Windows应用程序,但是这里的问题是更多用户不能同时操作。
是否可以将其托管为 Web 应用程序,以便用户可以通过浏览器访问它?
【问题讨论】:
不,您不能像网站一样直接通过网络访问它,Windows 窗体应用程序直接在客户端计算机上运行。
您可以将其打包为 MSI 安装程序,以便最终用户可以轻松安装它,然后通过 Internet 访问数据库等资源(公开这些资源的最简单方法是作为 Web服务)。如果你选择使用这种机制,那么你只需要重构你的应用程序的一部分,假设你已经将它很好地构建成一个n-tier 应用程序。
请注意,尽管用户不必通过 Internet 访问这些资源 - 您提到使用 RDP 的用户表明您将其放在 Intranet 上,这意味着您可以“托管”服务,例如机器上的数据库,所有客户端都可以通过网络查看(和访问)。在这种情况下,您可能需要更改应用程序配置文件中的任何连接字符串或路径。
【讨论】:
您至少可以使用ClickOnce
ClickOnce 部署使您能够将基于 Windows 的应用程序发布到 Web 服务器或网络文件共享以简化安装。 Visual Studio 为发布和更新使用 ClickOnce 技术部署的应用程序提供全面支持。
http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.90).aspx
【讨论】:
您可以使用单击一次通过网络部署您的应用程序并支持通过它进行更新,但我不知道有什么方法可以将 winform 应用程序转换为基于 Web 的应用程序,我真的怀疑是否有考虑基本架构的方法两个平台之间的变化。
【讨论】:
我建议投入一些时间并修改架构以采用SOA。
您应该重组您的代码并创建一个web service,它将向客户端公开方法。这些方法将从客户端获取输入,执行操作并将数据返回给 UI 显示。您可以从现有解决方案中挑选核心业务逻辑类并按原样重用它们。将表示逻辑从业务逻辑中分离出来可能需要付出一些努力,但值得付出努力。
托管 Web 服务后,您可以将其与桌面应用程序或 Web 应用程序一起使用。当然,您需要为 Web 应用程序编写 UI 代码,但这比从头开始编写要容易得多。
【讨论】:
如果您在 Windows 中使用数据库应用程序,那么您可以做一件事。您可以将数据库部署在服务器上,但您想在 ASP.NET 中为其设计一个前端应用程序,以便您可以在安装应用程序的机器上使用您的 Windows 应用程序,并且所有其他人也可以访问它通过网络。
【讨论】: