αʔόʔڥͷมԽ w ΫϥυͷొͰॊೈʹੜɾഁغ͕Ͱ͖Δ༷ʹͳͬͨɻ w ελϯυΞϩϯΞϓϦ͔Βͷ٫ϚΠΫϩαʔϏεͷོ w αʔόʔ͕ͳ͘ͳΔͱ͍͏͜ͱͰͳ͍ɻ։ൃऀ͕αʔόʔʹ͍ͭͯࢁͷ ͜ͱΛߟ͑ͳͯ͘ྑ͘ͳΔͱ͍͏͜ͱɻ IUUQTSFBEXSJUFDPNXIZUIFGVUVSFPGTPGUXBSFBOEBQQTJTTFSWFSMFTT
αʔόʔڥͷมԽ IUUQTCMPHTNTEONJDSPTPGUDPNB[VSFTFDVSJUZCFTUQSBDUJDFTGPSVQEBUJOHWJSUVBMNBDIJOFTJONJDSPTPGUB[VSFJBBTEFQMPZNFOUT Best Practices for Updating Virtual Machines in Microsoft Azure IaaS Deployments
w ෳͷ'VODUJPOͷ࿈ܞΛൺֱత؆୯ʹ࣮Ͱ͖Δ w 'VODUJPODIBJOJOH w 'BOPVU'BOJO w "TZOD)551"1*T IUUQTB[VSFHJUIVCJPB[VSFGVODUJPOTEVSBCMFFYUFOTJPOJOEFYIUNM IUUQRJJUBDPN5TVZPTIJ6TIJP!HJUIVCJUFNTFBDCCCGEC
public static async Task Run(DurableOrchestrationContext ctx) { var parallelTasks = new List>(); // get a list of N work items to process in parallel object[] workBatch = await ctx.CallFunctionAsync("F1"); for (int i = 0; i < workBatch.Length; i++) { Task task = ctx.CallFunctionAsync("F2", workBatch[i]); parallelTasks.Add(task); } await Task.WhenAll(parallelTasks); // aggregate all N outputs and send result to F3 int sum = parallelTasks.Sum(t => t.Result); await ctx.CallFunctionAsync("F3", sum); } 'BOPVU
'BOJO
"TZOD)551"1*T public static async Task Run( HttpRequestMessage req, DurableOrchestrationClient starter, string functionName, TraceWriter log) { // Function name comes from the request URL. // Function input comes from the request content. dynamic eventData = await req.Content.ReadAsAsync(); string instanceId = await starter.StartNewAsync(functionName, eventData); log.Info($"Started orchestration with ID = '{instanceId}'."); return starter.CreateCheckStatusResponse(req, instanceId); }