使用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全局变量语句global
在python中使用函数体外的变量,可以使用global语句 变量可以是局部域或者全局域.定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域. 在编译器理论里著名的“龙书”中,阿霍 ...
- [每日一题系列] LeetCode 1071. 字符串的最大公因子
题目 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 "T 能除尽 S". 返回最长字符串 X,要求满足 X 能除尽 ...
- [NodeJS] async 和 await 的本质
绝大多数nodejs程序员都会使用 async 和 await 关键字,但是极少有人能真正弄明白 async 和 await 的原理.这篇文章将从零“构建”出 async 和 await 关 ...
- svn更新时同步web服务器
1.重中之重:第一次更新需要先把数据库先检索出来,执行脚本./post.commit #!/bin/sh export LANG=en_US.UTF-8 SVN=/usr/local/subversi ...
- Simulink仿真入门到精通(十四) Simulink自定义环境
14.1 Simulink环境自定义功能 sl_sustomization.m函数是Simulink提供给用户使用MATLAB语言自定义Simulink标准人机界面的函数机制.若sl_sustomiz ...
- Scrapy 入门教程
Scrapy 是用 Python 实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通常我们可以很简单的通过 ...
- JAVAEE学习day04方法的定义和重载
1.方法定义的格式 方法就是完成特定功能的代码块 修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2...){ 方法体; return 返回值; } 修饰符: 初学者只需记住publ ...
- (转)协议森林10 魔鬼细节 (TCP滑窗管理)
协议森林10 魔鬼细节 (TCP滑窗管理) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在TCP协议与"流" ...
- php7连接mysql8
最近因为剁手买了mac所以在mac上搭建lnmp环境. 刚好看到mysql从5.7跳到8,性能据说快上一倍,果断尝鲜! lnmp基本都弄好了,但是到用php连接Mysql这一步出了岔子. 出错原因: ...
- JavaScript----DOM和事件的简单学习
##DOM简单学习 * 功能:控制html文档的内容 * 代码:获取页面标签(元素)对象:Element * document.getElementById("id值"):通 ...