您好,登錄后才能下訂單哦!
本案例適用于開發(fā)者入門理解Azure Functions/ IoT Hub / Service Bus / Power BI等幾款產(chǎn)品。
主要實(shí)戰(zhàn)的內(nèi)容為:
將設(shè)備遙測(cè)數(shù)據(jù)上傳到物聯(lián)網(wǎng)中心,
將遙測(cè)數(shù)據(jù)路由到消息中間件的Topic中,
使用Azure Function解析消息中間件Topic中的消息并推送到大屏?。
先了解下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/
免責(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)容。