2012-03-31 78 views
0

我有以下情況:C++連接到Windows Azure存儲

我有一個應用程序從一些傳感器收集一些數據。該應用程序是用C++編寫的。我需要一些方法將數據(blob)發送到Windows Azure存儲。數據將由其他地方的某個中央服務器處理。我只是想發送數據(二進制流)。 有沒有辦法從我的原生應用程序連接到Azure?我需要Web角色嗎?

感謝, Tamash

+0

您還可以檢查http://stackoverflow.com/questions/9202092/access-azure-blob-storage-using-c和http://stackoverflow.com/questions/8471810/accessing- azure-storage-tables-from-c-code - 類似的問題,我也發佈了一個鏈接到開放源代碼的C++庫,您可以使用它來包裝REST API調用。 – astaykov 2012-04-01 11:03:45

回答

4

你可以做到這一點。 Windows Azure Blob存儲可通過language-independent REST API訪問。

請注意,還有一些更直接的supported language SDKs可以簡化REST API交互(重試,HMAC簽名等),但它完全可以從C++實現。

您是否需要Web角色(或工作者角色)取決於一件事情:傳感器收集應用程序是否可以通過訪問Windows Azure Blob存儲所需的「密鑰」信任系統。如果應用程序主機可以被信任(例如,完全在您的控制之下,例如不在客戶或合作伙伴的桌面上運行),那麼可以完全信任它,並且可以無限制地訪問您的存儲帳戶。然後,傳感器收集應用程序可以將數據直接傳送到BLOB存儲 - 不需要Web角色。

如果您不能相信運行傳感器集合的主機,則需要另一個機智。客戶端有辦法請求對blob存儲進行臨時的有限範圍的訪問。這在Azure/Blob術語中稱爲Shared Access Signatures(SAS)。擁有未到期SAS的客戶可以執行該SAS允許的任何操作 - 例如寫入BLOB存儲。要創建一個SAS,需要前面段落中提到的存儲密鑰。這將是部署Web角色的原因 - 它可以根據需要爲您生成SAS(例如,通過您創建的Web服務)。識別可信客戶端的方案取決於你如何做事(傳感器 - 收集應用程序實例需要以某種可信的方式來識別自己,我假設 - 但發給一個實例的SAS可以讓它寫入專用BLOB存儲區域到那個應用程序實例,帳戶,客戶,網站等 - 無論正確的抽象是爲您的業務)。

請注意,儘管Web角色是解決SAS創建的一種方法,但您也可以通過任何有權訪問存儲密鑰的代碼執行此操作。