QuickFIX/N与QuickFIX的.NET封装不同之处
2015-01-14 10:34
225 查看
1、 关于QuickFIX
QuickFix是一个C++FIX引擎,早期就(2001年)实现FIX协议的FIX引擎,它是免费、开放源码的,主要实现语言是C++,对.NET用户,它提供了.NET的封装,使得C#用户也能轻易用上。Python, Ruby 也可以用。它的源码在http://sourceforge.net/projects/quickfix/files/quickfix/ 。 早期的.NET用户一般都选择QuickFix,这是一个很受欢迎的开源引擎,虽然它的性能不是很优秀,但它已经可以满足一般的应用要求。
QuickFix/N是100%使用.NET(C#)实现,免费并且完全开源的,是.NET用户最好的开源FIX引擎。
QuickFix/N的目标是创建一个开放源码、纯C#开发的FIX引擎。QuickFIX(C++)提供了一个C#的封装让.NET用户使用,经过很多年的应用,证明它是成功的,但它会导致代码与.NET风格不符合,不是那么地道。QuickFix/N可以保证系统的健壮性和代码风格一致性,同时用法符合.NET风格。
2、 QuickFIX/N与QuickFIX的.NET封装不同之处
QuickFIX/N不兼容QuickFIX(C++版)的.NET封装。也就是说你不能简单地用QuickFIX/N组件替换 C++版.NET封装的组件,并需要重新编译的现有代码。
在QuickFIX 的编程风格是没变,所以对顶层接口编写的代码仍然是一样的。创建一个应用程序依然和之前一样。您的应用程序需要实现标准的回调方法(FromApp,ToApp等)。MessageCracker仍然是接收消息的最佳方式,实现的代码依然写在OnMessage回调事件当中。给对方发送消息调用的是同样方法。
你需要对现有的应用程序进行修改,但大多数是很小的变化,例如需要改变方法名称或命名空间引用。下面是一个兼容性问题的列表:
1) 方法命名改为大驼峰式命名法(UpperCamelCase)
例如:Session.logout()改为Session.Logout(),而Application.fromApp()改为Application.FromApp()
2) Getter 和setter方法已经去掉,用.NET属性取代。
从NewOrderSingle消息获得ClOrdID的值,之前是调用order.getClOrdID(),现在只需使用order.ClOrdID即可。
以前用setter方法:exec.setField(order.getClOrdID());而现在用exec.ClOrdID=order.ClOrdID;
3) 命名空间的变更。
FIX 消息类在QuickFix##命名空间下,其中##代表FIX版本。现在,他们在命名空间QuickFix.FIX##下。
例如:以前是QuickFix42.NewOrderSingle,现在改为QuickFix.FIX42.NewOrderSingle
4) Socket acceptor和 initiator类不一样。
QuickFIX/N默认initiator类是QuickFix.Transport.SocketInitiator,默认acceptor是QuickFix.ThreadedSocketAcceptor。
构造函数已经改变。QuickFIX/N中,MessageFactory不是initiator和acceptor的构造参数之一。
5) 配置不一样了,新增了一些配置或者与QuickFIX 的配置不一样。
详细请查看配置的相关介绍 ,以确定是否需要更改您的配置文件。
作者:jingle lin
出处:http://jinglelin.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
QuickFix是一个C++FIX引擎,早期就(2001年)实现FIX协议的FIX引擎,它是免费、开放源码的,主要实现语言是C++,对.NET用户,它提供了.NET的封装,使得C#用户也能轻易用上。Python, Ruby 也可以用。它的源码在http://sourceforge.net/projects/quickfix/files/quickfix/ 。 早期的.NET用户一般都选择QuickFix,这是一个很受欢迎的开源引擎,虽然它的性能不是很优秀,但它已经可以满足一般的应用要求。
QuickFix/N是100%使用.NET(C#)实现,免费并且完全开源的,是.NET用户最好的开源FIX引擎。
QuickFix/N的目标是创建一个开放源码、纯C#开发的FIX引擎。QuickFIX(C++)提供了一个C#的封装让.NET用户使用,经过很多年的应用,证明它是成功的,但它会导致代码与.NET风格不符合,不是那么地道。QuickFix/N可以保证系统的健壮性和代码风格一致性,同时用法符合.NET风格。
2、 QuickFIX/N与QuickFIX的.NET封装不同之处
QuickFIX/N不兼容QuickFIX(C++版)的.NET封装。也就是说你不能简单地用QuickFIX/N组件替换 C++版.NET封装的组件,并需要重新编译的现有代码。
在QuickFIX 的编程风格是没变,所以对顶层接口编写的代码仍然是一样的。创建一个应用程序依然和之前一样。您的应用程序需要实现标准的回调方法(FromApp,ToApp等)。MessageCracker仍然是接收消息的最佳方式,实现的代码依然写在OnMessage回调事件当中。给对方发送消息调用的是同样方法。
你需要对现有的应用程序进行修改,但大多数是很小的变化,例如需要改变方法名称或命名空间引用。下面是一个兼容性问题的列表:
1) 方法命名改为大驼峰式命名法(UpperCamelCase)
例如:Session.logout()改为Session.Logout(),而Application.fromApp()改为Application.FromApp()
2) Getter 和setter方法已经去掉,用.NET属性取代。
从NewOrderSingle消息获得ClOrdID的值,之前是调用order.getClOrdID(),现在只需使用order.ClOrdID即可。
以前用setter方法:exec.setField(order.getClOrdID());而现在用exec.ClOrdID=order.ClOrdID;
3) 命名空间的变更。
FIX 消息类在QuickFix##命名空间下,其中##代表FIX版本。现在,他们在命名空间QuickFix.FIX##下。
例如:以前是QuickFix42.NewOrderSingle,现在改为QuickFix.FIX42.NewOrderSingle
4) Socket acceptor和 initiator类不一样。
QuickFIX/N默认initiator类是QuickFix.Transport.SocketInitiator,默认acceptor是QuickFix.ThreadedSocketAcceptor。
构造函数已经改变。QuickFIX/N中,MessageFactory不是initiator和acceptor的构造参数之一。
5) 配置不一样了,新增了一些配置或者与QuickFIX 的配置不一样。
详细请查看配置的相关介绍 ,以确定是否需要更改您的配置文件。
作者:jingle lin
出处:http://jinglelin.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- QuickFIX/N与QuickFIX的.NET封装不同之处
- QuickFIX/N入门:三、 如何配置QuickFIX/N
- QuickFIX/N入门:三、 如何配置QuickFIX/N
- SharpPcap 在.net下用封装好的winpcap进行抓包(转)
- [.net]简单封装NHibernate,提高代码的可扩展性。
- 针对不同.NET版本的条件编译
- 今时不同往日:VS2010十大绝技让VS6叹“.NET研究”服
- 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
- 利用预编译器 实现 .NET下不同类型程序的 通用 类库
- 2003 WDS结合小兵封装工具在不同硬件平台下部署XP(解决无法找到映像的问题)
- .NET环境下几种不同的邮件发送解决方案
- Java与C#中的封装有什么不同之处!!!
- java中封装类型和原始类型存在的不同点
- .net中不同的方法相同的结果
- 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
- .net下模拟不同身份登陆以获取不同权限"
- .NET中Timer的不同
- 如何配置QuickFIX/N
- .net下模拟不同身份登陆以获取不同权限
- QuickFix/J (1):如何创建第一个程序