1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-12-17 20:32:25 +00:00

997 Commits

Author SHA1 Message Date
Jkorf
64250e13db Updated examples 2025-12-17 10:55:48 +01:00
Jkorf
451d38d5e7 Updated to version 10.0.1 CryptoExchange.Net.Protobuf.10.0.1 2025-12-16 11:54:37 +01:00
Jkorf
e11e437bbb Fixed CryptoExchange.Net reference 2025-12-16 11:54:08 +01:00
Jkorf
b8a1ad798d Updated to version 10.0.0 CryptoExchange.Net.Protobuf.10.0.0 2025-12-16 11:49:45 +01:00
Jkorf
4a851c44f2 Updated to version 10.0.0 CryptoExchange.Net.10.0.0 2025-12-16 11:31:42 +01:00
Jan Korf
d079796020
Websocket performance update (#261)
Performance update:

Authentication
	Added Ed25519 signing support for NET8.0 and newer
	Added static methods on ApiCredentials to create credentials of a specific type
	Added static ApiCredentials.ReadFromFile method to read a key from file
	Added required abstract SupportedCredentialTypes property on AuthenticationProvider base class

General Performance
	Added checks before logging statements to prevent overhead of building the log string if logging is not needed	
	Added ExchangeHelpers.ProcessQueuedAsync method to process updates async
	Replaced locking object types from object to Lock in NET9.0 and newer 
	Replaced some Task response types with ValueTask to prevent allocation overhead on hot paths
	Updated Json ArrayConverter to reduce some allocation overhead 
	Updated Json BoolConverter to prevent boxing
	Updated Json DateTimeConverter to prevent boxing
	Updated Json EnumConverter caching to reduce lookup overhead
	Updated ExtensionMethods.CreateParamString to reduce allocations
	Updated ExtensionMethods.AppendPath to reduce overhead	

REST 
	Refactored REST message processing to separate IRestMessageHandler instance
	Split RestApiClient.PrepareAsync into CheckTimeSync and RateLimitAsync
	Updated IRequest.Accept type from string to MediaTypeWithQualityHeaderValue to prevent creation on each request
	Updated IRequest.GetHeaders response type from KeyValuePair<string, string[]>[] to HttpRequestHeaders to prevent additional mapping
	Updated IResponse.ResponseHeaders type from KeyValuePair<string, string[]>[] to HttpResponseHeaders to prevent additional mapping
	Updated WebCallResult RequestHeaders and ResponseHeaders types to HttpRequestHeaders and HttpResponseHeaders	
	Removed unnecessary empty dictionary initializations for each request
	Removed CallResult creation in internal methods to prevent having to create multiple versions for different result types 

Socket
	Added HighPerformance websocket client implementation which significantly reduces memory overhead and improves speed but with certain limitations
	Added MaxIndividualSubscriptionsPerConnection setting in SocketApiClient to limit the number of individual stream subscriptions on a connection
	Added SocketIndividualSubscriptionCombineTarget option to set the target number of individual stream subscriptions per connection
	Added new websocket message handling logic which is faster and reduces memory allocation
	Added UseUpdatedDeserialization option to toggle between updated deserialization and old deserialization 
	Added Exchange property to DataEvent to prevent additional mapping overhead for Shared apis
	Refactored message callback to be sync instead of async to prevent async overhead
	Refactored CryptoExchangeWebSocketClient.IncomingKbps calculation to significantly reduce overhead
	Moved websocket client creation from SocketApiClient to SocketConnection	
	Removed DataEvent.As and DataEvent.ToCallResult methods in favor of single ToType method
	Removed DataEvent creation on lower levels to prevent having to create multiple versions for different result types
	Removed Subscription<TSubResponse, TUnsubResponse> as its no longer used

Other
	Added null check to ParameterCollection for required parameters 
	Added Net10.0 target framework
	Updated dependency versions
	Updated Shared asset aliases check to be culture invariant
	Updated Error string representation
	Updated some namespaces
	Updated SymbolOrderBook processing of buffered updates to prevent additional allocation
	Removed ExchangeEvent type which is no longer needed
	Removed unused usings
2025-12-16 11:27:49 +01:00
Jonnern
f125bc88b0
Pass CancellationToken to Content.ReadAsStreamAsync (#262) 2025-12-15 16:33:06 +01:00
Jkorf
f3d535f286 Fixed incorrect check for TimeFilterSupport in combination with StartTime parameter for some Shared endpoints 2025-11-20 14:03:59 +01:00
Jkorf
6e8c6feec2 Added dotnet 10 target framework, updated package reference versions 2025-11-13 10:10:55 +01:00
Jkorf
84b0444caf Added implementation for async processing of (websocket) updates 2025-11-12 11:19:40 +01:00
Jkorf
4be986ebe7 Added resolver name to datetime/bool parser warnings 2025-11-11 08:57:57 +01:00
Jkorf
21872f818a Updated to version 9.13.0 CryptoExchange.Net.Protobuf.9.13.0 2025-11-10 13:30:33 +01:00
Jkorf
4e7c45d758 Updated CryptoExchange.Net to version 9.13.0 2025-11-10 13:27:44 +01:00
Jkorf
0e55e5f065 Updated to version 9.13.0 CryptoExchange.Net.9.13.0 2025-11-10 13:15:48 +01:00
Jkorf
b1c5cf318a Cleanup 2025-11-10 13:12:16 +01:00
Jkorf
9d94a24862 Added IExchangeService interface 2025-11-10 09:15:29 +01:00
Jkorf
6cf9684f55 Added SharedTickerType for defining time used for ticker calculations by the API 2025-11-10 09:15:20 +01:00
Jkorf
8043a48c49 Fixed incorrect exchange name in static logger when using multiple libraries 2025-11-10 09:14:14 +01:00
Jkorf
7d657dd533 Updated examples 2025-11-03 15:29:19 +01:00
Jkorf
1bfdec1484 Added SharedSymbolModel base class to SharedFuturesKline, SharedKline, SharedTrade models 2025-11-03 11:25:10 +01:00
Jkorf
8d5b6a53f3 Updated to version 9.12.0 CryptoExchange.Net.Protobuf.9.12.0 2025-11-03 10:39:05 +01:00
Jkorf
ad97102e7c Updated CryptoExchange.Net version 2025-11-03 10:38:53 +01:00
Jkorf
d8dc121386 Updated to version 9.12.0 CryptoExchange.Net.9.12.0 2025-11-03 09:48:29 +01:00
Jkorf
10c3868c00 Revert "Updated to version 9.11.0"
This reverts commit 411ba00a82d42d833df36648b88ab7b6104d5437.
2025-11-03 09:46:55 +01:00
Jkorf
411ba00a82 Updated to version 9.11.0 2025-11-03 09:45:41 +01:00
JKorf
c1b2b62dbc Added AliasType to specify only one way conversion for AssetAliases 2025-11-02 15:17:44 +01:00
JKorf
3960cab7a7 Merge branch 'master' of https://github.com/JKorf/CryptoExchange.Net 2025-11-02 11:41:30 +01:00
JKorf
34e9447e55 Added constant for selecting a USD asset for use in a Shared API/SharedSymbol 2025-11-02 11:41:26 +01:00
Jkorf
9d3295acc7 Removed some unhelpful verbose logs 2025-10-31 15:08:14 +01:00
Jkorf
995cd3d84c Updated to version 9.11.1 CryptoExchange.Net.Protobuf.9.11.1 2025-10-30 14:33:26 +01:00
Jkorf
919cdf0075 Updated CryptoExchange.Net version 2025-10-30 14:32:41 +01:00
Jkorf
d181c9cfc1 Updated to version 9.11.0 CryptoExchange.Net.Protobuf.9.11.0 2025-10-30 14:21:30 +01:00
Jkorf
5943142c44 Updated to version 9.11.0 CryptoExchange.Net.9.11.0 2025-10-30 13:47:48 +01:00
Jkorf
dbc430e838 Added StaticLogger to LibraryHelpers, updated warning logging for converters to use StaticLogger 2025-10-30 12:52:05 +01:00
Jkorf
7413d03d31 Added client reference helper to LibraryHelpers 2025-10-30 11:25:27 +01:00
Jkorf
dd60067684 Updated examples 2025-10-27 12:00:51 +01:00
Jkorf
04e4ddf525 Fixed exception when initial trade snapshot has no items in TradeTracker 2025-10-27 11:59:54 +01:00
Jkorf
99bf6d7c75 Added Upbit reference 2025-10-27 11:44:12 +01:00
Jkorf
99a203933c Added missing release notes 2025-10-15 13:59:10 +02:00
Jkorf
b43d2a2040 Updated to version 9.10.0 CryptoExchange.Net.Protobuf.9.10.0 2025-10-15 13:36:33 +02:00
Jkorf
ba9c406def Updated CryptoExchange.Net version 2025-10-15 13:34:50 +02:00
Jkorf
f5f4d50cc9 Updated to version 9.10.0 CryptoExchange.Net.9.10.0 2025-10-15 13:24:25 +02:00
Jkorf
f87506b490 Added ITransferRestClient, updated Shared IBalanceRestClient to use SharedAccountType 2025-10-15 13:21:00 +02:00
Jkorf
f6f9a53ce5 Added ClientOrderId property to SharedUserTrade model 2025-10-13 15:42:27 +02:00
Jkorf
61130ef54e Added long overloads for parse methods in DateTimeConverter 2025-10-13 11:15:58 +02:00
Jkorf
e8bcbd59be Updated DateTimeConverter to work primarily with decimal values instead of doubles to fix some floating point parsing issues 2025-10-13 09:06:14 +02:00
Jkorf
d433ff7475 Updated to version 9.9.0 CryptoExchange.Net.Protobuf.9.9.0 2025-10-06 13:47:21 +02:00
Jkorf
71957037d0 Updated CryptoExchange.Net version to 9.8.0 2025-10-06 13:45:47 +02:00
Jkorf
bcdcdbbd4e Updated to version 9.9.0 CryptoExchange.Net.9.9.0 2025-10-06 13:26:23 +02:00
Jkorf
1ece13f5bc Updated socket Subscription status handling, fixing timing issue for connection events and adding SubscriptionStatusChanged event 2025-10-06 13:22:40 +02:00