使用Azure Functions 在web 應用中啟用自動更新(一)分析基於輪詢的 Web 應用的限制
- 2020 年 4 月 9 日
- 筆記
1,引言
上一篇介紹了使用使用 Visual Studio 開發 “Azure Functions” 函數,此篇介紹 “Azure Functions” 的測試以及直接從 Vistual Studio 在 Azure 上的部署 ”Azure Functions“應用。
接著上一篇,本篇介紹在 “Azure Functions” 中實現一個函數,該函數僅在 Azure Cosmos DB 中的數據發生變化時運行。
在基於計時器的輪詢原型中,無論底層數據是否發生了更改,客戶端應用程式都會聯繫伺服器。 從伺服器返回數據後,無論數據是否發生了任何更改。
輪詢機制是一種低效的解決方案
2.1,分析基於輪詢的 Web 應用的限制
開發軟體:
(1)Node.js
(2)Vs Code
(3)Azure Functions Tools:是微軟提供的一個用於創建開發,測試,調試Azure Functions的本地的工具,可以參考下面的github地址進行查看
github地址:https://github.com/Azure/azure-functions-core-tools
(4)Azure Functions,Azure Storage的兩個插件
注意 安裝 “Azure Functions Core Tools” 的時候 ,筆者使用npm進行安裝的時候,一直無法安裝,所有我這裡推薦使用 “chocolatey” windows的一個包管理器
(1)chocolatey 安裝說明地址:https://chocolatey.org/install
(2)azure-functions-core-tools 安裝命令:
choco install azure-functions-core-tools --params "'/x64'"
下載示例應用程式碼:這裡使用的是微軟提供的demo
git clone https://github.com/MicrosoftDocs/mslearn-advocates.azure-functions-and-signalr.git serverless-demo
3,創建存儲賬戶
Azure Functions 需要一個存儲帳戶,在Azure的門戶的“Cloud Shell” 中執行:
az storage account create --name storage-web-test --resource-group xxxxxx-xxxxx-xxxxx-xxxx-xxx-xxxxxxxxxxxv
--kind StorageV2 --sku Standard_LRS
注意 –resource-group 這裡填寫自己對應的 “資源組的 id”,而且 –name 參數我這裡使用了變數來代替,這裡不要去糾結。
4,創建Azure Cosmos DB 賬戶
將數據存儲在Azure Cosmos DB 資料庫中,繼續在門戶的“Cloud Shell”中執行:
az cosmosdb create --name msl-sigr-cosmos-test --resource-group xxxxxx-xxxxx-xxxxx-xxxx-xxx-xxxxxxxxxxx
5,更新本地設置:
5.1,Visual Studio Code 中打開“start”文件夾。 在編輯器中打開 local.settings.json
在 local.settings.json 中,在 “Azure” 門戶中找出對應的存儲賬戶的 AzureWebJobsStorage
在 “Azure” 門戶中找出對應的存儲賬戶的 AzureCosmosDBMasterKey
,和 AzureCosmosDBConnectionString
修改對應的key,並且保存文件
6,運行應用程式
(1)安裝依賴項,並且設置數據的種子數。
npm install
(2)F5 開始調試,終端窗口中將顯示函數應用啟動。
開始啟用畫面:
啟動完成畫面:
(3)啟動第二個實例,並且啟動web應用程式
npm start
腳本會自動打開瀏覽器,並且導航到http://localhost:8080
(4)最後使用cmd’打開第三個實例,並且輸入更新數據命令 npm run update-data 來更新數據,觀察頁面數據在短時間內的變化。
web頁面的數據變化
ok,我們成功在本地使用輪詢的方式測試 “Azure Functions” 在web應用程式中啟動自動更新。
以上也是自己的學習的過程,謝謝各位指點。太晚了,先睡了
作者:Allen
程式碼稍後也會傳到 github
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。