Blob 访问并不复杂。事实上,您可以将一个 zip 文件从 blob 存储下载到本地磁盘,解压缩,然后从这 5,000 个小文件中启动您的 wcf 服务。
查看this msdn page 记录DownloadBlobToFile()。关键部分:
CloudBlobClient blobClient =
new CloudBlobClient(blobEndpoint, new StorageCredentialsAccountAndKey(accountName, accountKey));
// Return a reference to the blob.
CloudBlob blob = blobClient.GetBlobReference("mycontainer/myblob.txt");
// Download the blob to a local file.
blob.DownloadToFile("c:\\mylocalblob.txt");
现在:我不同意保存到 C: 上的根文件夹。相反,您应该获取一些本地存储(易于配置)。在角色配置中配置本地存储后,只需询问角色环境,并询问根路径:
var localResource = RoleEnvironment.GetLocalResource("mylocalstorage");
var rootPath = localResource.RootPath;
注意:正如@KingPancake 提到的,您可以使用 Azure 驱动器。但是:请记住,Azure 驱动器只能由一个实例写入。您需要为其他实例制作额外的快照。我认为使用简单的 blob 复制文件(作为单个 zip 文件或单个文件),然后从那里开始会更简单。
您提到了对网络+带宽的担忧。您无需为同一数据中心内的带宽付费。另外:速度非常快:每核 100Mbps。因此,即使使用小型实例,您也可以非常快速地复制文件,当您使用较大的实例时更是如此。
最后一个想法:不使用 blob 存储或 Azure 驱动器(在 blob 存储中作为 vhd 挂载)访问 5,000 个文件的唯一其他方法是从外部源下载文件或捆绑它们使用您的 Windows Azure 包(然后它们会显示在您的应用程序的文件夹中,在您将它们放入的任何子文件夹下)。捆绑有两个缺点:
- 由于体积增加,上传部署包需要更长的时间
- 在不重新部署包的情况下无法更改任何单个文件。
通过存储在 blob 中,您可以轻松更改一个(或全部)小文件,而无需重新部署代码 - 您只需向它发出信号以从 blob 存储重新读取或重新启动实例以便它们自动执行下载新文件。