2017-10-17 96 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

我給了插件風格一個嘗試,它效果很好。這就是我要走的路... –