Blob SAS WCF 和性能
Blob SAS WCF and perfomance
这个link讲性能,绕过传送门。对我来说,进行身份验证的 WCF 服务类似于门户。
A lightweight service authenticates the client as needed and then
generates a SAS. Once the client receives the SAS, they can access
storage account resources directly with the permissions defined by the
SAS and for the interval allowed by the SAS. The SAS mitigates the
need for routing all data through the front-end proxy service.
该应用程序是一个厚 .NET WPF 客户端,它使用 Azure AD 进行身份验证,与托管在 Azure 应用程序中的 WFC 服务进行通信。
它是一个文件管理应用程序,所以有很多文件传输。搜索和搜索结果是一个比较小的流量。需要搜索才能响应。
文件上传下载使用SAS是不是优化过度了?
另一种选择是通过 WCF 服务上传和下载文件。
一个或另一个有什么陷阱?
我的想法是让文件远离 WCF 服务以保持其响应。
如果这应该是一个单独的问题,那很好。客户端一次获取1000个搜索结果。即使 SAS 的有效期很长,如果他们将结果保留数小时,它也可能会过期。如果 SAS 是 属性 绑定,我如何检测过期的 SAS?每个文件在应用程序中都有一个唯一的 ID。直接请求 SAS 会更好吗?
在某些情况下,用户可能会访问搜索结果中的几乎所有文件,而在其他情况下,根据搜索结果中的信息,他们可能只能访问 100 个文件中的 1 个。它们可能是 运行 一些大型搜索以仅获取计数并访问零个文件。
Is it over optimization to use SAS for file upload and download?
我不这么认为。 Uploading/downloading 使用 SAS 的文件对我来说完全有意义。
The other option is to upload and download the files via the WCF
service. What would be some gotcha for one or the other?
使用基于 SAS 的方法的最大优势是您可以直接与 Azure 存储交互,而无需通过 WCF 服务进行数据路由。因此,您可以让您的服务保持真正的轻量级,而不是为了扩展目的在其背后放置太多基础设施。对于 SAS,WCF 服务将简单地获取对 blob 上的 SAS 的请求,并且它 returns SAS URL 用于您的客户端应用程序可以用来上传文件的 blob。
对于 SAS,一个问题可能是共享 SAS URL 和 link 落入非预期受众手中。但是,您可以通过保留短期 SAS 令牌并在 SAS 上应用 IP ACL 来减轻这种担忧。
关于您的应用程序(尤其是搜索部分)的信息不多,但我猜测有关文件的信息保存在某种关系数据库中,实际文件保存在 blob 存储中。我会远离生成 SAS 令牌作为搜索结果的一部分,并且只按需生成它们。如果用户尝试上传文件,您会在实际上传过程之前获得用于上传的 SAS URL。同样,当用户下载文件时,您会在那时获得该文件的 SAS URL 并进行下载。
这个link讲性能,绕过传送门。对我来说,进行身份验证的 WCF 服务类似于门户。
A lightweight service authenticates the client as needed and then generates a SAS. Once the client receives the SAS, they can access storage account resources directly with the permissions defined by the SAS and for the interval allowed by the SAS. The SAS mitigates the need for routing all data through the front-end proxy service.
该应用程序是一个厚 .NET WPF 客户端,它使用 Azure AD 进行身份验证,与托管在 Azure 应用程序中的 WFC 服务进行通信。
它是一个文件管理应用程序,所以有很多文件传输。搜索和搜索结果是一个比较小的流量。需要搜索才能响应。
文件上传下载使用SAS是不是优化过度了?
另一种选择是通过 WCF 服务上传和下载文件。
一个或另一个有什么陷阱?
我的想法是让文件远离 WCF 服务以保持其响应。
如果这应该是一个单独的问题,那很好。客户端一次获取1000个搜索结果。即使 SAS 的有效期很长,如果他们将结果保留数小时,它也可能会过期。如果 SAS 是 属性 绑定,我如何检测过期的 SAS?每个文件在应用程序中都有一个唯一的 ID。直接请求 SAS 会更好吗?
在某些情况下,用户可能会访问搜索结果中的几乎所有文件,而在其他情况下,根据搜索结果中的信息,他们可能只能访问 100 个文件中的 1 个。它们可能是 运行 一些大型搜索以仅获取计数并访问零个文件。
Is it over optimization to use SAS for file upload and download?
我不这么认为。 Uploading/downloading 使用 SAS 的文件对我来说完全有意义。
The other option is to upload and download the files via the WCF service. What would be some gotcha for one or the other?
使用基于 SAS 的方法的最大优势是您可以直接与 Azure 存储交互,而无需通过 WCF 服务进行数据路由。因此,您可以让您的服务保持真正的轻量级,而不是为了扩展目的在其背后放置太多基础设施。对于 SAS,WCF 服务将简单地获取对 blob 上的 SAS 的请求,并且它 returns SAS URL 用于您的客户端应用程序可以用来上传文件的 blob。
对于 SAS,一个问题可能是共享 SAS URL 和 link 落入非预期受众手中。但是,您可以通过保留短期 SAS 令牌并在 SAS 上应用 IP ACL 来减轻这种担忧。
关于您的应用程序(尤其是搜索部分)的信息不多,但我猜测有关文件的信息保存在某种关系数据库中,实际文件保存在 blob 存储中。我会远离生成 SAS 令牌作为搜索结果的一部分,并且只按需生成它们。如果用户尝试上传文件,您会在实际上传过程之前获得用于上传的 SAS URL。同样,当用户下载文件时,您会在那时获得该文件的 SAS URL 并进行下载。