Imported from previous forum
Can someone explain to a novice what functions a FIX engine performs vs. the functions that peripheral software products perform.
Thanks, Mike Carr
Refer to slides 45-46 from part 1 of a 4 part presentation slide set (From Feb 2001) within "More Information", "Presentations from Conferences" on the FIX website.
http://www.fixprotocol.org/WORKGROUPS/928951581/ScottAtwell-20010226-AdvancingFIXStandards.pdf
> Can someone explain to a novice what functions a FIX engine performs vs. the functions that peripheral software products perform.
>
> Thanks, Mike Carr
>
[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> Can someone explain to a novice what functions a FIX engine performs vs. the functions that peripheral software products perform.
I’d like to add that the FIX protocol itself doesn’t define any of this. One doesn’t even have to have a separate engine and application.
FIX defines what goes over the wire, both from a session and application, or business, level. How one chooses to break up the required tasks among various software components, and the interfaces between said components, is entirely outside the scope of the FIX protocol so long as what goes over the wire conforms to the FIX spec.
That said, a market of FIX engine vendors has formed, and the split between the FIX session layer and the application layer is usually the line of demarcation, however this line can get blurry. Engines generally assign sequence numbers, compute checksums, and handle all session-level messages like Heartbeats, Test Requests, sending and responding to Resend Requests, etc.
Still, some variation and grey areas exist. For example, the spec allows a party to skip over application messages on a Resend Request. This is useful to prevent old orders from being replayed. But the business application generally needs to know when this happen. Does a FIX engine support this? How does such integration work?
Similarly, FIX engines may differ widely based on the types of validation done by the engine. This can be helpful, since it helps eliminate garbage data entering the application. But at the same time, if non-standard extensions are made to the protocol by both parties, one party’s vendor-supplied engine might refuse to pass these extensions.