Winforms / WPF应用程序可以充当HTTP服务器吗?

时间:2010-03-13 19:58:09

标签: .net http

我有一个用Winforms编写的桌面。现在我要求人们想要从其他机器访问数据。首先,我想到了一个常规的客户端/服务器应用程序,但现在我认为最好是应用程序可以充当HTTP服务器并将HTML发送到连接的浏览器。

是否有人知道是否有可用于向应用添加HTTP服务器功能的库?理想情况下,它可以提供ASP.NET内容。

5 个答案:

答案 0 :(得分:4)

要从您自己的应用程序(没有IIS)托管ASP.NET内容(例如.aspx页面),请使用System.Web.Hosting命名空间中的类。

规范示例用法是Visual Studio附带的独立测试Web服务器(基于“Cassini”)。 “Cassini”的源代码可在此处获取:http://blogs.msdn.com/dmitryr/archive/2008/10/03/cassini-for-framework-3-5.aspx

这是一篇关于这个主题的(有点过时的)MSDN文章:http://msdn.microsoft.com/en-us/magazine/cc188791.aspx

期望您的服务器像IIS一样强大,这是一个很长的过程。因此,请务必仔细评估您的需求并管理您的期望:)

答案 1 :(得分:2)

正如Jon所说,您可以使用HttpListener来实现HTTP服务器。有关提供ASP.NET内容的信息,请参阅System.Web.Hosting命名空间。

您的设计需要注意的一件事是,只有在应用程序运行时,您的HTTP服务器才可用。因此,当桌面应用程序的用户关闭它或注销时,其他人将无法再通过您的Web界面访问数据。因此,您可能需要重新考虑您的方法,而是将数据访问功能分解为一个单独的DLL,然后您可以从IIS托管的ASP.NET应用程序中调用它。

答案 2 :(得分:1)

你绝对可以这样做。看看HttpListener。我不认为它可以很容易地主持完整的ASP.NET,虽然我确信有办法做到这一点。发送简单的HTML并不难。

话虽如此,我不确定客户端/服务器是不是更好的模型:

  • 其他人如何知道连接哪台机器?
  • 如果您在其他人使用该应用程序时意外关闭该应用程序该怎么办?
  • 如果要关闭机器或重启机器怎么办?
  • 运行起来可能比直接的ASP.NET应用程序更复杂。

基本上所有工具都已准备就绪,可以轻松地在服务器上托管ASP.NET。在这里合并客户端和服务器的好处在哪里?

答案 3 :(得分:0)

您可能会考虑将HttpListener代码分解出来并开发在您的计算机启动时启动的Windows服务。这将允许您以长期的方式提供HTML,而无需始终运行您的桌面应用程序,也无需购买IIS等Web服务器。

如果您希望允许与客户端更广泛的异构性进行通信而不仅仅是浏览器,请查看WCF。使用WCF,任何.NET应用程序都可以托管服务; beit Winforms,WPF,Windows服务,ASP.NET,控制台等,允许通过各种媒介HTTP,TCP,命名管道等进行通信。

答案 4 :(得分:0)

我建议采用不同的方法:更改您的桌面应用程序以与sql server express等商业数据库服务器通信,然后构建您的网站以与该数据库通信。

相关问题