使用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,然后由 ...
随机推荐
- 点云3d检测模型pointpillar
PointPillars 一个来自工业界的模型.https://arxiv.org/abs/1812.05784 3D目标检测通常做法 3d卷积 投影到前平面 在bird-view上操作 处理思路依然 ...
- IntelliJ IDEA神器使用技巧
说明:详情请参考慕课网课程:IntelliJ IDEA神器使用技巧:http://www.imooc.com/learn/924(感谢课程作者:闪电侠) 推荐: 1. 课程老师(闪电侠)IDEA快捷键 ...
- duid 配置监控
web.xml中加入 <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class& ...
- PHP数组的升序降序函数
数组排序函数:::sort()对数组进行升序排列rsort()对数组进行降序排列 asort()根据关联数组的值,对数组进行升序排列ksort()根据关联数组的键,对数组进行升序排列 arsort() ...
- OpenCV3入门(十四)图像特效—挤压、哈哈镜、扭曲
一.图像挤压特效 1.原理 图像压效果本质的图像坐标的非线性变换,将图像向内挤压,挤压的过程产生压缩变形,从而形成的效果. 挤压效果的实现是通过极坐标的形式,设图像中心为O(x,y),某点距离中心O的 ...
- burpsuit的安装和简单使用
一.burpsuit的环境搭建 Burp Suite可以说是Web安全工具中的瑞士军刀,打算写几篇Blog以一个小白的角度去学习Burp Suite(简称BP),会详细地说一下的用法,说明一下每一个部 ...
- 精通HTML DOM
DOM 1. 属性方法 类型/返回类型 说明 nodeName String 节点名称,根据节点的类型而定义 nodeValue string 节点的值,同样根据节点的类型而定义 nodeType s ...
- vscode灰暗色主题和 左侧加图标 Spacegray VSCode vscode-icons
vscode灰暗色主题和 左侧加图标 Spacegray VSCode vscode-icons
- 通过js自动判断移动终端设备(ios\android等)
当用户用移动设备扫描一个二维码是,将扫描后的链接链接到一个页面,该页面只包含判断移动终端设备的js,判断好后自动跳转到对应的链接 或下载对应的内容. html代码如下: <script> ...
- Python基础 | 关于“循环”那些事
目录 for 循环 list range enumerate zip while 循环 while相当于if时 while充当for和if的混合体 泛循环 列表解析 map 迭代器 生成器 循环的跳出 ...