C++ 连接到 Windows Azure 存储

Tam*_*nut 1 c++ networking azure

我有以下情况:

我有一个从一些传感器收集一些数据的应用程序。该应用程序是用 C++ 编写的。我需要某种方式将数据(blob)发送到 Windows Azure 存储。数据将由其他地方的某个中央服务器处理。我只是对发送数据(二进制流)感兴趣。有没有办法从我的本机应用程序连接到 Azure?我需要网络角色吗?

谢谢,塔马什

cod*_*oud 5

你可以这样做。Windows Azure Blob 存储可通过独立语言的 REST API 访问

请注意,有一些更直接支持的语言 SDK可以简化 REST API 交互(重试、HMAC 签名等),但它完全可以通过 C++ 实现。

为此,您是否需要 Web 角色(或工作角色)取决于一件事:传感器收集应用程序是否运行在一个可以使用访问 Windows Azure Blob 存储所需的“密钥”的系统上。如果该应用程序主机可以信任(例如,完全在您的控制之下,例如不在客户或合作伙伴的桌面上运行),那么完全信任它并可以不受限制地访问您的存储帐户可能没问题。然后传感器收集应用程序可以将数据直接传送到 blob 存储中——不需要 Web 角色。

如果您不能信任运行传感器集合的主机,则需要另一种策略。客户端有一种方法可以请求对 blob 存储进行临时的、有限范围的访问。这称为共享访问签名(SAS) 在 Azure/Blob 术语中。拥有未过期 SAS 的客户端可以执行该 SAS 允许的任何操作 - 例如写入 blob 存储。要创建 SAS,需要上一段中提到的存储键。这将是部署 Web 角色的一个原因 - 它可以根据需要为您生成 SAS(例如,通过您创建的 Web 服务)。识别受信任客户端的方案取决于您如何做事(我假设,传感器收集应用程序实例需要以某种受信任的方式识别自己,但发给一个实例的 SAS 可以让它写入 Blob 存储专用的区域到该应用程序实例、帐户、客户、站点等 - 无论您的业务是什么正确的抽象)。

但请注意,虽然 Web 角色是解决 SAS 创建问题的一种方式,但您也可以通过任何有权访问存储密钥的代码来实现。