002.反应式编程的必要性

在实际应用程序中,您可以在许多情况下发现可能的时变变量—例如,GPS位置、温度、鼠标坐标,甚至文本框的内容。所有这些都有一个随时间变化的值应用程序会发生反应,因此是时变的。还有一点值得一提时间本身就是一个时变;它的值一直在变化。在c#这样的命令式编程模型中,您将使用事件来创建响应机制更改,但这可能导致难以维护的代码,因为事件是分散的在各种代码片段之间。

想象一下,一个移动应用程序可以帮助用户在商店中找到折扣和特价商品位于他们的周边地区。我们就叫它Shoppy吧。图1.2描述了Shoppy体系结构。

在这里插入图片描述
图1.2 Shoppy应用程序架构。手机应用程序接收电流并可以通过应用程序服务查询商店和交易。
当有新的交易可用时,应用程序服务将发送推送通知推送通知服务器。

你想从Shoppy中获得的一个重要功能是设置商店图标的大小用户越靠近(从某个最小半径开始),地图上的距离越大,如图图1.3。您还希望系统在更新时将新交易推送到应用程序是可用的。
在这里插入图片描述
图1.3 Shoppy应用程序地图视图。当用户远时从Rx商店,图标是小的(上)左边),当用户靠近时,
图标变大了(在右边)。

在这个场景中,您可以说store.Location、myLocation和iconSize变量是时变的。对于每个商店,图标大小可以写成:

distance = store.Location – myLocation;
iconSize = (MINIMAL_RADIUS / distance)*MinIconSize

因为您使用了时变变量,所以每次在myLocation变量,则在距离变量中触发更改。应用程序最终会根据距离商店的远近做出反应,使商店图标显得更大或更小。注意,为简单起见,我没有处理边界检查允许的最小图标大小,该距离可能为0或差不多了。

这是一个简单的例子,但正如您将看到的,使用反应的强大功能编程模型在于其组合和连接以及划分和连接的能力拆分每个时变变量所推入的值流。这是因为响应式编程让你专注于你想要实现的东西,而不是你自己让它工作的技术细节。这导致了简单易读的代码和消除了大多数的样板代码(如变更跟踪或状态管理)使您偏离代码逻辑的意图。当代码短小精悍时,它的bug更少,更容易掌握。

我们现在可以停止讨论理论上的内容了,这样你就可以看到如何在.NET中借助Rx将响应式编程付诸实践。

——未完待续

译者:重庆教主 20240513

网站:WPF中文网 wpfsoft.com

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

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

相关文章

Unicode字符集和UTF编码

文章目录 前言一、字符集和编码方式二、unicode字符集utf32编码utf8编码utf8编码函数示例utf8解码函数示例 utf16编码utf16编码解码函数示例 总结 前言 本文详细介绍 u n i c o d e unicode unicode 字符集和其相关的三种编码方式: u t f 8 utf8 utf8,…

华为认证存储HCIE有用吗?

首先,对于个人来说,获得华为存储认证可以证明其具备信息存储技术的专业能力 1.专业认可:获得华为存储认证,尤其是HCIE-Storage级别的证书,意味着持有者对信息存储技术有着全面深入的理解,能够设计、部署、…

JPA@Entry报错Could not determine recommended JdbcType for Java type

问题很明显,无法自动决定类型,那就手动告诉该字段。 一、直接上解决方案 如果是一对一的关系用 OneToOne 如果是一对多的关系用 OneToMany 如果是多对一的关系用 ManyToOne 二、另一个无空构造函数的问题 使用注解后,注解报错找不到空的…

实训八:使用jQuery技术实现企业信息展示系统的相关功能

实训八:使用jQuery技术实现企业信息展示系统的相关功能 1.题目 使用jQuery技术实现企业信息展示系统的相关功能。 2.目的 (1)掌握jQuery的基本知识。 (2)掌握jQuery的应用方法。 (3)进一步理解Ajax程序的设计方法。 (4)会利用所学知识设计简单的应用程序。 3.内容 用jQuery技术…

【SpringBoot记录】从基本使用案例入手了解SpringBoot-数据访问-更改DataSource(2)

前言 通过上一个数据访问基本案例成功可以发现,SpringBoot在数据访问案例中也做了许多自动配置,上节只分析了其中的Properties。 而在自动配置包的jdbc下 还有其他配置文件。 根据名称可以大致了解他们的作用: DataSourceAutoConfiguration…

如何8步完成hadoop单机安装

前言 Hadoop是一个开源框架,用于存储和处理大规模数据集。 系统要求 Ubuntu 20.044GB(建议8GB)hadoop-3.3.6 步骤1:更新系统 打开终端并输入以下命令来更新您的系统: apt update 步骤2:安装Java Had…

uniapp 使用renderjs的一些详细介绍

一、简介 官方链接:uniapp官网中的renderjs方法的详细介绍 二、renderjs 定义 renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。 作用: 大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力。在视图层操作d…

.Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 发布到 Win7+

.Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 实测可以完整运行在 win7sp1/win10/win11. 如果用其他工具打包,还可以运行在mac/linux下, 传送门BlazorHybrid 发布为无依赖包方式 安装 WebView2Runtime 1.57 MB或136 MB 测试DEMO 发布为依赖包方式 安装 WebView2Runtime 1.…

python Pandas 操作

Pandas 介绍 Pandas 是一个功能强大的 Python 数据分析工具库,常用于数据处理与分析工作。它为 Python 提供了快速、灵活以及表达能力强的数据结构,旨在简化“实际工作中”的数据操作,使得 Python 成为一种强大而高效的数据分析环境。 核心特…

抱怨无用,行动破局

故事的开始 这个专栏,以及本文的目的,是为了记录我从创立盘多啦这个平台开始,到后续的发展历程的专栏。同时也是给自己一个坚持的动力和警醒的作用。 首先,我是一名程序员,并且对于自身感兴趣的东西,都有…

【仅1月出刊】普刊广涉计算机、社科、教育、法学等多领域!

【欧亚科睿学术】 1 EURASIA JOURNAL OF SCIENCE AND TECHNOLOGY 终审周期 仅1月出刊(知网收录) 《欧亚科学技术杂志》 Print ISSN:2663-1024 Online ISSN:2663-1016 出版社:UPUBSCIENCE 【简介】本刊致力于传播…

【C语言】指针(一)

目录 一、内存 1.1 ❥ 理解内存和地址的关系 1.2 ❥ 编址 二、指针变量 2.1 ❥ 取地址操作符(&) 2.2 ❥ 指针变量和解引用操作符(*) 2.3 ❥ 指针变量的大小 三、指针类型的意义 3.1 ❥ 指针的解引用 3.2 ❥ 指针-整数 3…

PCIE协议-2-事务层规范-TLP Prefix Rules

2.2.10 TLP前缀规则 以下规则适用于任何包含TLP前缀的TLP: 对于任何TLP,TLP中byte0的Fmt[2:0]字段中的值100b表示存在TLP前缀,并且Type[4]位指示TLP前缀的类型。 Type[4]位中的值0b表示存在本地TLP前缀。Type[4]位中的值1b表示存在端到端TL…

R语言数据分析案例-巴西固体燃料排放量预测与分析

1 背景 自18世纪中叶以来,由于快速城市化、人口增长和技术发展,导致一氧化二氮(N2O)、 甲烷(CH4)和二氧化碳(CO 2)等温室气体浓度急剧上升,引发了全球变暖、海平面上 升…

【数据结构】有关栈和队列相互转换问题

文章目录 用队列实现栈思路实现 用栈实现队列思路实现 用队列实现栈 Leetcode-225 用队列实现栈 思路 建立队列的基本结构并实现队列的基本操作 这部分这里就不多说了,需要的可以看笔者的另一篇博客 【数据结构】队列详解(Queue) 就简单带过一下需要实现的功能 …

信息量、熵、KL散度、交叉熵概念理解

信息量、熵、KL散度、交叉熵概念理解 (1) 信息量 信息量是对事件的不确定性的度量。 假设我们听到了两件事,分别如下:事件A:巴西队进入了世界杯决赛圈。 事件B:中国队进入了世界杯决赛圈。仅凭直觉来说,显而易见事件…

Python从0到POC编写-魔法方法

name __name__ 是系统定义的内部函数, 它的作用是识别模块。 通常我们看到这样一句话: if __name__ __main____name__ 的值有两种情况,那么挨个来说下。 如果模块是被直接执行的 ,那么 __name__ 的值 为 __main__ 例如&…

html中用frameset对窗口进行划分

html中&#xff0c;一般有<head><body>等部分&#xff0c;在用<frameset>对窗口进行区域划分时&#xff0c;<body>标签对就不再需要了。直接删除就可以了。 请看下面的示例&#xff1a; 由于使用frameset进行窗口划分时&#xff0c;对于电脑屏幕的划分…

排序-快速排序(Quick Sort)

快排的简介 快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;采用分治法的策略&#xff0c;其基本思想是选择一个基准元素&#xff0c;通过一趟排序将待排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据要…