我有一个C#Windows窗体应用程序。我可以在网上部署它,以便用户可以通过网络访问吗?

时间:2010-12-30 10:38:44

标签: c# windows hosting

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

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

通过RDP用户可以访问Windows应用程序,但此处的问题是更多用户无法同时操作。

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

5 个答案:

答案 0 :(得分:4)

不,你不能像网站那样直接通过网络提供,Windows Forms应用程序直接在客户端机器上运行。

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

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

答案 1 :(得分:2)

您至少可以使用ClickOnce

通过在网络上部署
  

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

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