使用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,然后由 ...
随机推荐
- linux构建DHCP服务器
1.DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要用途:给内部网络或网络服务供应商自动分配IP地址 ...
- JavaScript(js)函数声明与函数表达式的区别
在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的. 函数声明与函数表达式用代码写出来是这 ...
- Java原来还可以这么学:如何搞定面试中必考的集合类
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...
- 部署nginx后无法访问数据库,查看www-error.log日志报错Class 'mysqli' not found in /usr/local/nginx/html/mysql.php on line 2
检查你的php-mysql包是否安装 [root@localhost nginx]# rpm -qa php-mysql 没有任何输出则没有安装,接下来用yum安装php-mysql yum -y i ...
- Docker 技术系列之安装Docker Desktop for Mac
终于要进入到Docker技术系列了,感谢大家的持续关注. 为什么要选择Docker?因为Docker 轻巧快速,提供了可行.经济.高效的替代方案.举个例子,安装Nginx,Mysql,Redis等常用 ...
- javaScript 基础知识汇总(九)
1.Rest 参数 与 Spread 操作符 当我们在代码中遇到“..."时,它不是Rest参数就是Spread操作符 区分方法: 若...出现在函数的参数列表,那它表示的就是Rest参数, ...
- 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)
前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...
- 二维数组及Arrays工具类
1.二维数组 概念: 数组中的每一个元素类型都是一维数组 二维数组初始化方式: 静态初始化: 格式: 元素类型[][] 数组名 = new 元素类型[][]{{一维数组1},{一维数组2},{一维数组 ...
- 理解Raft协议
目录 1.Paxos算法存在的问题 2.Raft算法 2.1 复制状态机 2.2. Raft算法 2.2.1 安全性问题 2.2.2 Leader选举 2.2. ...
- 重定向 CORS 跨域请求
TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...