0

我程序中的主要课程OrderBook有一些库存。

  • 我的程序的一部分,我们称之为,从一些股票中NYSE Connector读取数据NYSE并构建OrderBook
  • 我的程序的第二部分,我们称它为其他股票的LSE Connector构造OrderBook,但来自不同的交易所和完全不同的算法
  • 我的程序的第三部分管理所有集合OrderBook并为不同的连接器产生不同的信号(在伦敦证券交易所购买此类股票在纽约证券交易所出售另一只等)

我的程序的所有部分共享相同的OrderBook. 但零件本身是相当独立的。例如,我可以只运行NYSE Connector而不运行其他任何东西。那我就收了OrderBook。没有多大意义,但可能。

我也需要一切尽快工作,因为即使是 1 毫秒对我来说也非常重要。

所以现在我只是将所有内容放在一个项目中(但在不同的文件夹中),但我认为它不是很好。如果我需要另一个连接器 - 我将创建另一个文件夹。

我怎样才能更好地分离我的零件?但请记住,我需要共享相同的OrderBook实例。

4

1 回答 1

2

这将是一个模糊的答案,因为这是一个模糊的问题。根据您的名字(javapowered),我将假设您来自 java 背景,因此我将尝试用 java 等效性来表达我的答案。

在 .NET 中,您的编译代码单元是程序集。解决方案中每个项目的输出通常恰好是一个程序集(并非总是如此,但出于讨论的目的,我们可以说它只是一个程序集)。程序集大致类似于 Java jar 文件,因为它们包含已编译类的字节码。它们实际上比 jar 文件复杂得多,但这或多或少与这个答案无关。

程序集可以包含对其他程序集的引用(阅读:依赖)。与 java 中隐式的逐类依赖不同,.NET 程序集依赖是显式的并且在程序集级别,例如程序集 foo.bar 依赖于程序集 foo.bat。.NET 程序集引用必须是有向无环图,这意味着您不能有任何循环,其中程序集 A 依赖于 B,而 B 又依赖于 A。运行时必须能够加载程序集的所有依赖项。

就您而言,我希望看到的是 4 个或更多项目:

  1. 一个主要项目。可能是您的可执行文件。这将引用(取决于)所有其他项目。
  2. 一个图书馆项目。这不会引用解决方案中的其他项目。
  3. NYSE 的连接器项目,引用库项目。
  4. LSE 的连接器项目,引用库项目。

所有项目通用的所有类(OrderBook、其他数据结构等)都将进入库,在那里它们可以在需要的任何地方进行引用。

所有特定于交换的实现都将放在它们自己的特定于交换的程序集中。这可能包括特定于交换的协议处理程序、 的子类OrderBook等等。如果它特定于交易所,则在上面的 3 或 4 中。

最后,所有用户交互逻辑、控制流等都将进入主可执行文件。

于 2012-05-23T18:35:19.407 回答