I am developing an application that supports work in the cloud, be it Amazon or Azure. Once upon a time, one of the components I need is an abstraction around storage APIs (Blobs and Queues). I can write an abstraction layer, but I still have a huge set of dependencies (all Azure and Amazon libraries). I want a component that provides clean HTTP access, so I don't need to accept any external dependencies. Is there such a beast?
Edit
What I have done so far is to create an interface that abstracts the main operation on blobs. What I ended up looking like this:
public interface IBlobService {
Task<Stream> DownloadBlob(string container, string blob);
IEnumerable<string> ListBlobs(string container);
void PutBlob(string container, string blob, Stream data);
}
I understand that different services have different types of behavior, but both support a basic set of CRUD operations. I find that I continue to add additional methods that change the behavior of the call. For example, an addition to
void PutBlob(string container, string blob, Stream data);
In the end, I also need
void PutBlob(string container, string blob, byte[] data);
After creating the nth method in both services, I realized that someone should have done this already. Given that both are just wrappers around the corresponding HTTP interfaces, I am looking for a library that provides abstraction around these operations. The difference between sending a byte array and a stream is zero with respect to HTTP, but each service requires its own flavor (headers, encoding, HMAC, etc.).
, , , ODBC - API, , , . , .
,
Erick