Upgraded the target framework from .NET 6 to .NET 8.
Updated all NuGet packages to their latest stable versions.
FIX Antenna .NET Core 1.2.2
FIX Antenna .NET Core 1.2.2 is released on .
Fixed Bugs
Fixed the issue when the old logs could not be removed from the storage when storageCleanupMode=Delete and storageFactory=Epam.FixAntenna.NetCore.FixEngine.Storage.SlicedFileStorageFactory.
FIX Antenna .NET Core 1.2.1
FIX Antenna .NET Core 1.2.1 is released on .
Fixed Bugs
Fixed the issue when the race condition occurred on accepting the new FIX connection.
FIX Antenna .NET Core 1.2.0
FIX Antenna .NET Core 1.2.0 is released on .
New Features and Improvements
The ability to load settings from the fixengine.properties file located in any directory via Config.ConfigurationDirectory parameter was added. The value of the Config.ConfigurationDirectory parameter can be specified as a path in the client's code.
New CHAR override-method type for EntryImple.AddTag method was added.
For example, now the name of the sessions.testSession.senderCompID property can be written as:
sessions.testSession.senderCompId
Sessions.TestSession.SenderCompID
SESSIONS.testSession.senderCompID
Other Changes
Stopped testing TLS 1.0 and 1.1 versions.
Fixed Bugs
Fixed the issue when the outgoing Logon message did not contain the 141=Y field when the incoming Logon message contained it and the ignoreResetSeqNumFlagOnReset was set to 'true'.
Fixed the issue when FIX Antenna .NET Core unexpectedly sent not-required TestRequests messages.
Fixed the issue when FIX Antenna .NET Core added misleading log entry "Skipping message" when TestRequest messages were processed correctly.
Fixed the issue when the ByteByffer.Add(char) method was encoding-dependent.
FIX Antenna .NET Core 1.1.0
FIX Antenna .NET Core 1.1.0 is released on .
New Features and Improvements
The Scheduler was implemented to schedule start and stop tasks for initiator/acceptor sessions, and for all incoming connections on the engine level.
The resetSeqNumFromFirstLogon property was added. It determines whether sequence numbers should be accepted from the incoming Logon message. This option allows to avoid sequence numbers handshake when it is not required.
Fixed Bugs
Fixed the issue when FIX Antenna .NET Core crashed on receiving an incoming HTTP connection.
FIX Antenna .NET Core 1.0.2
FIX Antenna .NET Core 1.0.2 is released on.
Source code and documentation are available on GitHub under an Apache 2.0 license.
Breaking changes
API of version 1.0 is not compatible with 0.9.x versions.
All namespaces were reorganized and renamed with the 'Epam.' prefix.
Many methods converted to properties.
The number of binaries was reduced.
New Features and Improvements
Dictionaries in QuickFIX format can be used to start FIX sessions.
The custom dictionary can be assigned to a specific FIX session in the fixengine.properties file.
Configuration parameters now can be defined using environment variables.
The tag generation tool generates a set of FIX-dictionary tags as constants inside a DLL file. Thus, the human-readable names of the tags and tag values can be used instead of their numbers and numeric values.
FA .NET Core API now supports asynchronous session connection. The ConnectAsync() method is added to the IFixSession interface.
The new optional seqNumLength property was added to define the minimal length of the MsgSeqNum(34) field.
If the specified length exceeds the actual length, the actual length will be prepended with leading zeroes.
The new FixMessage.TryGetLongByIndex API method returns 'true' when the specified tag exists in the message and its value can be parsed as long, the parsed value is returned as out long value.
FIX Antenna .NET Core 0.9.3
FIX Antenna .NET Core 0.9.3 is released on .
New Features and Improvements
The new maskedTags configuration property is added. It allows users to specify tags whose values must be masked with asterisks in the session and application log files. Masking is required to obfuscate sensitive information.
Session logins are not obfuscated by default, but this option can be configured.
The '<masked value>' placeholder from any 'Password=<masked value>' text block will be masked with three asterisks in the application logs.
FIX Antenna .NET Core displays hints for all public properties and API methods while working in Visual Studio:
The new runClientRoundTripLatencyBM and runServerRoundTripLatencyBM samples are added to the package to measure FA .NET Core performance.
These samples are located in the following folders accordingly:
\Examples\Latency\Sender
\Examples\Latency\Server
FIX log index files from the FileSystemStorageFactory and MmfStorageFactory are now compatible with the Log Replicator tool.
Fixed Bugs
Fixed the issue when FIX Antenna .NET Core didn't send the SendingTime(52) tag in the message body for the Sequence Reset(35=4) message.
Fixed the issue when the MmfStorageFactory could not initialize the index file when FIX Antenna .NET Core was restarted.
FIX Antenna .NET Core 0.9.2
FIX Antenna .NET Core 0.9.2 is released on .
FIX Antenna .NET Core 0.9.2 is now compatible with the latest 4.8 .NET framework version. Testing was performed on .NET Core 3.1 and .NET Framework 4.8 platform versions.
The 'obj' and 'build' folders must be manually cleaned in the sample application's folder if there is a need to sequentially run the same sample on a different target platform.
New Features and Improvements
Optimized memory allocation on message receiving.
Ability to choose the IP protocol version between IPv4 or IPv6. Dual mode is used by default.
Fixed Bugs
Fixed the issue when FixServer didn't shut down on calling the Stop() function when FixSessionManager was not explicitly stopped.
FIX Antenna .NET Core 0.9.0
FIX Antenna™ .NET Core is a high-performance and low-latency .NET FIX Engine.
The engine is based on .NET Standard 2.0 and is compatible with any platform that supports .NET Standard 2.0 and further.
The Engine is intended to be used under .NET Core starting from version 3.1 and further and was tested under this platform.
One of the key benefits of using .NET Standard and .NET Core is the ability to use Engine under different OS: Windows, Linux, Mac.
Requirements & Compatibility
Libraries compatibility: any OS with a .NET platform that supports .NET Standard 2.0 and further (.NET Core is preferable).
Samples compatibility: any OS with installed .NET Core 3.1 and further.
Samples and libraries were tested with .NET Core under Windows 10 and Linux Ubuntu 16.04.
Customizable FIX protocol with user-defined tags and message types.
Sequence numbers management.
Microseconds in FIX tags (MIFID II).
Smart resend request handling.
Validation against FIX dictionaries.
Unregistered acceptors handling.
Standard FIX routing based on DeliverTo and OnBehalfOf fields.
Store messages while disconnected.
Switch to the backup connection.
Round-robin reconnects option to multiple backup destinations for an initiator session.
Administrative Plugin for Fix Antenna.
Sessions Processing
Session Qualifiers
Multiple FIX sessions
Initiator/Acceptor Sessions
Auto-reconnect Session
Transient Sessions
Restore state after failure (Persistent Session)
Pluggable session level
Storage
Supported Storage Types:
Null storage
In-memory storage
Persistent storage
Persistent Memory Mapped based storage
Storage management (get a message by seq. num, get creation time)
Performance Tuning
Ability to enable or disable Nagle's algorithm to minimize latency or maximize throughput
Ability to manipulate the internal outgoing queue size to get maximum throughput (process messages in batch) or lower latency (minimal time in queue)
Ability to use different levels of message validation to balance between reasonable correctness and good performance:
Well formedness validation
Validation of allowed message fields
Validation of required message fields
Validation of message fields order
Validation of duplicated message fields
Validation of field values according to defined data types
Validation of repeating group fields
Conditionally required fields
Ability to choose the sending mode. Synchronous sending gives lower latency, but asynchronous is preferable for getting a better throughput
Ability to configure CPU affinity to enable the binding and unbinding of a thread to a CPU, so that the thread will execute only on the designated CPU rather than on any CPU
Setting send and receive socket buffer sizes for TCP transport options
Configuration
Supports configuration in properties file format
Ability to configure default behavior and custom sessions in the same configuration file
Monitoring and administration
Proprietary built-in remote monitoring and administrative interface for sessions monitoring and management
Public API to override and/or extend existing administrative instructions
Rich monitoring and administration GUI (FIXICC) out of the box
Message composition API
Provides the following functionality:
Creating a message from a raw FIX string (parse)
Serializing a FIX object message to a raw FIX string
Adding, removing, modifying FIX fields, and repeating groups
The ability of internal pooling to reduce memory allocations
FIX flat message model - generic model to work with the abstract FIXMessage class via fields and groups getters and setters, which gives the highest performance
RG API - API for working with repeating groups. Similar to FIX flat message model but allows to work with structures
Prepared messages - message template for the faster sending the messages with the same structure but with different values
Efficient getters and setters for working with values as with primitive type to reduce garbage production
Security
Logon Customization
Standard FIX authorization utilizing username and password fields in FIX Logon message
Strategies for accepting incoming sessions:
Auto-accept incoming sessions (to simplify development and testing)
Auto-decline non-pre-configured sessions
IP range based whitelisting for incoming connections
CME Secure Logon support
Options
Option "disconnectOnLogonHeartbeatMismatch"
"resetThreshold" configuration option (handling of counterparties that ignores sequence reset and continues to send old sequence numbers)
Option "resetQueueOnLowSequence"
Services
Licensing system
Logging to text files
Logging to the socket (Splunk) via NLog
ASCII codes in FIX logs file names
Configuration of session parameters from .XML
Packaging
A zip archive package is provided
Sample EchoServer
Sample Connect to gateway
User’s guide
Reference Manual (with a description of all classes and methods)