我正在开发一个基于Service Fabric的交易平台,它将托管数百种不同的长期运行交易算法,所有这些算法都符合通用接口并共享大量公共代码,但内部细节可能大不相同。我可以将每个不同的算法建模为一个应用程序类型(我会动态加载),但是考虑到大量不同的算法,我不得不怀疑是否更有意义创建一个Plugin Runner应用程序类型然后将algos实现为插件。
在一个相关的问题中,我理解如何实现插件体系结构,但是我不太确定将实际插件放在哪里以便可以被Service Fabric上运行的实例发现。
无论如何,谢谢你的帮助......
如果在更改给定应用程序实例所需的插件集时,您可以接受应用程序升级,则可以使用以下方法。
回想一下,必须在部署或升级之前打包Service Fabric应用程序。使用msbuild任务或Powershell,您可以将插件dll复制到插件运行程序服务的代码包,作为应用程序升级之前的后打包步骤。然后,您的插件dll将在启动时使用Assembly.Load
和代码包的路径在服务实现的Context.CodePackageActivationContext.GetCodePackageObject("Your-Code-Package-Name").Path
属性中提供。代码包的名称在ServiceManifest.xml
中定义,默认名称为Code
。