我正在開發支持在雲中運行的應用程序,無論是Amazon還是Azure。我需要的組件之一是存儲API(Blob和隊列)的抽象。我可以編寫一個抽象層,但我仍然會得到一大組依賴項(所有的Azure和Amazon庫)。我想要的是提供純HTTP訪問的組件,所以我不需要採取任何外部依賴關係。這樣的野獸是否存在?是否有一個存儲庫將Azure,S3和其他存儲庫抽象出來?
編輯
我迄今所做的是建立一個抽象了對斑點的基本操作的接口。我已經結束了與類似以下內容:
public interface IBlobService {
Task<Stream> DownloadBlob(string container, string blob);
IEnumerable<string> ListBlobs(string container);
void PutBlob(string container, string blob, Stream data);
}
我的理解是不同的服務有不同的行爲,但都支持一組基本的CRUD操作。我發現的是我不斷添加更改調用行爲的其他方法。例如,除了
void PutBlob(string container, string blob, Stream data);
我最終也需要
void PutBlob(string container, string blob, byte[] data);
建設的第n個方法在這兩種服務後,我意識到,必須有人已經這樣做了。既然這兩者都只是簡單的包裝各自的HTTP接口,我正在尋找的是一個庫,它提供了有關這些操作的抽象。就HTTP而言,發送字節數組和流之間的差別爲零,但每個服務都需要它自己的風格(標頭,編碼,HMAC等)。
我想要的與ODBC爲數據庫提供的內容類似 - 提供了一組通用功能的API,同時承認支持平臺存在差異。我希望這足以縮小這個要求。
感謝, 埃裏克
雖然一個有趣的問題,但不幸仍然是主題:問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非現場資源是堆棧溢出題外話,因爲他們傾向於吸引輿論的答案和垃圾郵件。相反,請描述問題以及到目前爲止解決問題所做的工作。 – Alex
嘗試詢問[軟件推薦](http://softwarerecs.stackexchange.com/) – BenV
@BenV Software推薦版主此處。我們有相當嚴格的質量指導方針,所以如果您在建議某人重新提問時連接到我們的[問題質量指南](http://meta.softwarerecs.stackexchange.com/q/336/46),我會很感激網站上的問題。謝謝! – Undo