溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

2.Azure Functions實(shí)戰(zhàn)

發(fā)布時(shí)間:2020-07-30 07:27:48 來源:網(wǎng)絡(luò) 閱讀:499 作者:13188888544 欄目:云計(jì)算

本案例適用于開發(fā)者入門理解Azure Functions/ IoT Hub / Service Bus / Power BI等幾款產(chǎn)品。


主要實(shí)戰(zhàn)的內(nèi)容為:


  1. 將設(shè)備遙測(cè)數(shù)據(jù)上傳到物聯(lián)網(wǎng)中心,

  2. 將遙測(cè)數(shù)據(jù)路由到消息中間件的Topic中,

  3. 使用Azure Function解析消息中間件Topic中的消息并推送到大屏?。


2.Azure Functions實(shí)戰(zhàn)


先了解下Azure Functions的基本概念:

https://v.qq.com/x/page/j3031z2zlns.html



在Azure Portal 創(chuàng)建Functions 并體驗(yàn):


https://v.qq.com/x/page/v3031m1g9vv.html



IoT Hub 和Service Bus的準(zhǔn)備工作,請(qǐng)參考:

設(shè)備數(shù)據(jù)通過Azure Functions 推送到 Power BI 數(shù)據(jù)大屏進(jìn)行展示(1.準(zhǔn)備工作)


使用Visual studio 2019 創(chuàng)建并發(fā)布Functions:

https://v.qq.com/x/page/a3031iu2d4q.html


本示例中的示例代碼:

using?System;using?System.IO;using?System.Net;using?System.Text;using?Microsoft.Azure.WebJobs;using?Microsoft.Azure.WebJobs.Host;using?Microsoft.Extensions.Logging;using?Newtonsoft.Json;namespace?FunctionApp2{????public?static?class?Function1????{????????[FunctionName("Function1")]????????public?static?void?Run([ServiceBusTrigger("fromiothubtopic",?"sub",?Connection?=?"sbconn")]string?mySbMsg,?ILogger?log)????????{????????????log.LogInformation($"C#?ServiceBus?topic?trigger?function?processed?message:?{mySbMsg}");????????????string?url?=?"https://api.powerbi.cn/beta/請(qǐng)?zhí)鎿Q成您自己的URL";????????????IoTDeviceMsg?msg?=?JsonConvert.DeserializeObject<IoTDeviceMsg>(mySbMsg);????????????//?Create?JSON?message????????????var?telemetryDataPoint?=?new????????????{????????????????temperature?=?msg.temperature,????????????????humidity?=?msg.humidity,????????????????time?=?DateTime.Now????????????};????????????var?messageString?=?JsonConvert.SerializeObject(telemetryDataPoint);????????????HttpWebRequest?req?=?(HttpWebRequest)WebRequest.Create(url);????????????req.Method?=?"POST";????????????req.Timeout?=?8000;//設(shè)置請(qǐng)求超時(shí)時(shí)間,單位為毫秒????????????req.ContentType?=?"application/json";????????????byte[]?data?=?Encoding.UTF8.GetBytes("["?+?messageString?+?"]");????????????req.ContentLength?=?data.Length;????????????using?(Stream?reqStream?=?req.GetRequestStream())????????????{????????????????reqStream.Write(data,?0,?data.Length);????????????????reqStream.Close();????????????}????????????HttpWebResponse?resp?=?(HttpWebResponse)req.GetResponse();????????????Stream?stream?=?resp.GetResponseStream();????????????//獲取響應(yīng)內(nèi)容????????????if?(resp.StatusCode?==?HttpStatusCode.OK)????????????{????????????????log.LogInformation($"OK:?{messageString}");????????????}????????}????}????public?class?IoTDeviceMsg????{????????public?decimal?temperature?{?get;?set;?}????????public?decimal?humidity?{?get;?set;?}????}}



針對(duì)開發(fā)人員入門,需關(guān)注如下基本概念:


1.Azure Functions Trigger


AzureFunctions?提供了幾種模板,模板支持如下的觸發(fā):

HTTPTrigger?-?使用?HTTP?請(qǐng)求觸發(fā)執(zhí)行代碼。?

TimerTrigger?-?按預(yù)定義的計(jì)劃執(zhí)行清除或其他批處理任務(wù)。

CosmosDBTrigger?-?在?NoSQL?數(shù)據(jù)庫中以集合形式添加或更新Azure CosmosDB?文檔時(shí),對(duì)這些文檔進(jìn)行處理。?

QueueTrigger?-?當(dāng)消息到達(dá)?Azure?存儲(chǔ)隊(duì)列時(shí),響應(yīng)這些消息。

BlobTrigger?- Azure?存儲(chǔ)?blob?添加到容器時(shí),處理這些?blob。?可以使用此函數(shù)調(diào)整圖像大小。

EventHubTrigger?-?響應(yīng)傳送到?Azure?事件中心的事件。?

ServiceBusQueueTrigger?-?通過偵聽消息隊(duì)列將代碼連接到其他Azure?服務(wù)或本地服務(wù)。

ServiceBusTopicTrigger?-?通過訂閱主題將代碼連接到其他Azure?服務(wù)或本地服務(wù)。

2. Azure Functions 集成

AzureFunctions?可與各種?Azure?和第三方服務(wù)集成。?這些服務(wù)可以觸發(fā)函數(shù)開始執(zhí)行,或者可用作代碼的輸入和輸出。?AzureFunctions?支持以下服務(wù)集成:

Azure CosmosDB

Azure?事件中心

Azure?通知中心

Azure?服務(wù)總線(隊(duì)列和主題)

Azure?存儲(chǔ)(blob、隊(duì)列和表)

本地(使用服務(wù)總線)

兩種計(jì)費(fèi)方式:

使用計(jì)劃(Consumptionplan:只為代碼運(yùn)行時(shí)間付費(fèi)

應(yīng)用服務(wù)計(jì)劃(App Serviceplan):將函數(shù)像?Web?應(yīng)用一樣運(yùn)行。?如果已對(duì)其他應(yīng)用程序使用應(yīng)用服務(wù),可以按相同的計(jì)劃運(yùn)行自己的函數(shù),而不用另外付費(fèi)。

具體的計(jì)費(fèi)請(qǐng)參考:

https://www.azure.cn/zh-cn/pricing/details/azure-functions/


2.Azure Functions實(shí)戰(zhàn)



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI