我应该在“股票交易”系统中使用共享内存来分离“市场数据接收器”部分吗?

时间:2012-03-14 15:51:43

标签: c#

我的交易系统由两部分组成

  • “Udp milticast市场数据接收器” - 只接收来自UDP多播的市场数据,没有别的(订单,订单,最佳买/卖等)。
  • “主系统” - 使用市场数据,计算新订单,发送订单等等。

这些系统非常相关 - 典型情况就是这样:

- "UDP" -> "Main" Apple BID/ASK 500.1/500.2
- Main sends order № 1122 Apple BUY 555
- "UDP" -> "Main" Order № 1122 Executed
- Main send order № 1123 Apple SELL 505
- "UDP" -> "Main" Order №1123 Registered, Ammount 1, Executed 0, Left 1

“UDP”部分不知道“Main”存在。 “Main”使用“UDP”

我想让它们成为独立的项目,因为理论上我可以在不运行“Main”的情况下运行“UDP”。或者我可以运行几个“主要”实例。

因此“UDP”应该产生一些其他人可以使用的可写存储。

但是“Main”和“UDP”非常相关 - 它们使用相同的类和相同的结构来表示Quotes等。

而且我也不能有性能损失,性能非常重要我需要的东西和在应用程序中存储数据一样快。

我应该使用“共享内存”还是其他技术,或者最好在一个项目中制作所有内容?

我认为我的问题非常普遍,因为很多不同的市场数据适配器已经由不同公司编写,因此应该有一些“默认”解决方案。

1 个答案:

答案 0 :(得分:0)

如果确实需要性能,那么解决方案就是使用具有明确分隔层的单个项目。无论如何"分离"你会选择的解决方案,总是一些开销。

另一方面,详细说明可以帮助您以某种方式扩展应用程序,可能是一天" Main"可能不会在" Udp"是。请查看.NetRemoting以实现此目标。

希望这有帮助。