SocketsHttpConnectionFactory was proposed as part of #1793.
Its original intent was to provide a number of callbacks for users to customize things without understanding all of the ConnectionFactory stuff. However, API review removed all of these callbacks, making this class largely redundant with SocketsConnectionFactory.
The only remaining features it has are:
- it pulls the
HttpRequestMessage out of the property bag for the user.
- it turns Nagle off.
We should consider reducing our API surface by doing the following:
- Remove
SocketsHttpConnectionFactory.
- Update
SocketsConnectionFactory to default its sockets with Nagle off.
- This may cause some confusion to people expecting the default
Socket behavior. But, it may be okay to be opinionated here, and most experts end up turning it off anyway.
- Update the
DnsEndPointWithProperties type to expose an HttpRequestMessage property.
Old usage example:
class MyCustomFactory : SocketsHttpConnectionFactory
{
public override ValueTask<Connection> EstablishConnectionAsync(HttpRequestMessage message, EndPoint endPoint, IConnectionProperties properties, CancellationToken cancellationToken)
{
// ...
}
}
New usage example:
class MyCustomFactory : SocketsConnectionFactory
{
public override ValueTask<Connection> ConnectAsync(EndPoint endPoint, IConnectionProperties properties, CancellationToken cancellationToken)
{
if(!properties.TryGet(out HttpRequestMessage message)) throw new Exception("Expected HttpRequestMessage property");
// ...
}
}
CC @geoffkizer @karelz this came about from a discussion with @stephentoub. I feel we can treat this as low priority, but it is a low-effort way to improve API surface.
SocketsHttpConnectionFactorywas proposed as part of #1793.Its original intent was to provide a number of callbacks for users to customize things without understanding all of the
ConnectionFactorystuff. However, API review removed all of these callbacks, making this class largely redundant withSocketsConnectionFactory.The only remaining features it has are:
HttpRequestMessageout of the property bag for the user.We should consider reducing our API surface by doing the following:
SocketsHttpConnectionFactory.SocketsConnectionFactoryto default its sockets with Nagle off.Socketbehavior. But, it may be okay to be opinionated here, and most experts end up turning it off anyway.DnsEndPointWithPropertiestype to expose anHttpRequestMessageproperty.Old usage example:
New usage example:
CC @geoffkizer @karelz this came about from a discussion with @stephentoub. I feel we can treat this as low priority, but it is a low-effort way to improve API surface.