首页> 中国专利> 带有后台应用逻辑的响应式用户界面

带有后台应用逻辑的响应式用户界面

摘要

在同步应用逻辑在后台线程上运行的同时,用户界面可在用户界面线程上被维持在响应式状态中。应用逻辑可在后台线程上访问对象,并且用户界面可在用户界面线程上访问同一对象。另外,可接收对要在对象上完成的工作的请求。如果请求要被分派到后台线程,则该工作可被分派到后台线程而不必阻塞用户界面线程。然而,如果请求要被分派到至少一个用户界面线程,则该工作可被分派到所述用户界面线程,并且所述后台线程可被阻塞。

著录项

  • 公开/公告号CN102667713A

    专利类型发明专利

  • 公开/公告日2012-09-12

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN201080053016.9

  • 申请日2010-10-29

  • 分类号G06F9/06;G06F3/048;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人黄嵩泉

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 06:28:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-03-16

    授权

    授权

  • 2015-08-12

    专利申请权的转移 IPC(主分类):G06F9/06 变更前: 变更后: 登记生效日:20150720 申请日:20101029

    专利申请权、专利权的转移

  • 2012-11-07

    实质审查的生效 IPC(主分类):G06F9/06 申请日:20101029

    实质审查的生效

  • 2012-09-12

    公开

    公开

说明书

背景技术

终端用户期望在即使同时有多个任务处于活动时现代的联网应用仍然是响应 式的。为解决这种期望,某些开发人员学习和实现异步模式和架构,异步模式和架 构可允许用户界面在应用逻辑运行的同时被解除阻塞。一般开发人员习惯于其中以 串行的方式来执行所有任务的同步模式和架构。异步模式和架构对于这些开发人员 而言可能是难以理解和正确实现的。

发明内容

无论先前的用户界面以及应用逻辑工具和技术的优点是什么,它们都无法识 别出用于本文所述和所要求保护的带有后台应用逻辑的响应式用户界面的工具和 技术,也无法实现这些工具和技术所产生的优点。

在一实施例中,所述工具和技术可包括在后台线程上运行同步应用逻辑的同 时在用户界面线程上将用户界面维护在响应式状态中。应用逻辑可在后台线程上访 问对象,并且用户界面可在用户界面线程上访问同一对象。如此处所使用的,当用 户界面能够对用户输入和更新作出响应时,用户界面被认为处于响应式状态中。同 步应用逻辑是这样的一种应用逻辑:如果按照逻辑中规定的顺序来执行任务,则该 逻辑就能够正确地操作。如此处所使用的,对象是一实体,诸如值、变量、函数或 数据结构,该实体可由计算环境中的一个或多个线程操纵,诸如运行用户界面的线 程和/或运行应用逻辑的线程。

在所述工具和技术的另一实施例中,可接收对要在对象上完成的工作的请求。 工作在广义上用来指代对对象的任何类型的操纵,诸如修改对象、加载来自对象的 信息等。可以确定该工作是要被分派到运行应用逻辑的至少一个后台线程还是要被 分派到运行一个或多个用户界面元素的至少一个用户界面线程。如果请求要被分派 到至少一个后台线程,则该工作可被分派到所述至少一个后台线程而不必阻塞所述 至少一个用户界面线程。然而,如果请求要被分派到至少一个用户界面线程,则该 工作可被分派到所述至少一个用户界面线程,并且所述至少一个后台线程可被阻 塞。

在所述工具和技术的又一实施例中,一个或多个用户界面元素可在用户界面 线程上运行。用户界面元素可表示业务对象的至少一部分。业务逻辑可被应用于后 台线程上的业务对象,并且业务对象可在用户界面线程上被修改。在对象在用户界 面线程上被修改的同时,后台线程可被阻塞。如此处所使用的,业务对象是表示一 个或多个业务项目的对象,诸如人(顾客、厂商、雇员等)、发票、会议室、大楼 等。业务逻辑是被应用于一个或多个业务对象的应用逻辑,诸如被应用以使得对象 如对于该对象所表示的业务项目的类型所预期般地操作的逻辑、或者被应用以使得 对象配置以符合特定业务实体的规则(用户对象可访问特定类型的发票的规则等 等)的逻辑。

