为什么从 .NET 中删除了 HttpWebRequest 和 HttpWebResponse 的构造函数?
Why were constructors for HttpWebRequest and HttpWebResponse removed from .NET?
也许产品代码实例化这些类型没有意义,但是构造函数的弃用使得使用 WebRequest/Response
的 Http
实现的单元测试客户端比它更麻烦应该。我认为取消构造函数没有任何价值,拥有它们也很明显,那么弃用它们的技术原因是什么?
嗯,为什么你需要 HttpWebRequest
的构造函数?与 WebRequest.Create
相比,我看不出它有任何偏好,这被建议作为从一开始就在所有版本中创建此类请求的首选方式。
此方法是 return 将 HttpWebRequest
转换为 WebRequest
,但您仍然可以根据需要将其转换为直接类型。如果你再提供一些其他的协议,如file://
or ftp://
,它会return对应的类型。
我认为这个 Obsolete list 是将使用的所有平台标准化 .NET Core 的一部分,并且维护 WebRequest
创建会简单得多在一点代码中。
更新:
我想你已经看过这篇关于 deriving the WebRequest
class 的文章,所以我在这里写下我的另一份意见:
当你从WebRequest
中脱颖而出时,你需要两点:
- 实现
IWebRequestCreate
接口[=52=]
- 使用
WebRequest.RegisterPrefix
方法注册class
正如 MSDN 所说:
The HttpWebRequest
class is registered to service requests for HTTP and HTTPS schemes by default. Attempts to register a different WebRequest
descendant for these schemes will fail.
所以 Microsoft 想要控制面向 http
和 https
的 classes,并且不希望任何人用自己的功能替换此功能。我认为出于某些安全考虑,可以这样做。悲伤但真实。
也许产品代码实例化这些类型没有意义,但是构造函数的弃用使得使用 WebRequest/Response
的 Http
实现的单元测试客户端比它更麻烦应该。我认为取消构造函数没有任何价值,拥有它们也很明显,那么弃用它们的技术原因是什么?
嗯,为什么你需要 HttpWebRequest
的构造函数?与 WebRequest.Create
相比,我看不出它有任何偏好,这被建议作为从一开始就在所有版本中创建此类请求的首选方式。
此方法是 return 将 HttpWebRequest
转换为 WebRequest
,但您仍然可以根据需要将其转换为直接类型。如果你再提供一些其他的协议,如file://
or ftp://
,它会return对应的类型。
我认为这个 Obsolete list 是将使用的所有平台标准化 .NET Core 的一部分,并且维护 WebRequest
创建会简单得多在一点代码中。
更新:
我想你已经看过这篇关于 deriving the WebRequest
class 的文章,所以我在这里写下我的另一份意见:
当你从WebRequest
中脱颖而出时,你需要两点:
- 实现
IWebRequestCreate
接口[=52=] - 使用
WebRequest.RegisterPrefix
方法注册class
正如 MSDN 所说:
The
HttpWebRequest
class is registered to service requests for HTTP and HTTPS schemes by default. Attempts to register a differentWebRequest
descendant for these schemes will fail.
所以 Microsoft 想要控制面向 http
和 https
的 classes,并且不希望任何人用自己的功能替换此功能。我认为出于某些安全考虑,可以这样做。悲伤但真实。