Imported from previous forum
I am new to FIX protocol. I had done some development for exchange gateway in c++ using ad hoc protocol setup. Now i wanted to migrate all my gateway server in FIX 4.2 protocol. and i want to do it from scratch .
Please advice me is it possible to develop FIX engine in c#?if yes then how much performance will affect compare to c++ ?
As of now i was following FIX forum i found every body recommending C++ and Java.
It is definitely possible to implement a FIX engine in C#, it can be done in any language that supports TCP sockets.
It will be very hard for anyone to give you a clear answer as to the performance impact of using C# instead of C++. A well written C# engine will outperform a C++ engine that was not written and tuned quite as well. Unless your team is all C++ experts, performance is absolutely critical, you have clearly defined (and written) performance goals and your development schedule has the extra time C++ will require, I’d advise using C#.
That said, why are you building a FIX engine from scratch? Why not using QuickFIX with the .NET bindings?
It is definitely possible to implement a FIX engine in C#, it can be
done in any language that supports TCP sockets.It will be very hard for anyone to give you a clear answer as to the
performance impact of using C# instead of C++. A well written C# engine
will outperform a C++ engine that was not written and tuned quite as
well. Unless your team is all C++ experts, performance is absolutely
critical, you have clearly defined (and written) performance goals and
your development schedule has the extra time C++ will require, I’d
advise using C#.That said, why are you building a FIX engine from scratch? Why not using
QuickFIX with the .NET bindings?
Thanks for quick reply. Performance is quite critical but i guess my clients won’t be capable of testing engine to its optimum capacity.
I meant developing from scratch means i will abolish my ad hoc protocol totally else it was possible for me to embed FIX instead of ad hoc protocol :). Currently i had been presented with some exchange document supporting FIX protocol (as well as non FIX which is developed at our end). BTW i got the quickfix website , Let me go around it. I am more like to develop FIX engine in C# and then tune performance as per client’s demands. Thanks ![]()
I would have a look at QuickFix, that has .Net and some C# samples to get you started. It performs well when compared to other FIX Libs running under .Net
John
I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to
migrate all my gateway server in FIX 4.2 protocol. and i want to
do it from scratch .Please advice me is it possible to develop FIX engine in c#?if yes then
how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
Having been down the .Net and C# with QuickFIX path before - I would tread very carefully if you are planning to use managed .Net code in the same process as the Quickfix engine. There are other alternatives that can be explored on the FPL products page and the products forum that might be more suitable for a .Net managed code environment.
I would have a look at QuickFix, that has .Net and some C# samples to
get you started. It performs well when compared to other FIX Libs
running under .NetJohn
I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to migrate
all my gateway server in FIX 4.2 protocol. and i want to do it from
scratch .Please advice me is it possible to develop FIX engine in c#?if yes
then how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
[ original email was from Toby Corballis - toby.corballis@rapidaddition.co.uk ]
> I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to
migrate all my gateway server in FIX 4.2 protocol. and i want to
do it from scratch .Please advice me is it possible to develop FIX engine in c#?if yes then
how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
Well, we wrote our FIX engine in C# precisely because we were able to achieve better results using C# than C++ (we have both capabilities plus Java).
We’ve also had clients complain about the C# bindings of QuickFIX,along with the fact that it a) hasn’t been updated in years (the RSS feeds last report activity in 2006), b) has unclear ownership / liability (the licence lists a website as being the copyright holder which, as far as I am aware, cannot be correct in law as a website is not a legal entity), c) has no support for any updates post-2006 so far as we’ve been able to ascertain, and d) requires that support be paid extra at quite a high rate OR that a programmer able to configure and install (and modify) QuickFIX be employed by the company deploying.
Remember the old maxim : there’s no such thing as a free lunch!
Apart from my (possibly biased) rant against QF (and open source in general), there is no reason not to use C#. And, just to be clear, there are other C# engine vendors so if you decide to buy, rather than build, you should do the research to ensure you get what you want.
we wrote our FIX engine in C# precisely because we were able to achieve better results using C# than C++ (we have both capabilities plus Java)
Can you give us more details about the benefits you found of using C# over Java?
[ original email was from Toby Corballis - toby.corballis@rapidaddition.co.uk ]
> > we wrote our FIX engine in C# precisely because we were able to
achieve better results using C# than C++ (we have both capabilities
plus Java)Can you give us more details about the benefits you found of using C#
over Java?
Mostly related to performance - lower latency and higher throughput - we found in testing. Java 1.6 is a great improvement over previous but .NET is still faster (in our experience) and we fully expect .NET 4.0 to be faster again.
Of course, most of the performance gains in anything are to do with how good the programmers are… and ours are good
Thanks for extensive reply. I am not eying big market as of now so i will prefer to build (Precisely for my know how about FIX and its implementation) and then our company will see how to go about it.
I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to migrate
all my gateway server in FIX 4.2 protocol. and i want to do it from
scratch .Please advice me is it possible to develop FIX engine in c#?if yes
then how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
Well, we wrote our FIX engine in C# precisely because we were able to
achieve better results using C# than C++ (we have both capabilities plus
Java). We’ve also had clients complain about the C# bindings of
QuickFIX,along with the fact that it a) hasn’t been updated in years
(the RSS feeds last report activity in 2006), b) has unclear ownership /
liability (the licence lists a website as being the copyright holder
which, as far as I am aware, cannot be correct in law as a website is
not a legal entity), c) has no support for any updates post-2006 so far
as we’ve been able to ascertain, and d) requires that support be paid
extra at quite a high rate OR that a programmer able to configure and
install (and modify) QuickFIX be employed by the company deploying.
Remember the old maxim : there’s no such thing as a free lunch! Apart
from my (possibly biased) rant against QF (and open source in general),
there is no reason not to use C#. And, just to be clear, there are other
C# engine vendors so if you decide to buy, rather than build, you should
do the research to ensure you get what you want.
Thanks for extensive reply. I am not eying big market as of now so i
will prefer to build (Precisely for my know how about FIX and its
implementation) and then our company will see how to go about it.I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to migrate
all my gateway server in FIX 4.2 protocol. and i want to do it from
scratch .Please advice me is it possible to develop FIX engine in c#?if yes
then how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
Well, we wrote our FIX engine in C# precisely because we were able to
achieve better results using C# than C++ (we have both capabilities
plus Java). We’ve also had clients complain about the C# bindings of
QuickFIX,along with the fact that it a) hasn’t been updated in years
(the RSS feeds last report activity in 2006), b) has unclear ownership
/ liability (the licence lists a website as being the copyright holder
which, as far as I am aware, cannot be correct in law as a website is
not a legal entity), c) has no support for any updates post-2006 so
far as we’ve been able to ascertain, and d) requires that support be
paid extra at quite a high rate OR that a programmer able to configure
and install (and modify) QuickFIX be employed by the company
deploying. Remember the old maxim : there’s no such thing as a free
lunch! Apart from my (possibly biased) rant against QF (and open
source in general), there is no reason not to use C#. And, just to be
clear, there are other C# engine vendors so if you decide to buy,
rather than build, you should do the research to ensure you get what
you want.
There is a C# FIX project here Fix Protocol C# Fix Engine Source Code- CodeProject
It is limited and very simple, however it does show an approach to creating FIX messages from an educational viewpoint.
John
John
You can buy or build a very high quality and performant FIX engine in Java, C#, or C++. Solutions exist. There are also open source solutions.
To answer your performance question - I would say that the differences are negligible between the language choices. To answer that I would have to know who the programmer is. C# and Java implementations can be made to be very high performance given the right engineer. Choose the wrong engineer or product and you can end up with a very slow and poorly implemented C++ engine. In practical experience it is amazing what both Sun and Microsoft are doing with their VMs in terms of performance. Couple the benefits in developer productivity, ease of deployment and debugging and for the vast majority of financial applications C# and Java have an advantage. If you are looking to run transactions rates < 500 microseconds - well I don’t know how you do this without hand coding applications very tediously in a native language and even here C++ being object oriented can get in your way if you are not using proper engineering techniques. But how many times are performance rates like this required for the vast majority of trading applications? I think the high frequency market is a relatively small part of the financial markets space, but commands a considerable amount of the press and focus.
I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to
migrate all my gateway server in FIX 4.2 protocol. and i want to
do it from scratch .Please advice me is it possible to develop FIX engine in c#?if yes then
how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
[ original email was from John Greenan - john.greenan@alignment-systems.com ]
Jim Northey is 100% right.
You can buy or build a very high quality and performant FIX engine in
Java, C#, or C++. Solutions exist. There are also open source solutions.To answer your performance question - I would say that the differences
are negligible between the language choices. To answer that I would
have to know who the programmer is. C# and Java implementations can be
made to be very high performance given the right engineer. Choose the
wrong engineer or product and you can end up with a very slow and
poorly implemented C++ engine. In practical experience it is amazing
what both Sun and Microsoft are doing with their VMs in terms of
performance. Couple the benefits in developer productivity, ease of
deployment and debugging and for the vast majority of financial
applications C# and Java have an advantage. If you are looking to run
transactions rates < 500 microseconds - well I don’t know how you do
this without hand coding applications very tediously in a native
language and even here C++ being object oriented can get in your way if
you are not using proper engineering techniques. But how many times are
performance rates like this required for the vast majority of trading
applications? I think the high frequency market is a relatively small
part of the financial markets space, but commands a considerable amount
of the press and focus.I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to migrate
all my gateway server in FIX 4.2 protocol. and i want to do it from
scratch .Please advice me is it possible to develop FIX engine in c#?if yes
then how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.
And another open source C# FIX Engine can be found at FIX4NET download | SourceForge.net if you want to build something yourself (downloads are low and there is no support I am aware of).
I am new to FIX protocol. I had done some development for exchange
gateway in c++ using ad hoc protocol setup. Now i wanted to
migrate all my gateway server in FIX 4.2 protocol. and i want to
do it from scratch .Please advice me is it possible to develop FIX engine in c#?if yes then
how much performance will affect compare to c++ ?As of now i was following FIX forum i found every body recommending
C++ and Java.