【问题标题】:PDF Attachments in Azure, use memory or temporary directory?Azure 中的 PDF 附件,使用内存还是临时目录?
【发布时间】:2012-04-10 08:02:29
【问题描述】:

我正计划编写一个应用程序,将多个 PDF 作为附件发送到用户的电子邮件中。

我应该使用内存 (MemoryStream) 还是有一个可以使用的临时目录?哪个更可取?谢谢!

顺便说一句,我正在使用 C# ASP.NET

【问题讨论】:

    标签: c# asp.net azure pdf-generation


    【解决方案1】:

    我会选择文件系统存储,因为内存是一种更稀缺的资源。为此,Windows Azure 提供了本地存储资源,这些资源是您在服务定义中配置的磁盘区域,然后在运行时通过 Azure SDK 进行访问。它们不是永久存储,并且会在角色回收时被清理,因此它们非常适合临时操作,例如您描述的操作。尽管您仍应在每次操作后尝试清理文件以确保不会填满空间。

    关于本地存储资源的完整信息在这里:http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

    这里有一张表,详细说明了每个实例大小的本地存储资源可用的磁盘空间量:http://msdn.microsoft.com/en-us/library/windowsazure/ee814754.aspx

    【讨论】:

    • 感谢这个标记!不过我想知道,如果我有多个实例,它们是否共享相同的本地存储资源?
    • 不,他们没有,它是每个实例的单独资源。如果要共享,则应使用 blob 存储。
    • 我明白了.. 我不会冒险将它存储在一个实例中,然后当我要附加它时,找不到文件吗?
    • 仅当您将进程分布在多个实例上时。如果您在工作角色中将这些作为批处理运行,那么您将在单个实例上的单个进程中生成所有 PDF 和电子邮件。进程不会跳过实例。
    【解决方案2】:

    您可以使用不同的模式。将 PDF 放入 blob 存储中,并放置一条包含电子邮件地址和要发送的 PDF 列表的队列消息。建立一个单独的工人角色并发送电子邮件。您可以使用 X-Small 或 Small。由于这也允许异步通信,因此您可以只使用 1 个实例。如果它跟不上,请通过配置文件启动第二个(即不重新部署)。这还具有为您的解决方案提供更多聚合带宽的额外好处。

    如果流量不是很重,您可以启动一个单独的线程(或进程)来做同样的事情。

    拍拍

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2021-04-10
      • 2015-08-28
      • 2021-06-28
      • 2021-06-24
      • 2019-01-31
      • 2022-08-03
      • 1970-01-01
      相关资源
      最近更新 更多