你能从Windows窗体应用程序中暴露XML Web服务吗?

4
这可能听起来像是一个愚蠢的问题,但当我搜索webservices时,我没有找到任何有关如何在Windows表单应用程序中创建它们的信息。
唯一的结果是如何通过创建.aspx页面来创建和公开它们。
所以我的问题是:你能在Windows表单应用程序中创建和公开webservices吗?还是它们与.aspx页面有些联系?
谢谢!
后续编辑:有没有在.cs文件而不是.aspx文件中创建webservice的示例?

这个SO 问题可能会有所帮助,看起来就是你所要求的,假设采用WCF方法。 - Jim L
3个回答

2

我想说的是,WebService 是你的应用程序的服务接口,而不是应用程序本身。

如果要在除了 IIS(托管 ASP.Net 页面的地方)之外的其他托管环境中公开 WebService,则可以使用以下方法:

如果你正在使用 Microsoft 的 WCF 工具包,则需要创建一个“ServiceHost”(实际类名)。该类可用于托管你的 WebService 实现。这可以在任何应用程序中完成,例如 ASP.Net 页面、Winform、NT 服务甚至控制台应用程序。

希望这可以帮助到你。


1
首先,这绝对不是一个愚蠢的问题。
它们与.asp页面有什么关联吗?
Web服务与任何其他应用程序都没有关联。一个Web服务可以是一个独立的应用程序。您可以将Web服务作为解决方案的一部分创建,该解决方案可能包含任何其他类型的应用程序,如Asp.Net WebApplication,或者根本没有其他应用程序。
您可以从以下任何一种方式使用Web服务,但不限于:
- 控制台应用程序 - Asp.Net Web应用程序 - Windows窗体应用程序
这篇文章可能会有所帮助:
- [通过C#控制台应用程序调用Web服务](http://www.eggheadcafe.com/community/aspnet/2/10113412/calling-webservice-throug.aspx)

感谢您的快速回复。是否有在.cs文件中创建webservice而不是.aspx文件的示例? - Alex
看起来他在询问关于托管W/S,而不仅仅是消费... 据我所知,WCF是最短的路径。 - Jim L
-1:链接的文章不仅是关于使用 Web 服务而不是调用它的,而且该文章还涉及 ASMX Web 服务,这被微软认为是“遗留技术”。 - John Saunders
一个 Web 服务并不是一个应用程序,即使在传统的 ASP.NET/ASMX 中也不是(它只是由 HTTP 处理程序实例化的类)。你可以使用 netTcpBindingServiceHost 在 Windows Forms 应用程序中托管 WCF 服务。虽然不确定为什么你会想这样做,但说 Web 服务需要成为专用应用程序是错误的,将其作为 Windows 服务的一部分进行托管非常普遍。 - Aaronaught

1

传统上,使用 asp.net asmx 文件在 iis 中托管实现 .net Web 服务。随着 .net 3 的推出,WCF 允许在各种 .net 应用程序和服务中托管不同类型的服务(不仅仅是 Web 服务)。WCF 是一组复杂而强大的技术,我发现 this book 对我很有帮助。


WCF之所以更加复杂,有两个原因:1)他们想要包含大量的选项;2)不需要在IIS中进行托管,因此它必须承担一些基础设施职责。然而,正是由于这个最后一点,你可以在WinForms中托管它。我自己没有做过,但曾经参与过一个项目,其中就使用了它。它还允许你问一个问题:“我真的想使用SOAP或其他消息介质吗?” - Jim L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接