我們有一個使用Ninject for DI的ASP.NET Web API應用程序。這適用於完美的使用。我們正在考慮的改進之一是能夠根據某種唯一標識符爲每個請求交換部分功能。每個請求熱插拔綁定
例子。兩位客戶使用我們的寧靜api。兩者都獲得相同的功能。第三個客戶已經支付了我們api的超級版本。他提出請求,我們加載超級DLL並將超級實現綁定到標準接口。
本質上,我期望看到的是我們可以加載DLL並使用Web API和Ninject爲每個請求換出綁定。
編輯:
所以兩個答案都對原來的問題正確的,但我的目的是不同的,這是我的不正確解釋它的錯。我們擁有的是每個人都能獲得的基礎功能層。除此之外,我們還可以根據每個客戶實施自定義邏輯來覆蓋此功能。此邏輯作爲DLL存儲在Azure Blob存儲中。
我們想要做的是,當客戶發出請求時,請去獲取DLL,綁定所有自定義服務,然後使用這些新綁定來處理請求。
熱交換不是最好的方法嗎?我們已經足夠新的注入,所以這可能是一種常見的事情,以與我們正在考慮的方式不同的方式實施。
到了某種程度,我們希望能夠以每個客戶爲基礎爲自定義綁定服務。
編輯2:
我們使用的項目條件裝幀我們知道,我們有備用的實現,但在上述情況下,直到我們得到的客戶信息和掃描,我們不知道,如果我們有備用綁定的DLL。我們甚至不知道是否有一個DLL。
我們想這樣做,所以我們可以放下文件而不是在項目中引用它。
我修改了這個問題以更好地解釋我自己。你可以再看一下嗎? – deanvmc
更新了我的答案。希望能幫助到你。 – mipe34
我已經給你一個upvote,因爲它更接近我所需要的。我看到的唯一問題是,我對dll一無所知,除非我在請求中找到並加載它的URL,因此我無法在啓動時執行此操作。我需要能夠在特定用戶的第一個請求下基本上延遲加載dll,並介意只有該用戶才能使用的服務。我在想這個慣例方法可以幫助解決這個問題。 – deanvmc