【问题标题】:executing script file from azure blob and write its results to file从 azure blob 执行脚本文件并将其结果写入文件
【发布时间】:2013-04-04 03:32:48
【问题描述】:

我会解释我要求的任务:

我在 Azure 中有两个容器,一个叫做“数据”,一个叫做“脚本”。在“数据”容器中有一个包含数据的 txt 文件,在“脚本”容器中有一个脚本文件。

现在,我需要以编程方式(使用 WorkerRole)来执行脚本文件,并将数据文件的内容作为参数(例如:接受字符串 's' 并返回屏幕“Hello, 's '",当给定的字符串中有's',并且数据文件中有一个字符串),并将运行的结果保存到另一个文件中,该文件需要保存在另一个名为“result”的容器中。

我该怎么做?我已经上传了文件并以编程方式创建了 blob,但我似乎无法理解如何执行文件以及如何将其结果保存到另一个文件? 我可以帮忙吗?

提前致谢

【问题讨论】:

  • 以下是伪代码中的步骤: 1. 从 blob 中检索脚本(使用 DownloadToStream()) 2. 编译脚本(我将把这个留给你,因为我不知道你的格式是什么脚本是) 3. 从 blob 加载参数(与步骤 1 相同) 4. 使用这些参数执行脚本。如果您的脚本可以写成 lambda 表达式,那么这会变得容易得多,因为您可以将它们转换为 Action's
  • @jzworkman 非常感谢!我或多或少地知道这些步骤,但你肯定会把一些事情整理好。我的问题是 1)downloadText 和 downloadToStream() 有什么区别?和 2) C# 中用于文件执行的命令到底是什么?
  • @jzworkman 请将您的 comment 移至 answer 以便人们可以对其进行适当投票,并且假设 user1067083 找到这个答案可以接受,可以正常这样做。
  • @David Makogon 我将移动它并扩展我的答案。

标签: azure azure-storage azure-blob-storage


【解决方案1】:

下面是伪代码的步骤:

  1. 从 blob 中检索脚本(使用 DownloadToStream()
  2. 编译脚本(我把这个留给你,因为我不知道是什么 格式化你的脚本)
  3. 从 blob 加载参数(与步骤 1 相同)
  4. 使用这些参数执行脚本。

如果您的脚本可以写成 lambda 表达式,那么这会变得容易很多,因为您可以将它们转换为 Action's

根据您的问题进行编辑:

  1. DownloadText() 不再包含在 Azure 存储 2.0 中,您只能访问 DownloadToStream()。即使您使用的是旧版本(比如 1.7),我建议您使用 DownloadToStream() 以防您将来升级。这样可以避免重构代码。
  2. 在执行脚本方面,取决于它是什么类型的脚本(如果是 c# 代码,您可以使用此示例:Is it possible to dynamically compile and execute C# code fragments?。如果您需要执行不同类型的脚本,则需要运行它使用Process.Start,你可以看看这个例子:http://www.dotnetperls.com/process-start

我对第 2 点没有太多经验,但这些是我听到和看到使用的过程。

【讨论】:

  • 谢谢,我会尝试应用你写的:)
  • OK @jzworksman 我有一个问题 - 给定脚本所在的流,我如何使用 Process.Start 与流(我只有将文件名放在 startinfo 中的选项),还有另一个问题- 如何将执行的输出保存到文件中?
  • 如果你有一个可以在流中执行脚本的文件,你可以使用 process.Start。否则,您将需要将脚本编译为脚本使用的任何语言并以这种方式执行。一个想法是将其保存为 vm 上的文件,然后您可以在该文件上调用 process.start。
猜你喜欢
  • 2017-11-01
  • 2016-01-31
  • 1970-01-01
  • 2014-09-09
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多