C# 何时以及为什么托管WCF服务?

C# 何时以及为什么托管WCF服务?,c#,asp.net,.net,web-services,wcf,C#,Asp.net,.net,Web Services,Wcf,我已经通过WCF和相关主题,创建了我的第一个WCF服务。它工作得很好,但问题是我不理解托管的概念 不同的教程做不同的事情,比如一些创建单独的控制台应用程序,让它托管服务,然后在Asp.net应用程序中使用它,但有些教程不在任何地方托管服务,只是添加对另一个项目的引用并使用它 我不明白什么时候在哪里主持,为什么 请帮我解决这个问题。我将Visual studio 2013与.net 4和asp.net c一起使用。基本上,WCF服务需要托管在某个地方,以便可以从其他地方访问它。有几种方法可以做到这

我已经通过WCF和相关主题,创建了我的第一个WCF服务。它工作得很好,但问题是我不理解托管的概念


不同的教程做不同的事情,比如一些创建单独的控制台应用程序,让它托管服务,然后在Asp.net应用程序中使用它,但有些教程不在任何地方托管服务,只是添加对另一个项目的引用并使用它

我不明白什么时候在哪里主持,为什么


请帮我解决这个问题。我将Visual studio 2013与.net 4和asp.net c一起使用。

基本上,WCF服务需要托管在某个地方,以便可以从其他地方访问它。有几种方法可以做到这一点,而且可能比我所知道的还要多,但最简单和最常见的两种方法是在IIS Express或IIS Internet Information Server中托管服务

服务器 实现第一个IIS Express的最简单方法是在Visual Studio中右键单击项目,然后选择“在浏览器中查看”。这将在浏览器中打开一个目录列表,在该目录中,您将看到一个以.svc结尾的文件。单击该文件将打开服务描述页面,其中包含如下文本:

您已经创建了一个服务

要测试此服务,您需要创建一个客户端

该页面的URL实际上是客户端需要连接到您的服务的URL。它应该看起来像http://localhost:64835/YourServiceName.svc.

这意味着该服务在本地托管,位于端口64835,并且可供该地址的客户端访问。但是,由于它位于IIS Express中,因此一旦关闭Visual Studio,它将不再可访问,因为它仅作为它的一部分运行

IIS本身 在IIS中托管意味着每当IIS运行时,都可以访问您的服务。一旦安装,它通常会在您登录时启动,并在后台静默运行。当它运行时,您只需访问正确的URL即可启动服务。如果它没有运行,可能需要几秒钟才能启动它。下一次呼叫时,它应该快速响应

请注意,在IIS中,默认情况下应用程序将在端口80上运行,这是浏览器和其他客户端可能检查的默认端口-这意味着您不需要像上面的示例中那样指定它。URL通常会更简单,比如http://localhost/yourservice/yourservice.svc 尽管您可以将其配置到另一个端口或另一个协议,例如https://..,或者其他你喜欢的东西

一旦配置完毕,并且相关端口已打开,您的服务应可供世界其他地区访问

注意:从外部世界来看,URL会有所不同;可能是这样的:

http://123.456.789.123/yourservice/yourservice.svc,如果这是您的IP地址,或 http://yourdomain.com/yourservice/yourservice.svc 如果你已经设置了一个域。
我建议您考虑以下两种类型的托管:

自托管 IIS托管 根据您提出的何时在何处托管以及为什么托管的问题,我想说您仅在测试期间自行托管WCF服务。大多数情况下,在实时/生产环境中不使用自托管。对于生产环境,请使用ISS托管

自托管对于在本地计算机和内部网上进行测试非常有用,而IIS托管则可以在internet上使用


但是,您必须知道,在任何特定情况下,都没有关于特定托管技术使用的规则。有了经验,开发人员将是最好的评判者。

阅读本文了解托管和消费WCF服务-我认为您应该阅读本文。。有些人不在任何地方托管它,只是添加对另一个项目的引用并使用它。这是一个误解,你必须在继续之前纠正它。如果没有主机,WCF服务将无法工作。在某些情况下,您可能不知道如何检查谁是它的主机,但它必须被托管。除此之外,您还有以下托管选项=>WAS、Windows服务、常规控制台应用程序,如果您想使用,即使是WPF/Winforms应用程序也可以用来托管WCF服务。是的,没错:我刚才提到了这两个,因为我想它们是最常见的,并且对于区分临时和更永久的应用程序托管也很有用。很棒,令人惊讶,难以置信的解释。+我需要手动设置web.config,app.config还是自动设置?让我总结一下,澄清我的困惑。1.创建服务2。以可随时访问的速度托管,例如在购买服务器OS 3的windows服务中。因此,如果有人(例如,你想使用它),那么你只需要将ref添加到你的项目中,然后再添加到你的项目中,好吗?在IIS EXPRESS中,你指的是自托管吗?当WCf托管在控制台应用程序、Web/Windows窗体等上时,会使用自托管术语。我对IIS EXPRESS不太了解。 因此,在这方面没有评论。