提供本发明内容是为了以简化的形式介绍一些概念。这些概念将在以下具体 实施方式中进一步描述。本发明内容并不旨在标识所要求保护主题的关键特征或必 要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在 背景技术、具体实施方式、或附图中讨论的特定技术、工具、环境、缺点、或优点 的实现。

附图说明

图1是其中可实现所描述的各实施例中的一个或多个实施例的合适的计算环 境的框图。

图2是结合使用其可实现所描述的各实施例中的一个或多个实施例的计算环 境的框图。

图3是示出用于执行从对象的信息的双线程数据读取的技术的一示例的示意 图。

图4是示出用于执行至对象的信息的双线程数据写入的技术的一示例的示意 图。

图5是用于带有后台应用逻辑的响应式用户界面的技术的流程图。

图6是用于带有后台应用逻辑的响应式用户界面的另一技术的流程图。

图7是用于带有后台应用逻辑的响应式用户界面的又一技术的流程图。

图8是用于带有后台应用逻辑的响应式用户界面的又一技术的流程图。

具体实施方式

此处描述的各实施例涉及用于在应用逻辑在后台中运行的同时允许用户界面 保持响应式的改进的技术和工具。这可以在应用逻辑开发人员不必理解异步开发技 术的情况下实现。这种改进和/或其他改进可源于分开或组合地使用各种技术和工 具。

这些技术和工具可包括具有能够被用户界面线程和后台线程访问的对象。同 步应用逻辑可在后台线程上运行。因此,该应用逻辑的开发人员可以不实现或甚至 不理解异步模式和编码技术。在应用逻辑在后台线程上运行的同时,用户界面可在 用户界面线程上被维持在响应式状态中。即使在后台线程正在运行与对象有关的应 用逻辑时,用户界面线程也可以处于运行中。

当用户界面线程接收到请求操纵该对象的用户输入时,用户界面线程可通过 将该用户输入转发至后台线程并且随后在无需同步地等待操纵代码完成的情况下 继续来异步地履行所述请求。转发和/或发送诸如请求、用户输入等的通信可包括 将通信转换成不同的形式、将通信与其他的通信进行组合、将通信分成各个部分等 等。后台线程可使用应用逻辑来处理该用户输入。如果对象要被操纵,则后台线程 可直接访问该对象并操纵该对象。然而,在某些情形中,可能需要在用户界面线程 上通知用户界面元素该对象已经被操纵。如果是这样,则工作请求可被发送至用户 界面线程以供用户界面线程本身执行操纵,以使得可在用户界面线程上如预期地提 出变更通知。在这种情况下,后台线程可同步地等待用户界面线程完成操纵。

用户界面和后台线程之间的通信可通过对象来进行。由此,后台和用户界面 线程可如它们与应用对象正常交互得那样各自与对象交互。然而,该对象可包括与 两个线程交互的功能,以及在两个线程之间传递任务和通信的功能。

由此,从此处描述的工具和技术中可以实现一个或多个实质的益处。例如, 开发人员可开发用于在后台线程上运行的同步应用逻辑。例如,对象与多个线程进 行交互的功能可被内置到软件开发系统中,诸如Microsoft’s Visual开发系 统中。开发人员可使用该开发系统来开发具有开发人员和/或开发系统所提供的应 用逻辑的应用,诸如在Visual开发系统中开发的用于在Microsoft’s 浏览器插件上运行的应用。然而,也可使用其他类型的应用和/或其他 类型的软件开发系统。无论具体的开发系统和/或应用类型是什么,开发人员都可 以同步地构造应用逻辑。然而,如上所述,此处描述的工具和技术可允许用户界面 将请求对象操纵的用户输入转发至后台线程,并且在不必同步地等待操纵代码完成 所请求的操纵的情况下就继续。由此,即使在应用逻辑在后台线程中运行的同时, 用户界面线程以及在该用户界面线程上运行的用户界面元素也可以是响应式的。

