0.4.0
What's Changed
-
Add support for .NET 9.0 (.NET 9.0 RC1).
-
QUIC transport
-
Add new
KeepAliveInterval
option to IceRpc.Transports.Quic.QuicClientTransportOptions. This new option is implemented with .NET 9.0 and has no effect with .NET 8.0.In .NET 8.0, .NET QUIC does not keep connections alive and does not provide an option to keep connections alive. For example, if you send a request to a server and the server takes a long time to return the corresponding response (more than the connection's idle timeout, which is by default 30 seconds) and there is no other activity (request/response) on this connection, .NET QUIC aborts the connection because it remained idle for too long. This is naturally an undesirable behavior, with unfortunately no good solution in .NET 8.0.
In .NET 9.0, .NET QUIC provides the option to keep a connection alive with the
KeepAliveInterval
option (onSystem.Net.Quic.QuicConnectionOptions
). This option instructs .NET QUIC to send a ping everyKeepAliveInterval
to keep the connection alive. The newKeepAliveInterval
ofIceRpc.Transports.Quic.QuicClientTransportOptions
configures this option for client connections. The default value is 15 seconds (half of the default idle timeout). This way, with the default idle timeout and keep-alive interval, the previous scenario (a server that takes a long time to return a response) works perfectly fine and the connection is not aborted. If you reduce the idle timeout, you should also reduce thisKeepAliveInterval
to about half the idle timeout. IceRPC sets theKeepAliveInterval
to infinite for server connections; in other words, IceRPC servers never send QUIC pings to clients.
-
-
Slice
- Improve the mapping for fields in structs, classes and exceptions: fields with a non-optional Slice type mapped to a C# reference type are now
required
. - (Slice1) Simplify mapping for Slice classes and exceptions. A Slice class or exception is now mapped to C# class with a public parameterless constructor (and other constructors). This parameterless constructor is used by the ZeroC.Slice activator for decoding.
- Improve the mapping for fields in structs, classes and exceptions: fields with a non-optional Slice type mapped to a C# reference type are now
-
Slice and Protobuf compilation
- Add build telemetry. IceRPC collects anonymous telemetry data when you compile Slice files or Protobuf files. You can find detailed information about what data is collected and how to opt-out in the READMEs for IceRpc.Slice.Tools and IceRpc.Protobuf.Tools.
-
Ice interop
- Changed the default value for the
EnableIceIdleCheck
option on IceRpc.ConnectionOptions totrue
. See the documentation of this option for full details.
- Changed the default value for the
Full Changelog: v0.3.1...v0.4.0