簡體   English   中英

適當的API設計是否具有版本獨立性?

[英]Proper API Design for Version Independence?

我繼承了一個龐大的.NET解決方案,涉及約200個項目。 現在,有些開發人員希望開始將自己的組件添加到我們的應用程序中,這將要求我們開始通過API公開功能。

當然,主要的問題是,我們掌握的解決方案包含了如此龐大的依賴關系網,因此我們必須小心避免每次應用程序中的某個小改動都會破壞API。 我們還希望能夠在不破壞任何先前第三方應用程序的情況下逐步公開新功能。

我有解決此問題的方法,但我不確定這是理想的方法-我在尋找其他想法。

我的計划是基本上擁有三個dll。

  1. APIServer_1_0.dll-這將是具有所有依賴項的dll。
  2. APIClient_1_0.dll-這將是我們的開發人員實際引用的dll。 沒有引用我們解決方案中的任何混亂。
  3. APISupport_1_0.dll-這將包含允許客戶端動態加載“服務器”組件並執行所需功能的接口。 以上兩個dll都將依賴於此。 這將是“客戶端”片段所引用的唯一dll。

我最初到達此設計是因為Windows服務之間進行進程間通信的方式有點類似(除了客戶端通過命名管道與服務器通信,而不是動態加載dll)。

雖然我很確定自己可以完成這項工作,但我很好奇是否有更好的方法來完成相同的任務。

您不妨查看一下Microsoft 托管加載項框架 [MAF]和托管可擴展性框架 [MEF](鏈接由Kent Boogaart提供)。 正如肯特所言 ,前者與組件的隔離有關,后者主要與可擴展性有關。

最后,即使您不使用任何一種,有關API版本控制的一些概念也非常有用-即版本控制接口,然后通過適配器提供版本間支持。

也許有點矯kill過正,但絕對值得一看!

希望這可以幫助! :)

為什么不只使用.NET內置的Assembly版本?

在向裝配添加參考時,只需確保選中參考上的“需要特定版本”復選框即可。 這樣,您就可以准確地知道在任何給定時間使用的是哪個版本的Assembly。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM