2017-10-17 67 views
0

我正在开发一个基于光纤网络的服务的交易平台,将举办数百个不同的长期运行交易算法,它们都遵循一个共同的接口和共享的通用代码很划算但在内部细节上可能大不相同。我可以模拟每个不同的交易算法作为应用类型(我想动态加载),但考虑到众多不同的交易算法我想知道,如果在更有意义以创建单个插件亚军的应用程序类型,然后实现交易算法作为插件。服务面料:插件与应用程序类型

在一个相关的问题,我理解如何实现插件架构,在一般情况下,但我不能肯定其中一个将代替实际插件,以便可以通过在服务织物运行的实例发现。

无论如何,感谢您的帮助....

回答

2
  1. 这两种方法都可以工作,我想。使用大量应用程序类型会增加运行大量进程的(显着)开销,但允许您使用和升级同时运行的相同算法的多个版本。 使用插件方法需要您自己处理版本控制。

    使用应用程序的方法可能需要某种请求路由器,而 插件服务可以使它自己的决定(如果它是无状态的)。

  2. 您可以创建一个充当插件存储库中的状态服务,或安装一个文件共享,或使用一个数据库,无论从这里的平台的限制。您可以使用命名约定来定位正确的插件。

+0

感谢您的快速和有用的答案。任何想法在何处/如何放置插件,以便在运行时可以通过Azure Service Fabric找到它们?我正在考虑DevOps的东西...... –

+1

也许是这样的:当请求算法“A v1”时,按照该名称查找程序集:“A”和版本“1”。从存储库下载程序集(如上面的2.)将其放在工作目录中,并使用Assembly.Load(“A,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”)加载它。使用反射来查找并实例化它。 – LoekD

+0

我给了插件风格一个尝试,它效果很好。这就是我要走的路... –

相关问题