服务结构:插件与应用程序类型

问题描述 投票:1回答:2

我正在开发一个基于Service Fabric的交易平台,它将托管数百种不同的长期运行交易算法,所有这些算法都符合通用接口并共享大量公共代码,但内部细节可能大不相同。我可以将每个不同的算法建模为一个应用程序类型(我会动态加载),但是考虑到大量不同的算法,我不得不怀疑是否更有意义创建一个Plugin Runner应用程序类型然后将algos实现为插件。

在一个相关的问题中,我理解如何实现插件体系结构,但是我不太确定将实际插件放在哪里以便可以被Service Fabric上运行的实例发现。

无论如何,谢谢你的帮助......

azure-service-fabric
2个回答
3
投票
  1. 我认为这两种方法都可行。使用大量应用程序类型会增加运行大量进程的(重要)开销,但允许您使用和升级同时运行的同一算法的多个版本。使用插件方法需要您自己处理版本控制。 使用Application方法可能需要某种请求路由器,而插件服务可以自己决定(如果它是无状态的)。
  2. 您可以创建充当插件存储库的状态服务,或挂载文件共享,或使用数据库,此处不受平台的限制。您可以使用命名约定来找到正确的插件。

0
投票

如果在更改给定应用程序实例所需的插件集时,您可以接受应用程序升级,则可以使用以下方法。

回想一下,必须在部署或升级之前打包Service Fabric应用程序。使用msbuild任务或Powershell,您可以将插件dll复制到插件运行程序服务的代码包,作为应用程序升级之前的后打包步骤。然后,您的插件dll将在启动时使用Assembly.Load和代码包的路径在服务实现的Context.CodePackageActivationContext.GetCodePackageObject("Your-Code-Package-Name").Path属性中提供。代码包的名称在ServiceManifest.xml中定义,默认名称为Code

© www.soinside.com 2019 - 2024. All rights reserved.