Eri*_*k T 8 c# amazon-s3 azure amazon-web-services azure-storage
我正在开发一个支持在云中运行的应用程序,无论是亚马逊还是Azure.我需要的组件之一是围绕存储API(Blob和队列)的抽象.我可以编写一个抽象层,但最终仍然有一大堆依赖项(所有Azure和Amazon库).我想要的是一个提供纯HTTP访问的组件,所以我不需要采取任何外部依赖.这样的野兽存在吗?
编辑
到目前为止,我所做的是构建一个抽象blob基本操作的接口.我最终得到的结果类似于以下内容:
public interface IBlobService {
Task<Stream> DownloadBlob(string container, string blob);
IEnumerable<string> ListBlobs(string container);
void PutBlob(string container, string blob, Stream data);
}
Run Code Online (Sandbox Code Playgroud)
我知道不同的服务有不同的行为,但都支持一组基本的CRUD操作.我发现的是我不断添加其他方法来改变调用行为.例如,除了
void PutBlob(string container, string blob, Stream data);
Run Code Online (Sandbox Code Playgroud)
我最终还需要
void PutBlob(string container, string blob, byte[] data);
Run Code Online (Sandbox Code Playgroud)
在两个服务中构建第n个方法之后,我意识到有人必须已经完成了这个.鉴于两者都只是各个HTTP接口的包装器,我正在寻找的是一个围绕这些操作提供抽象的库.就HTTP而言,发送字节数组和流之间的区别是零,但每个服务都需要它自己的风格(标题,编码,HMAC等).
我想要的是类似于ODBC为数据库提供的东西 - 一种提供一组通用功能的API,同时承认支持平台存在差异.我希望这足以使请求变得狭窄.
谢谢,埃里克
库 TwentyTwenty.Storage 是 Blob 存储的抽象。它定义了 Azure、Amazon S3、Google Cloud 存储和本地文件系统的接口和一些实现。更多信息请参见项目 github:TwentyTwenty.Storage
它适用于 .net 4.5 和 .net core (netstandard 1.3),并且可以通过 nuget 安装。
| 归档时间: |
|
| 查看次数: |
1348 次 |
| 最近记录: |