Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF:在IIS之外托管的服务使IIS成为一种服务_C#_.net_Wcf_Web Services_Iis - Fatal编程技术网

C# WCF:在IIS之外托管的服务使IIS成为一种服务

C# WCF:在IIS之外托管的服务使IIS成为一种服务,c#,.net,wcf,web-services,iis,C#,.net,Wcf,Web Services,Iis,看来微软是自食其果,允许在IIS之外托管WCF服务。在我看来,IIS是相对简单但冗余的服务层。WCF的引入极大地简化了服务托管,使IIS成为一种萎缩。那你觉得呢?我错过了什么?为什么我要将IIS用于WCF服务?因为我看不出原因。如果您想要ie,在IIS中托管有它的优势。使用底层asp.net框架进行身份验证和授权。请记住,这需要将AspNetCompatibilityRequirementsMode属性设置为Required。这还允许您访问HttpContext.Current,以便轻松检索po

看来微软是自食其果,允许在IIS之外托管WCF服务。在我看来,IIS是相对简单但冗余的服务层。WCF的引入极大地简化了服务托管,使IIS成为一种萎缩。那你觉得呢?我错过了什么?为什么我要将IIS用于WCF服务?因为我看不出原因。

如果您想要ie,在IIS中托管有它的优势。使用底层asp.net框架进行身份验证和授权。请记住,这需要将
AspNetCompatibilityRequirementsMode
属性设置为Required。这还允许您访问HttpContext.Current,以便轻松检索post值、cookie等

  • 托管在IIS中的WCF服务与任何其他类型的IIS应用程序(包括ASP.NET应用程序和ASMX)一样进行部署和管理
  • IIS提供进程激活、运行状况管理和回收功能,以提高托管应用程序的可靠性。访问允许您监视web应用程序的状态
  • 与ASP.NET类似,ASP.NET中托管的WCF服务可以利用ASP.NET共享托管模型,其中多个应用程序驻留在一个公共工作进程中,以提高服务器密度和可伸缩性
  • IIS中托管的WCF服务使用与ASP.NET 2.0相同的动态编译模型,这简化了托管服务的开发和部署
      我有点同意。尽管Pauli在他的帖子中提到了许多优势(+1),但我看到了一些不选择IIS作为WCF的原因:

      • Net*绑定:IIS本机不支持非HTTP/S绑定,例如(非常有用)和。你可以使用,但那不再是真正的IIS了。此外,旧版本的IIS没有WAS,因此根本不支持非HTTP/S绑定
      • 配置和部署:IIS(和WAS)的配置开销很大,考虑到您服务的部署场景,这可能是不合理的
      • 依赖项和测试:使用IIS(或WAS)会在这些组件上创建额外的依赖项。IIS因只支持每个Windows版本的特定版本而臭名昭著,使用许多不同版本测试您的服务很容易成为负担。可以在计算机上部署.NET Framework的精确版本,并且自托管可以确保变量数量最少
      • 易用性:上述配置、部署和依赖性问题可能是一个主要的、有时是不必要的学习过程,特别是对于非HTTP/S服务
      • 灵活性:如果您已经有一个.NET应用程序作为Windows服务运行,您可以在其中托管WCF,而不需要额外的管理工作-如果有人已经让您的服务正常运行,那么WCF也会随之启动

      我现在不同意,即Windows Server 2008/2008R2中的IIS 7/7.5。是,在IIS 6中,您有正当理由在IIS之外托管(例如,如果您使用的是net.tcp绑定)。但是IIS为您提供了更好的身份验证、负载平衡、容错、监控等功能,比自托管更容易实现。e、 g.我从未成功地获得SSL,客户端证书在自托管服务中正常工作。或者尝试基于IP地址等进行限制。从WCF 4.0开始,以.svc结尾的服务的URL也无效。另一个优点是大多数系统管理员熟悉IIS管理员管理器,并且可以轻松更改web.config中的所有设置,以获得GUI的操作支持。部署变得更容易,您基本上可以将IIS站点从暂存克隆到生产。通过扩展IIS,您可以获得非常详细的服务呼叫监控和仪表板(如每秒呼叫数、每秒失败呼叫数、平均呼叫持续时间等),工作流托管服务的服务调用持久性等。您还可以从一个中央控制台监控整个公司的所有IIS站点,我认为甚至可以将appfabric与


      简言之,我认为对于企业级托管,应选择IIS和Appfabric作为WCF服务的托管。

      +1-和进程激活、健康管理、回收、共享托管(公共工作进程中的多个应用程序)。。。正是我要找的白皮书!:)隐马尔可夫模型。。。你确定吗?根据这一点,WCF提供了相同的功能(请参见安全部分):“…为ASP.NET Web服务提供的功能也可用于在ASP.NET兼容模式下运行的WCF服务”但本文只讨论了在ASP.NET兼容模式下运行的WCF,这需要IIS。在IIS中托管WCF服务是一个难题,也有很多缺点:依赖应用程序池和回收,无法以任何适当的方式进行控制;IIS指定服务器地址+端口和部分服务URL;不必要的*.svc文件会弄乱您的服务URL…..IIS是Microsoft手头上唯一的通用主机-但我认识的大多数WCF专家(例如Juval Lowy)都会争辩说,永远不要使用IIS来托管生产级WCF服务。我总是将我的生产WCF服务放入自托管NT服务中。@marc_s:+10,如果可以的话。@marc_s:无法编辑我以前的帖子。我只想提一下,NT服务是一种在崩溃时自动启动和重启的好方法。它完全解决了Pauli的公告2。关于内存分析或请求日志记录,WCF提供了什么现成的功能?使用IIS,您可以免费获得一整盘用于分析应用程序运行状况和每个请求/响应的好东西。@Pauli:如果使用HTTP绑定以外的其他绑定,您指的是什么请求日志记录?提供有关日志选项的信息。+1我在回答中的观点是,我看到选择IIS的主要原因是您是否需要Asp.Net兼容模式,这意味着无论如何只需要http绑定