所附权利要求中定义的主题不必限于本文描述的益处。本发明的特定实现可 提供本文描述的益处的全部、一些、或未提供本文描述的益处。尽管本文出于呈现 的目的以特定的顺序次序描述了用于各种技术的操作,但应理解除非要求特定的排 序,否则这种描述方式涵盖了操作顺序上的重新安排。例如,在某些情况下,可以 重新安排或并发执行顺序地描述的操作。本文参照流程图描述的技术可被用于本文 描述的一个或多个系统和/或用于一个或多个其他系统。例如,此处描述的各种工 具和技术可用硬件或软件、或两者的组合来实现。此外,为了简单起见,流程图可 能未示出可结合其他技术来使用特定技术的各种方式。

I.示例性计算环境

图1示出其中可实现所描述的各实施例中的一个或多个实施例的合适的计算 环境(100)的一般化示例。例如,一个或多个这样的计算环境可用作用于带有后 台应用逻辑的响应式用户界面的环境。一般而言,可使用各种不同的通用或专用计 算系统配置。适用于此处所描述的工具和技术的公知计算系统配置的示例包括,但 不限于,服务器场和服务器群集、个人计算机、服务器计算机、手持式或膝上型设 备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型 机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。

计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发 明可以在完全不同的通用或专用计算环境中实现。

参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。 在图1中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算 机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执 行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如, 寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存)、 或两者的某种组合。存储器(120)存储使用带有后台应用逻辑(诸如同步后台应 用逻辑)的响应式用户界面的软件(180)。

尽管为了清楚起见用线条示出了图1的各框,但是,实际上,描绘各组件并 不是那样清楚,并且用比喻方法,图1以及下文讨论的其他附图的线条更精确地将 是灰色的和模糊的。例如,可以将诸如显示设备等呈现组件认为是I/O组件。而且, 处理器具有存储器。发明人关于此点认识到,这是本领域的特性,并且重申,图1 的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如 “工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们 全部都被认为是在图1的范围之内的并且被称为“计算机”、“计算环境”、或“计算 设备”。

计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、 一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连 接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的 各组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它 软件提供操作环境,并协调计算环境(100)的各组件的活动。

存储(140)可以是可移动或不可移动的,并可包括诸如磁盘、磁带或磁带盒、 CD-ROM、CD-RW、DVD之类的计算机可读存储介质,或者可用于储存信息并可 在计算环境(100)内访问的任何其它介质。存储(140)储存用于软件(180)的指 令。

输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备;语音 输入设备;扫描设备;网络适配器;CD/DVD读取器;或可向计算环境(100)提 供输入的另一设备。输出设备(160)可以是显示器、打印机、扬声器、CD/DVD 刻录机、网络适配器、或从计算环境(100)提供输出的另一设备。

通信连接(170)允许通过通信介质与另一计算实体进行通信。因此,计算环 境(100)可使用通往诸如个人计算机、服务器、路由器、网络PC、对等设备或另 一常见网络节点等一个或多个远程计算设备的逻辑连接而工作在联网环境中。通信 介质以已调制数据信号的形式传达诸如数据或计算机可执行指令或请求等信息。已 调制数据信号是其一个或多个特征以在信号中编码信息的方式设置或改变的信号。 作为示例而非局限,通信介质包括以电、光、RF、红外、声学或其他载波实现的 有线或无线技术。

各种工具和技术可以在计算机可读介质的一般上下文中描述。计算机可读介 质可以是可在计算环境内访问的任何可用介质。作为示例而非局限,对于计算环境 (100),计算机可读介质包括存储器(120)、存储(140)、和以上的组合。

这些工具和技术可在诸如程序模块中所包括的在目标真实或虚拟处理器上的 计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包 括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数 据结构等。程序模块的功能可以如各实施例中所需的组合或在程序模块之间分离。 用于程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。在分布式 计算环境中,程序模块可以位于本地和远程计算机存储介质中。

出于演示的目的,详细描述使用了如“确定”、“选择”、“调整”、“发送”和“操 作”等术语来描述计算环境中的计算机操作。这些以及其他类似术语是对计算机执 行的操作的高层抽象,并且不应混淆于人类执行的动作,除非明确指出人类(诸如 “用户”)的动作执行。对应于这些术语的实际的计算机操作取决于实现而不同。

II.用于具有应用逻辑的响应式用户界面的系统和环境

图2是结合其可诸如通过在运行后台应用逻辑的同时将用户界面维持在响应 式状态中来实现此处描述的各实施例中的一个或多个实施例的计算环境(200)的 框图。计算环境(200)可包括诸如业务对象的应用对象(210)。对象(210)可 包括可操作用于调度多个线程上的任务的调度程序(212),如下文更详细地描述 的。另选地,调度程序可在对象(210)外部。

A.用户界面组件

用户界面(220)可包括一个或多个用户界面元素,它们可表示对象(210) 的至少一部分。例如,用户界面可包括表示对象(210)中的一个或多个数据域的 一个或多个标准用户界面元素(列表、复选框、文本框、按钮、图、图片等)。用 户界面可在用户界面线程(222)上运行,或可能地在诸如线程池之类的多个用户 界面线程(未示出)上运行。用户界面线程(222)可专用于用户界面(220),或 者它可为诸如其他用户界面共享。用户界面线程(222)可根据标准排队实践(先 进先出排序等)来从用户界面任务队列(224)接收任务。用户界面分派器(226) 可从对象(210)中的调度程序(212)接收任务,并且可将任务输入到用户界面任 务队列(224)中以供在用户界面线程(222)上执行。同样,用户界面线程(222) 可访问对象(210),诸如以将修改或访问请求传递给对象(210)。在操纵对象(210) 时还可诸如通过使来自对象的信息被加载或通过修改对象(210)在用户界面线程 (222)上发出针对一个或多个监听者(诸如用户界面(220))通知。

B.逻辑和后台组件

诸如业务逻辑之类的应用逻辑(230)可在后台线程(232)上运行并且可被 应用于对象(210)。例如,应用逻辑(230)可包括控制对对象(210)的修改和 访问的标准逻辑。应用逻辑(230)可在后台线程(232)上运行。事实上,应用逻 辑(230)可在诸如线程池配置中的多个后台线程(232)上运行,并且线程可专用 于或可以不专用于运行应用逻辑(230)。后台任务队列(234)可根据标准排队实 践(先进先出排序等)来将任务提供给后台线程(232)。后台分派器(236)可从 对象(210)中的调度程序(212)接收任务,并且可将任务输入到后台任务队列(234) 中以供在后台线程(232)上执行。同样,后台线程(232)可访问对象(210), 诸如以将修改或访问请求传递给对象(210)。在操纵对象(210)时还可在后台线 程(232)上发出针对一个或多个监听者(诸如来自应用逻辑(220)的监听者)的 通知。

C.与用户界面和后台线程的对象交互

对于对象(210)的操作以及它的调度程序(212)与用户界面分派器(226) 以及后台分派器(236)之间的交互可允许同步应用逻辑(230)以异步的方式(即, 应用逻辑(230)可在后台线程(232)上运行,同时用户界面(220)保持解除阻 塞并且在用户界面线程(222)上是响应式的)在后台线程(232)上运行。当工作 由后台线程(232)发起时,工作可被分派到用户界面分派器(226)从而以同步的 方式来运行(即,用户界面线程(222)可执行从后台线程(232)分派的工作,同 时后台线程(232)被阻塞)。这可以允许避免线程(222和232)之间的冲突,因 为在用户界面线程(222)实际上操纵对象(210)的同时后台线程(232)可被阻 塞。此外,即使应用逻辑(230)是同步的,在应用逻辑(230)在运行的同时,用 户界面(220)也可保持响应式的。

调度程序(212)可隐式地知晓用于对象(210)的用户界面分派器(226)和 后台分派器(236)。如下文中更详细地讨论的,对象(210)可能已经定义了用于 从用户界面线程(222)或后台线程(232)进行访问的行为,以使得用户界面数据 绑定和后台应用逻辑任务可并发地工作。因此,对象(210)可从线程(222或232) 中的任一个的角度来管理共同的操作,并且组织用户界面分派器(226)和后台分 派器(236)之间的工作,以使得每一线程(222和232)都可以看见业务对象(210) 的一致的视图而不会意识到有其他线程(222或232)。

对象(210)可如此操作以使得用户界面线程不被阻塞,即使在应用逻辑(230) 正在对象(210)上运行的时候。应用逻辑(230)可由后台分派器(236)在后台 线程(232)上执行。对应用逻辑(230)的这种执行可包括命令、数据确认、属性 计算、数据访问等。诸如数据绑定以及用户界面元素的执行的用户界面(220)的 任务可由用户界面分派器(226)在用户界面线程(222)上执行。用户界面线程(222) 和后台线程(232)可发起业务对象(210)的属性获取和设置以及命令调用。另外, 用户界面线程(222)和后台线程(232)可监听对象(210)的变更事件,诸如属 性和列表变更事件。可在监听者自己的线程(222或232)上发出通知。

另外,对象(210)和它的调度程序(212)可以在分派器(226和236)之间 来回移动工作,并且按需阻塞后台线程。这种配置可允许用户界面(220)和应用 逻辑(230)两者都看见对象(210)的一致的视图,并且即使在应用逻辑(230) 在对象(210)上运行时也允许用户界面(220)保持响应式的。

有了计算环境(200)的这些特征,可以实现一个或多个益处。例如,用户界 面线程(222)和后台线程(232)两者可看见业务对象(210)的一致的状态,而 不存在线程之间的数据竞赛或高速缓存相干性问题。应用逻辑(230)可被编写成 要在同步环境中运行似的,尽管它可在用户界面(220)是响应式的同时运行。

因此,应用逻辑(230)的开发人员可用同步的方式来编写应用逻辑,并且通 常可在调试的同时与当前的后台线程(232)交互。此外,对于终端用户,用户界 面(220)可保持响应式的,并且很大程度上与对象(210)的真实状态(如后台线 程(232)所表示的)保持一致。当应用逻辑(230)在运行时,运行应用逻辑(230) 和用户界面(220)的应用可以运行而无需挂起,并且用户界面(220)可立即刷新 以指示对业务对象(210)的当前状态的变更。

尽管用户界面(220)能够保持很大程度的一致,但在由后台线程(232)处 理对信息的更新时在更新用户界面(220)上的信息方面可能存在某些时间滞后。 如果时间滞后太长,则用户界面(220)可通知用户后台线程正在工作(诸如通过 更新值)。这可以通过以下方式来实现:用户界面(220)询问后台分派器(236) 它当前是否正在处理,并且如果是,则通知用户该值可能被改变。例如,用户界面 可呈现中间待处理状态(如果存在待处理的工作)。

应用可与多个对象(210)交互。在一种配置中,每一个这样的对象(210) 可具有其自己专用的后台分派器(236)。另选地,更复杂的后台分派器(236)能 够与多个对象交互。这可能还涉及更复杂的对象(210),诸如包括更复杂的调度 程序(212)的对象。应用还可具有多个用户界面(220),诸如在应用具有多个屏 幕并且每一个屏幕被认为是单独的用户界面(220)的情况中。每一个这样的用户 界面(220)可具有其自己的专用的用户界面分派器(226),所述分派器将任务分 派给一个或多个线程。然而,再一次,更复杂的用户界面分派器(226)和/或更复 杂的对象(210)可允许用户界面分派器(226)在多个用户界面(220)和/或多个 用户界面线程(222)之间共享。

III.双线程的数据读取和写入

现在将参考图3和图4来讨论用于对象的双线程的数据读取和写入的技术。 图3和图4被简化以忽略诸如用户界面和后台分派器以及对象调度程序的细节。然 而,用户界面和后台分派器可用于将任务分派到各个线程,并且对象中的调度程序 可为图3-4的技术在不同的线程/分派器之间调度任务,如上文参考图2所讨论的。

A.对象的双线程数据读取

现在参考图3,将讨论用于执行从对象的信息的双线程数据读取的技术(300) 的一示例。图3在中心示出对象(310)。用户界面(320)可表示对象(310)的 至少一部分,并且可以在用户界面线程(322)上运行,该线程在对象(310)的左 边示出。在对象(310)的右边,应用逻辑(330)被示为在后台线程(332)上运 行。在图3中的附图下半部分以及下文讨论的图4中示出稍后的动作,尽管在实际 操作中可对这些动作进行某种重新排序。

用户界面(320)可发起数据读取。例如,这可以响应于请求用户界面元素来 显示来自对象(310)的信息的用户输入来完成。由此,用户界面(320)可将请求 (350)发送给对象(310)以获得信息(诸如关于顾客的信息、关于发票的信息等)。 例如,这可包括作出对于对象(310)的应用编程接口(API)调用。对象(310) 可识别出该调用来自用户界面线程(322)而非后台线程。由此,对象(310)可返 回所请求的当前信息而无需加载该信息。这可导致该对象将空信息返回(352)发 送给用户界面线程(322)上的用户界面(320)。

对象(310)还可通过将获得请求(350)排队(354)至后台线程(332)来 将信息请求转发至后台线程(332)上的应用逻辑(330)。响应于排队(354)至 后台线程(332)的获得请求(350),应用逻辑(330)可被应用(355)于所述获 得请求(350)。例如,应用逻辑(330)可被应用(355)以确定在应用逻辑(330) 下用户是否被授权访问所请求的信息。如果所请求的对信息的读取被授权,则在后 台线程(332)上运行的应用逻辑(330)可发送获得请求(356)(诸如通过发出 对于对象(310)的API调用),从而向对象(310)请求信息。

对象可识别出获得请求(356)是来自后台线程(332)的,并且可阻塞(358) 后台线程(332),同时在用户界面线程(322)上加载和设置对象(310)。例如, 这可以通过以下方式来完成:对象(310)将任务在用户界面线程(322)上排队, 这将导致用户界面线程(322)发出要从对象(310)加载和设置所请求的信息的低 级调用。对象(310)可识别出这一低级调用,并且可以在用户界面线程(322)上 加载和设置(370)所请求的信息而非将该低级调用转发至后台线程(332)。这可 导致向用户界面线程上的一个或多个监听者发出变更的通知(372)(加载和设置 所请求的信息)。用户界面(320)可接收该通知(372),并且可以通过读取新加 载的信息并更新用户界面(320)中的任何对应的元素来作出响应。

另外,对象(310)可对后台线程解除阻塞(374)并且向后台线程上的一个 或多个监听者发出变更通知(376)。另外,响应于所述获得请求(356),所请求 的信息可被返回(378)至后台线程(332)中的应用逻辑(330)。

在这一技术中,应用逻辑(330)可在后台线程(332)中同步地应用于获得 关于对象的信息的请求(350)。在这么做的同时,用户界面(320)可保持在用户 界面线程(322)上运行而不被阻塞,以使得结果实际上是对后台线程(332)和用 户界面线程(322)的并行操作。由此,用户界面(320)可保持对用户输入是响应 式的,即使应用逻辑(330)正被应用于获得请求(350)。然而,在用户界面线程 (322)加载和设置(370)所请求的信息的同时后台线程可被阻塞(358),以使 得可以避免两个线程(322和332)之间的冲突,诸如数据竞赛。这可以在允许应 用逻辑(330)以同步的方式被构造、缓解应用逻辑开发人员必须应用复杂的异步 编码技术的负担的同时来实现。

如果并未预期要在用户界面线程上完成所述获得,则后台线程还可直接在后 台线程上获得数据而不涉及用户界面线程。这可以在以下情况下完成:通过高速缓 存刚刚检索到的值或者设置值而不使值变化(诸如在数据获得请求是针对已经被加 载的值的情况下)。在从后台线程接收要获得数据的请求时,对象可确定所述获得 是否可在后台线程上完成、或者所述获得是否要在用户界面线程上完成。

B.对于对象的双线程的数据写入

现在参考图4,将讨论用于执行至对象的信息的双线程数据写入的技术(400) 的一示例。类似于图3,图4在中心示出对象(410)。用户界面(420)表示对象 (410)的至少一部分,并且在用户界面线程(422)上运行,该线程在对象(410) 的左边示出。在对象(410)的右边,应用逻辑(430)被示为在后台线程(432) 上运行。

用户界面(420)可例如响应于对与对象(410)中的信息相对应的用户界面 元素作出变更的用户输入而发起数据写入。由此,用户界面(420)可将设置请求 (450)发送至对象(410)以通过在对象(410)中设置新的信息来修改信息。例 如,这可包括作出对于对象(410)的API调用。对象(410)可识别出该调用来 自用户界面线程(422)而非后台线程。由此,对象(410)可将返回(452)发送 至用户界面(420)而无需实际地设置信息。

对象(410)还可通过将设置请求(450)排队(454)至后台线程(432)来 将信息请求转发至后台线程(432)上的应用逻辑(430)。响应于排队至后台线程 (432)的设置请求(450),应用逻辑(430)可被应用于(455)所述请求。例如, 应用逻辑(430)可被应用(455)以确定在该应用逻辑下用户是否被授权修改所请 求的信息、或者确定是否要发起对所述对象(410)或一个或多个其他对象的相关 修改。如果所请求的对信息的写入被授权,则在后台线程(432)上运行的应用逻 辑(430)可发送设置请求(456)(诸如通过发出对于对象(410)的API调用), 从而请求设置该信息。

对象(410)可识别出设置请求(456)是来自后台线程(432)的,并且可阻 塞(458)后台线程(432),同时在用户界面线程(422)上修改对象(410)。例 如,这可以通过以下方式来完成:对象(410)将任务在用户界面线程(422)上排 队,这将导致用户界面线程(422)发出要通过设置新的信息来修改对象(410)的 低级调用。对象(410)可识别出这一低级调用,并且可以在用户界面线程(422) 上设置(470)所请求的信息而非将该低级调用转发至后台线程(432)。这可导致 向用户界面线程(422)上的一个或多个监听者发出变更的通知(472)(设置所请 求的信息)。用户界面(420)可接收该通知(472),并且可以通过读取新设置的 信息并更新用户界面(420)中的任何对应的元素来作出响应。

另外,对象(410)可对后台线程(432)解除阻塞(474)并且向后台线程(432) 上的一个或多个监听者发出变更通知(476)。另外,响应于设置请求(456),返 回(478)可被发送至后台线程中的逻辑应用(430),所述返回报告信息已被成功 设置。

类似于上述数据读取技术(300),在这一数据写入技术(400)中,应用逻 辑(430)可在后台线程(432)中同步地应用于设置关于对象(410)的信息的请 求(450)。在这么做的同时,用户界面(420)可保持在用户界面线程(422)上 运行而不被阻塞,以使得整个结果是异步操作。由此,用户界面(420)可保持对 用户输入是响应式的,即使应用逻辑(430)正被应用于设置请求(450)。然而, 在用户界面线程(422)设置(470)所请求的信息的同时后台线程可被阻塞(458), 以使得可以避免两个线程(422和432)之间的冲突,诸如数据竞赛。这可以在允 许应用逻辑(430)以同步的方式被构造、缓解应用逻辑开发人员必须应用复杂的 异步编码技术的负担的同时来实现。

如果正被设置的值对于其他值而言是独立的,并且在用户界面检查对象期间 不会造成潜在的不一致,则后台线程还可直接在后台线程上设置数据而不涉及用户 界面。在从后台线程接收要设置数据的请求时,对象可确定所述设置是否可在后台 线程上设置、或者所述设置是否要在用户界面线程上设置。

IV.用于带有后台应用逻辑的响应式用户界面的技术

将参考图5和图6来讨论用于带有后台应用逻辑的响应式用户界面的技术。 首先参考图5,在该技术中,同步应用逻辑可在至少一个后台线程上运行(510), 并且应用逻辑可访问对象。对象可以是业务对象,而应用逻辑可以是业务逻辑。在 应用逻辑运行(510)的同时,用户界面可在至少一个用户界面线程上被维持(520) 处于响应式状态,并且用户界面可以访问对象。维持(520)用户界面处于响应式 状态可包括不阻塞所述至少一个用户界面线程,并且所述维持(520)还可包括在 所述至少一个用户界面线程上访问对象。

参考图6,该技术还可包括将来自所述至少一个用户界面线程的用户输入请求 发送(610)至所述对象,并且将所述用户输入请求从所述对象转发(620)至至少 一个后台线程的分派器。另外,该技术可包括,响应于接收到用户输入请求,将所 述用户输入请求分派(630)到至少一个后台线程的工作线程,将应用逻辑应用(640) 于所述工作线程上的用户输入请求,将所述工作请求从所述工作线程发送(650) 至所述对象,以及将所述工作请求从所述对象转发(660)至所述至少一个用户界 面线程的分派器。该技术还可包括,响应于在所述至少一个用户界面线程的分派器 处接收到工作请求,在所述至少一个用户界面线程上执行(670)对象上的工作(设 置对象中的信息、从对象加载信息等)。另外,在所述至少一个用户界面线程上执 行(670)所述工作的同时,所述至少一个后台线程可被阻塞(680)。例如,如果 所述至少一个后台线程是线程池,则所述阻塞可包括阻塞多个线程或者仅仅阻塞实 际上处理所述工作的那个线程。

现在参考图7,将讨论用于带有后台应用逻辑的响应式用户界面的另一技术。 在该技术中,可接收(710)要完成对象(诸如业务对象)上的工作的请求。例如, 工作可包括从对象加载信息、设置对象中的信息等等。请求可在对象本身处被接收 (710)。可以确定(720)该工作是要被分派到运行应用逻辑(诸如业务逻辑)的 至少一个后台线程还是要被分派到运行一个或多个用户界面元素的至少一个用户 界面线程。例如,确定(720)所述工作是要被分派到至少一个后台线程还是被分 派到至少一个用户界面线程可包括,确定所述请求是来自至少一个后台线程的还是 来自至少一个用户界面线程的。如果请求来自至少一个用户界面线程而没有由至少 一个后台线程处理,则确定(720)所述工作是要被分派到至少一个后台线程还是 被分派到至少一个用户界面线程可包括,确定所述工作要由至少一个后台线程来完 成。

如果请求要被分派到至少一个后台线程,则所述工作可被分派(730)到至少 一个后台线程而不必阻塞所述至少一个用户界面线程。然而,如果请求要被分派到 至少一个用户界面线程,则所述工作可被分派(735)到所述至少一个用户界面线 程,并且所述至少一个后台线程可被阻塞(750)。

如果所述工作被分派(730)到至少一个后台线程,则该技术该可包括将应用 逻辑应用(740)于所述至少一个后台线程上的请求。

现在参考图8,将讨论用于带有后台应用逻辑的响应式用户界面的又一技术。 该技术可包括在至少一个用户界面线程上运行(810)一个或多个用户界面元素。 该一个或多个用户界面元素可表示业务对象的至少一部分。用户输入请求可从至少 一个用户界面线程被发送(815)至至少一个后台线程。业务逻辑可被应用(820) 于至少一个后台线程上的业务对象,并且该业务对象可在至少一个后台线程上被访 问(840)而不必阻塞至少一个用户界面线程。同样,修改请求可从至少一个后台 线程被发送(850)至至少一个用户界面线程。例如,修改请求可被发送至对象并 从该对象被转发至至少一个用户界面线程。修改请求可响应于发送自至少一个用户 界面线程的用户输入请求而被发送(850)至至少一个后台线程。将用户输入请求 从至少一个用户界面线程发送至至少一个后台线程可包括,将用户输入请求发送至 对象并且将用户输入请求从该对象转发至至少一个后台线程。

业务对象可在至少一个用户界面线程上被修改(870),并且在至少一个用户 界面线程修改业务对象的同时至少一个后台线程可被阻塞(880)。所述修改(870) 可响应于来自至少一个后台线程的请求而完成。在业务对象被修改(870)之后, 至少一个后台线程可被解除阻塞(890)。

尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附 权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特 征和动作是作为实现权利要求的示例形式公开的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号