使用Azure Functions 在web 应用中启用自动更新(一)分析基于轮询的 Web 应用的限制
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
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
使用Azure Functions 在web 应用中启用自动更新(一)分析基于轮询的 Web 应用的限制的更多相关文章
- WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。
无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...
- 30天轻松学习javaweb_Eclipse在修改了web.xml后将自动更新到tomcat服务器中
context.xml中增加<WatchedResource>WEB-INF/web.xml</WatchedResource>,Eclipse在修改了web.xml后将自动更 ...
- CleanAOP实战系列--WPF中MVVM自动更新
CleanAOP实战系列--WPF中MVVM自动更新 作者: 立地 邮箱: jarvin_g@126.com QQ: 511363759 CleanAOP介绍:https://github.com/J ...
- WinForm应用程序中实现自动更新功能
WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...
- Exchange 2019中启用自动转发到外部域
今天遇到一个用户反映自动转发的邮件规则没有生效.检查了一下,邮件规则配置没有问题.用户邮箱也能正常收到邮件,但是就是没有转发出去.仔细检查邮件规则,转发的收件人是外部邮箱.Exchange出于安全考虑 ...
- win10被微软流氓更新后编译基于visual Studio的web项目报[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围
最近忙得算焦头烂额.就在这个时候.一个不留神.微软的自动更新打开了.这流氓就在我百忙之中强迫我休息了一个多小时. 焦急等待它更新完以后赶紧打开visual studio跑代码.运行好几次都报错.想想不 ...
- 实现web消息推送的技术和采用长轮询corundumstudio介绍
实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现.传统的web服务都是客户端发出请求,服务端给出响应.但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推 ...
- Web服务器负载均衡的几种方案 : DNS轮询
本篇主要讲一下最简单的方案——DNS轮询. DNS轮询 大多域名注册商都支持多条A记录 的解析,其实这就是DNS轮询 ,DNS 服务器 将解析请求按照A记录 的顺序,逐一分配到不同的IP上,这样就完成 ...
- 轮询、长轮询与Web Socket的前端实现
Web Socket 应用场景:实现即时通讯:如股票交易行情分析.聊天室.在线游戏等,替代轮询和长轮询 轮询 轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由 ...
随机推荐
- Python实战之制作瘟疫传播实验
2020年爆发新型冠状病毒,让大家在见证中国的团结也让大家感受到疫情传播的骇人 在这里先道一声“武汉加油.中国加油” 那么现在我们尝试制作一个模拟疫情爆发的模型,以数字的形式展现疫情爆发点恐怖. (1 ...
- iview必备技能一、表单验证规则
iView表单组件使用async-validator验证器对表单域中数据进行验证,给Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. 完整的验 ...
- layui表格数据渲染SpringBoot+Thymeleaf返回的数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ")
layui table渲染数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ") ...
- PHP的json_encode和json_decode的区别
经常搞混的两个PHP函数: json_encode()是对变量进行json编码 json_encode()为要编码的值,且该函数只对utf8编码的数据有效 json_decode($json)对jso ...
- PHP攻击网站防御代码-以及攻击代码反译
<?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fil ...
- 【opencv系列01】OpenCV4.X介绍与安装
一.介绍 OpenCV(开源计算机视觉库:http://opencv.org)是英特尔开源的一个跨平台计算机视觉的BSD许可库,包含数百种计算机视觉算法.OpenCV由Gary Bradsky于199 ...
- kb4019990 补丁导致wpf无法启动异常
问题补丁:[Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Search.aspx?q=kb4019990 ) ...
- js 验证输入框是否为空
很多时候,菜鸟在对输入框是否输入值进行验证时,总会把输入“空字符串”这一状况给忽略掉.嗯,我就这样,所以记下,以后回忆下还是不错滴 <input type="text" id ...
- 《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理
目录 一.先讲讲 ES5 中构造函数(类)静态方法和多态 1-1 JS 中原型以及原型链 例子一 1-2 JS 中原型以及原型链中,我们常见的 constructor.prototype.**prot ...
- 如何查看QQ坦白说来自谁
近两天QQ新功能的坦白说开始席卷朋友圈,一个醒目的小窗就这样明晃晃出现在QQ对话列表"有人对你说:--"下面我们就来整理一下怎么看到是谁给你发送的坦白说呢? 方法一: 此方法仅限于 ...