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

时间:2014-02-10 00:49:30

标签: c# asp.net .net

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

  • 这两个命名空间的用途是什么?
  • 创建两个看似模棱两可的名称空间的动机是什么?
  • 是否有任何我应该了解的历史记录,或者是其中一个名称空间"已弃用"?

System.Net.HttpSystem.Web.Http

5 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:17)

System.Net.Http涉及网络编程,而System.Web.Http则专门针对网络编程。

答案 2 :(得分:5)

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

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

它们都没有被弃用。

我没有看到微软的正式解释,但这是我能找到的最好的。

答案 3 :(得分:4)

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

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

答案 4 :(得分:1)

System.Web在很大程度上取决于IIS Web服务器,该服务器只能在Windows计算机上托管。随着Microsoft走向开源并开始支持Linux和Mac等多种平台,他们需要提取独立于IIS服务器的功能。结果,System.Net独立于IIS功能,并且可以部署到不同的平台。