Azure WCF访问磁盘文件

Azure WCF访问磁盘文件,azure,azure-storage,azure-storage-blobs,Azure,Azure Storage,Azure Storage Blobs,我有一个WCF服务作为“云服务”托管在Windows Azure上。当该服务启动时,它需要将数据从文件/磁盘填充到内存中,以便快速访问(换句话说,缓存)。现在我使用的是C:\Documents\Filestoprocess文件夹,以便WCF调用该文件夹并在其内存中填充该文件夹中的数据。我有5000个小文件。在Azure中如何执行此操作?在WCF中是否有我可以调用的文件夹路径,以便WCF调用这些文件并打开每个文件并保存文件中的每个数据?我并不是真的在寻找通过网络使用带宽的复杂Blob访问。我正在寻

我有一个WCF服务作为“云服务”托管在Windows Azure上。当该服务启动时,它需要将数据从文件/磁盘填充到内存中,以便快速访问(换句话说,缓存)。现在我使用的是C:\Documents\Filestoprocess文件夹,以便WCF调用该文件夹并在其内存中填充该文件夹中的数据。我有5000个小文件。在Azure中如何执行此操作?在WCF中是否有我可以调用的文件夹路径,以便WCF调用这些文件并打开每个文件并保存文件中的每个数据?我并不是真的在寻找通过网络使用带宽的复杂Blob访问。我正在寻找从WCF“云服务”对这些文件的简单磁盘I/O访问,WCF“云服务”在其自己的公共web地址上运行。

您应该尝试使用云存储服务来存储数据,就像您向本地文件系统写入数据一样,它可能在重新启动服务或回收服务时被销毁

您可以考虑使用azure驱动器服务,这就像创建磁盘潜水。它位于blob存储的顶部

但是如果你真的想在本地文件系统上写和读数据,请查看这篇博文


它讨论如何设置服务定义以允许写入本地文件系统。

Blob访问并不复杂。事实上,您可以将一个zip文件从blob存储下载到本地磁盘,解压缩它,然后从这5000个小文件启动wcf服务

查看文档编制
下载blobtofile()
。基本部分:

CloudBlobClient blobClient=
新的CloudBlobClient(blobEndpoint,新的StorageCredentialsAccountAndKey(accountName,accountKey));
//返回对blob的引用。
CloudBlob blob=blobClient.GetBlobReference(“mycontainer/myblob.txt”);
//将blob下载到本地文件。
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安装)的情况下,访问5000个文件的唯一其他方法是从外部源下载文件或将其与Windows Azure软件包捆绑(然后它们会出现在你的应用程序文件夹中,在你将它们放入的任何子文件夹下)。捆绑有两个缺点:

  • 由于增加了大小,上载部署包的时间更长
  • 无法在不重新部署包的情况下更改任何单个文件
通过存储在blob中,您可以轻松地更改一个(或全部)在不重新部署代码的情况下,您只需向其发送信号,从blob存储中重新读取或重新启动实例,以便它们自动下载新文件。

根据需要,您将获得一个不存在的磁盘,用于存储此类临时数据。对于一个额外的小实例,最小值为20GB。您不应该这样做您不能直接访问磁盘,但需要使用一个可在文件或Visual Studio中配置的磁盘(双击您的Web/Worker角色)

此存储是非持久性的,这意味着如果删除部署,如果减少实例数,如果出现硬件问题,…则会丢失此处保存的所有数据。如果要持久化文件,则应使用blob存储。但在您的情况下,如果需要将文件作为某种缓存机制,则本地资源你很完美

如果您的目标是缓存数据,您可能需要查看Windows Azure中包含的缓存功能: