c#网站开发框架如何开通网络

diannao/2026/1/21 0:34:03/文章来源:
c#网站开发框架,如何开通网络,网站建设功能清单,蓝色科技网站建设简介#xff1a;如何使用 Serverless 架构实现全双工通信的应用#xff0c;Serverless 架构中数据库是如何使用的#xff0c;本篇文章将为您揭开答。 作者 | 寒斜#xff08;阿里云云原生中间件前端负责人#xff09; Serverless 的理念是即时弹性#xff0c;用完即走。…简介如何使用 Serverless 架构实现全双工通信的应用Serverless 架构中数据库是如何使用的本篇文章将为您揭开答。 作者 | 寒斜阿里云云原生中间件前端负责人 Serverless 的理念是即时弹性用完即走。服务并非长时间运行这也就意味着像 websocket 这种长链接的请求模式看起来并不适合 Serverless。 是否有其它的办法即可以满足长连接模式请求又能够利用 Serverless 本身特性呢 答案是肯定的上一篇文章我们谈及了网关的关键作用所以这次也是通过网关来解决全双工通信的问题。本次将以弹幕场景为例为大家展开我们是怎么使用 Serverless 架构来实现这个场景的。 应用效果预览 弹幕应用的实用场景比较多比如运营推广年会活动等。但是通常实现一套带管控的流程且部署发布的话一般会花费比较长的时间。本篇实战则可以让你在 2 分钟之内就部署好自己的弹幕应用。同时做到支持炫彩和弹幕内容管控你可以用它来丰富公司年会的形式。文末也会贴上源码可以供大家参考和二次定制。 架构一览 整体架构依然采用 dns 解析 - 网关 - oss | fc 。不一样的是分了 3 个静态资源的工程函数部分则采用事件驱动和 http 相结合并且 api 部分采用 tablestore 进行数据的持久化。 流程说明 弹幕应用总工由大屏幕 个人用户管理员三个客户端以及一个注册设备的服务 api 服务组成。客户端跟服务端的长链接由网关来承载每次客户端连接到网关的时候网关都会存储设备编号并且触发一次注册函数设备编号存储到 tablestore。 当用户发起弹幕的时候经网关到 api 服务api 服务会做一次查询先判断弹幕是否被管制如果无管制则直接查找当前的大屏幕设备 id并且进行网关的下行调用网关在发到前端页面显示数据。如果被管制则查询在线的管理员设备将弹幕下行通知到网关网关发送给管理员前端页面。 数据表设计 equipment设备barrage弹幕interceptor (过滤器)1、准备工作 同前篇《人人都是 Serverless 架构师 | 现代化 Web 应用开发实战》文章一样需要提前准备好域名并安装好 Serverless Devs 开发者工具,以及下面的产品 云解析 DNSAPI 网关函数计算对象存储 OSSTablestore 这次我们引入了 tablestore 的数据库记性数据的持久化功能同样需要创建好数据库实例备用。 2、操作步骤 为了更好的展示效果本次演示使用 ServerlessDesktop 来给大家演示一下如何 2 分钟部署一个复杂的弹幕应用。你可以根据自身需要选择 Serverless Devs Cli 或者 Serverless Desktop 对弹幕应用进行初始化和部署构建。 1秘钥配置 可参考密钥获取文档 alibabacloud 2初始化 本次初始化除了需要将应用模板下载到本地之外还会帮忙初始化 tablestore 的表和数据因此需要预配置几个参数 秘钥别名 - 对应你的阿里云账号域名 - 自定义域名bucketName - oss 的 bucket 名称endpoint - 对应 tablestore 实例的公网访问地址instance - 对应 tablestore 的实例名 预配置参数写好后点击 “确定”,接下来的工作就叫给 Serverless Devs它会帮我们初始化弹幕应用的表。 3构建部署 初始化之后我们重新进入配置页面对项目进行部署。配置信息 - 全量操作 - deploy 点击后其他的就交给 Serverless Devs了它会帮助我们完成: 大屏幕管理后台和玩家的前端部署;注册函数以及 api 函数的部署以及网关的路由设置和网关的域名绑定4) 部署效果查看 网关函数计算OssDNS此时访问 barragego.serverless-developer.com 发现访问不同检查发现原因是 apigateway 的域名和 oss 域名都未绑定成功我们手动处理一下: 接下来再访问 barragego.serverless-developer.com 即可看到效果 2、数据库明细 数据库方面想拿出来说一下主要本次用的数据库确实比较新也就是 tablestore。 1数据库配置传递 可以看到我们在初始化应用的时候是填写了数据库的公网访问地址和实例名称信息的初始化的时候会把用户的输入配置写入到 s.yaml 中这里如果是比较敏感的信息建议从 s.yaml 提取出来放到 .env 环境中并且 ignore 掉这个文件减少数据库信息被泄露到代码仓库的风险。 最终 Devs 会把这两个基本信息放到函数计算的环境变量中然后各运行时可以通过环境变量取到这些值比如这里是 nodejs 的运行环境则通过 process.env.instance 获取。 除了实例名称和公网访问地址外数据库的初始化还需要 用户的秘钥信息。鉴于秘钥信息的敏感性比较高不建议直接把秘钥信息配置到 s.yaml 里而是通过给函数服务授权 tablestore 角色权限让函数内置临时秘钥信息。 函数服务授权配置如下函数内获取秘钥信息如下2数据库初始化 为了减少数据库初始化次数我们可以在函数的 initializer 方法中初始化当函数未被释放的时候可以直接使用数据库的实例而不必重新连接。这样可以降低请求响应时间。单实例多并发的情况下比较实用。 exports.initializer (context, callback) {  try {    const ak context.credentials.accessKeyId;    const sk context.credentials.accessKeySecret;    const stsToken context.credentials.securityToken;    SAT.init(endpoint, instance, ak, sk, stsToken);    internal { tableClient: SAT, TableStore };    callback();  } catch (err) {    callback(err.message);  } } 数据库实例初始化之后我们通过赋值给全局变量来从其他的方法中取得实例进行后续的操作。 3CRUD tablestore 原生的 api 去做 CRUD 操作用户体验不够友好tablestore 社区提供了一个很好的封装 SAT。我们用它来做基础的增删改查会非常的方便代码看起来也非常整洁。 // 单主键查询 const getInterceptor async (ctx) {  const { tableClient } ctx.req.requestContext.internal;  const res await tableClient.table(interceptor).get(1, cols []);  return res; } // 查询全部 const getAllEquipment async (tableClient,TableStore) {  const res await tableClient.table(equipment).getRange(TableStore.INF_MIN, TableStore.INF_MAX, cols [])  return Object.keys(res).map((key) res[key]); } // 双主键一个分区键一个自增键的插入 const addBarrage async (ctx) {  const { tableClient, TableStore } ctx.req.requestContext.internal;  const { fromId, fromName, color, fontSize 28px, checkStatus 0, message } ctx.request.body;  const currentTime Date.now().toString();  const newData Object.assign({}, { fromId, fromName, color, fontSize, checkStatus: parseInt(checkStatus), message }, { sendTime: currentTime, checkTime: currentTime });  const res await tableClient.table(barrage, [gid, id]).put([1, TableStore.PK_AUTO_INCR], newData, c I);  return res; } // 更新 const updateBarrage async (ctx) {  const { tableClient } ctx.req.requestContext.internal;  const { checkStatus } ctx.request.body;  const { id } ctx.request.params;  const currentTime Date.now().toString();  const res await tableClient.table(barrage, [gid, id]).update([1, parseInt(id)], { checkStatus: parseInt(checkStatus), checkTime: currentTime }, c I)  return res; } // 条件查询 const getBarrageByCondition async (ctx) {  const { tableClient, TableStore } ctx.req.requestContext.internal;  const res await tableClient.table(barrage).search(index, [checkStatus, 0])  return res; } 当然如果你想做更高级的查询就需要自己去查阅官网文档了。 总结 这个项目本身是对 Serverless 如何使用 websocket 的一个展示示例。你可以把它变成任意相近形态的应用比如聊天室多人协作平台等。 应用本身也还有很多改进空间比如增加点赞效果管控部分可以加上管理员的登录注册等。总之你可以根据自身需求定制更高级的功能相关的源码已经提供出来供大家参考。下个篇章我会继续跟大家聊一聊 Serverless 和低代码的场景并分享一个我们最近做的实践。 原文链接 本文为阿里云原创内容未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站首选智投未来1视频上传网站建设

发送数据 public class sendmessage {public static void main (String[] args) throws IOException {//创建socket对象//在创建的同时会连接服务器,若连接不上,代码会报错Socket socketnew Socket("127.0.0.1",10086);//从连接通道中获取输出流OutputStream ossock…

做网站黑吃黑定什么罪网络推广怎么做效果好

一、介绍 在统计建模和机器学习领域,回归分析是用于理解变量之间关系的基本工具。在各种类型的回归技术中,岭回归是一种特别有用的方法,尤其是在处理多重共线性和过拟合时。本文深入探讨了岭回归的概念、其数学基础、应用、优点和局限性。 在…

四平网站公司让网站对搜索引擎友好

【背景】 日常用户使用的一个Online的基于Flask做的工具,今天忽然报错,看现象是点击表单提交按钮后发生错误。报500内部错误。 【分析】 用print步步为营接近root cause。 报错对应视图函数的展示部分正常执行。提交表单按钮后的内容全部没有正常执行。 提交表单用的方法是…

嘉兴企业网站推广方法怎么做网站外链接

DexunCloud 经过研究发现当今世界,随着网络的快速发展,网络安全问题也日益凸显。其中,DDoS(分布式拒绝服务)攻击被认为是网络安全领域里最为严重的威胁之一。毫无疑问,DDoS攻击不仅可以导致网络服务中断&am…

家政公司网站模板花生壳软件做的网站

[NCTF 2018]签到题 1.f12在index.php中找到flag [NSSCTF 2022 Spring Recruit]ezgame 1.在js源码中就有flag [UUCTF 2022 新生赛]websign 1.打开环境后发现ctrlu和右键,f12都被禁用了。两种方法,第一种:禁用js;第二中提前打开…

做电影网站如何寻找资源热搜榜百度一下你就知道

在Java编程中,实现常见的排序算法是一项基础而重要的任务。排序算法是计算机科学中的经典问题之一,涉及将一组元素按照某个顺序进行排列。Java提供了一种非常灵活的编程环境,可以用来实现各种排序算法。 冒泡排序(Bubble Sort&am…

网站报名怎么做请问婚庆网站建设该怎么做呢

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学! ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战…

深圳外贸网站建设服务哪家好常平镇网站建设公司

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&a…

做lgoo的网站一般有哪些企业网站板块

本文从不平衡学习的基础概念和问题定义出发,介绍了几类常见的不平衡学习算法和部分研究成果。总体来说,不平衡学习是一个很广阔的研究领域,但受笔者能力和篇幅的限制,本文仅对其中部分内容做了简单概述,有兴趣深入学习…

wordpress建自己的网站吗做餐饮连锁在哪个网站看

我用的是VirturalBox 主机与物理机之间的复制粘贴问题 VirtualBox Ubuntu无法安装增强功能以及无法复制粘贴踩坑记录_virtualbox安装增强功能没反应-CSDN博客 上面这篇博客帮助了我很多,摘取重要的重新提示一遍 运行虚拟机选择:设备->安装增强功能…

上传资料网站合肥seo建站

嵌入式C语言–GPT通用定时器 嵌入式C语言--GPT通用定时器 嵌入式C语言--GPT通用定时器一. GPT基本概念二. GPT的作用三. GPT通道的四个状态四. Continuous/One-Shot模式3.1)Continuous模式3.2)One-Shot模式 一. GPT基本概念 GPT即General Purpose Timer…

网站模板 兼容wordpress安装后删除

企业背景: Aigtek是一家来自中国的专业从事测量仪器研发、生产和销售的高科技企业。公司主要研发和生产功率放大器、功率放大器模块、功率信号源、计量校准源等产品。核心团队主要是来自西安交通大学及西北工业大学的专家教授等联合组成研发团队,目前拥有…

九江网站排名西宁思帽网站建设

关于AAC音频格式基本情况,可参考维基百科http://en.wikipedia.org/wiki/Advanced_Audio_Coding AAC音频格式分析 AAC音频格式有ADIF和ADTS: ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数…

自己做内部网站网站备案信息变更

前言 最近阅读 Linux 内核时,遇到了 hlist,这个 hlist 用起来像是普通的链表,但是为何使用 hlist,hlist 是怎么工作的? 相关代码 hlist_add_head(&clk->clks_node, &core->clks); /*** clk_core_link_…

网站防止攻击怎么查一个公司的网址

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号105 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查看自行车分类 4.预订自行车, 5.…

网站设计的任务企业邮箱地址怎么注册

题目 239. 滑动窗口最大值 - 力扣(LeetCode) 思路 使用一个队列充当不断滑动的窗口,每次滑动记录其中的最大值: 如何在 O(1) 时间计算最大值,只需要一个特殊的数据结构「单调队列」,push 方法依然在队尾添…

网站如何做宣传海南电商网站建设

一、 限定某个目录禁止解析php1、 核心配置文件内容php_admin_flag engine off2、curl测试时直接返回了php源代码,并未解析二、 限制user_agent1、 user_agent可以理解为浏览器标识2、核心配置文件内容RewriteEngine onRewriteCond %{HTTP_USER_AGENT} .curl. [NC,O…

古交市网站建设公司邯郸网站建设推荐咨询

1、前言 学习java基础时候多线程使用我们首先学习的 Runable 、Future 、 Thread 、ExecutorService、Callable等相关类,在我们日常工作或者学习中有些场景并不满足我们需求,JDK8引入了一个新的类 CompletableFuture 来解决之前得问题, Comp…

怎样制作一个网站网站报名照片怎么做

前言 最近因为刚入职公司开启自己的实习生涯,工作和毕设论文同步进行,导致有段时间没更新博客了,今天来分享一下最近学到的一些知识。 场景介绍 BOSS让我写一些接口,他提出这样一个需求,该接口的参数有多个&#xf…

浪漫免费表白网站宁波免费建站外包公司

在索引深入浅出:非聚集索引的B树结构在聚集表里,在聚集表里,我们看到非聚集索引的叶子层只包含非聚集索引键和聚集索引键。从聚集表结构或堆表结构里拿到剩下列,SQL Server需要进行书签/键查找操作。很多情况下书签或键查找非常消…