探索Windows Azure存储:从基础到应用
1. 构建存储客户端的挑战与实现
在为新的语言或平台实现存储客户端库时,可能会遇到一些难题。部分主流语言不支持SHA - 256(不过HMAC部分实现起来较为简单)。例如,若要实现该库的Erlang版本,就需要自行研究SHA - 256和HMAC的实现(可参考http://github.com/sriramk/winazureerl/ )。虽然研究和调试加密算法很耗时,但这能让请求更安全。
构建好签名头后,服务器端的Windows Azure存储服务会进行相同的处理并生成签名,然后检查客户端生成的签名是否匹配,若不匹配则返回403错误。编写存储客户端时,调试这类错误可能会很痛苦,因为有多种因素可能导致出错。调试时,可逐步执行一个可靠的存储客户端实现,并在每个步骤比较中间值。
创建和上传内容相对简单。在有了上传容器后,上传Blob只需向正确的URL进行HTTP PUT请求,并将数据作为HTTP请求的一部分发送。以下是一个示例方法:
public bool CreateBlob(string containerName, string blobName, byte[] data, string contentType) { HttpWebResponse response = DoStorageRequest( containerName + "/" + blobName, "PU