为什么同时存在System.Net.Http和System.Web.Http命名空间?

Ale*_*zzi 49 .net c# asp.net

这是一个简单的问题,因为我正在研究.NET中可用的各种类库.我注意到有一个System.Net.Http命名空间和System.Web.Http命名空间.

  • 这两个命名空间的用途是什么?
  • 创建两个看似模糊的命名空间的动机是什么?
  • 是否有任何我应该知道的历史记录,或者是"被弃用"的名称空间之一?

System.Net.Http,System.Web.Http

Max*_*oro 25

System.Net.Http用于客户端HTTP编程.System.Web.Http用于服务器端HTTP编程.

  • 该命名约定应该是直观的吗? (10认同)
  • 当我发现服务器代码同时使用两个名称空间时,我对这个问题感到好奇。具体来说,我在服务器中使用System.Net.Http.HttpResponseMessage。所以...我不应该在服务器中使用该类吗? (3认同)
  • 如果这个答案是真实或准确的,那么 HttpResponseMessage 将在 System.Web.Http 中定义,而不是在 System.Net.Http 中。事实上; 这些解释都没有清楚地描述或阐明对差异或两者存在的目的的合理解释,也没有对功能与设施的明确分离进行合理解释。 (2认同)

jmc*_*ney 20

System.Net.Http涉及网络编程,而System.Web.Http专门涉及Web编程.

  • 嗯.是不是特定于网络的HTTP?还是我表现出我的无知?我不能说你的答案是错的,但我不相信你是对的.我也想知道马克斯托罗的答案.是对的吗?除此之外?而不是这个?或者都不是? (2认同)
  • 我不明白这个答案如何提供任何清晰度 (2认同)

Rey*_*gle 11

“System.Web.Http”用于创建WebAPI。

“System.Net.Http”用于消费WebAPI(使用HttpClient类)

  • 这是我发现的最简单的答案@ReyanChougle (2认同)

Dan*_*ing 9

根据我的经验,当您查看自托管webapi服务与IIS托管之间的区别时,两个名称空间之间的分离就变得清晰了.自托管只需要System.Http,而IIS托管需要两者.请参阅"MapHttpRoute"和"MapRoute"之间的区别?进行类似的讨论和有用的链接.

因此,有两个原因是您可以创建一个不依赖于整个ASP.NET堆栈的自托管Web服务.

它们都没有被弃用.

我没有看到微软的官方解释,但这是我能找到的最好的解释.


小智 7

System.Web 严重依赖 IIS Web 服务器,该服务器只能托管在 Windows 机器上。随着 Microsoft 走向开源并开始支持 Linux 和 Mac 等多个平台,他们需要提取独立于 IIS 服务器的功能。因此,System.Net 独立于 IIS 功能并可部署到不同平台。