CN102667713B - 带有后台应用逻辑的响应式用户界面 - Google Patents

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

Info

Publication number
CN102667713B
CN102667713B CN201080053016.9A CN201080053016A CN102667713B CN 102667713 B CN102667713 B CN 102667713B CN 201080053016 A CN201080053016 A CN 201080053016A CN 102667713 B CN102667713 B CN 102667713B
Authority
CN
China
Prior art keywords
user
thread
interface
request
background
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080053016.9A
Other languages
English (en)
Other versions
CN102667713A (zh
Inventor
J·J·里瓦德
S·W·普罗文
S·P·阿农森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102667713A publication Critical patent/CN102667713A/zh
Application granted granted Critical
Publication of CN102667713B publication Critical patent/CN102667713B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

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

Description

带有后台应用逻辑的响应式用户界面
背景技术
终端用户期望在即使同时有多个任务处于活动时现代的联网应用仍然是响应式的。为解决这种期望,某些开发人员学习和实现异步模式和架构,异步模式和架构可允许用户界面在应用逻辑运行的同时被解除阻塞。一般开发人员习惯于其中以串行的方式来执行所有任务的同步模式和架构。异步模式和架构对于这些开发人员而言可能是难以理解和正确实现的。
发明内容
无论先前的用户界面以及应用逻辑工具和技术的优点是什么,它们都无法识别出用于本文所述和所要求保护的带有后台应用逻辑的响应式用户界面的工具和技术,也无法实现这些工具和技术所产生的优点。
在一实施例中,所述工具和技术可包括在后台线程上运行同步应用逻辑的同时在用户界面线程上将用户界面维护在响应式状态中。应用逻辑可在后台线程上访问对象,并且用户界面可在用户界面线程上访问同一对象。如此处所使用的,当用户界面能够对用户输入和更新作出响应时,用户界面被认为处于响应式状态中。同步应用逻辑是这样的一种应用逻辑:如果按照逻辑中规定的顺序来执行任务,则该逻辑就能够正确地操作。如此处所使用的,对象是一实体,诸如值、变量、函数或数据结构,该实体可由计算环境中的一个或多个线程操纵,诸如运行用户界面的线程和/或运行应用逻辑的线程。
在所述工具和技术的另一实施例中,可接收对要在对象上完成的工作的请求。工作在广义上用来指代对对象的任何类型的操纵,诸如修改对象、加载来自对象的信息等。可以确定该工作是要被分派到运行应用逻辑的至少一个后台线程还是要被分派到运行一个或多个用户界面元素的至少一个用户界面线程。如果请求要被分派到至少一个后台线程,则该工作可被分派到所述至少一个后台线程而不必阻塞所述至少一个用户界面线程。然而,如果请求要被分派到至少一个用户界面线程,则该工作可被分派到所述至少一个用户界面线程,并且所述至少一个后台线程可被阻塞。
在所述工具和技术的又一实施例中,一个或多个用户界面元素可在用户界面线程上运行。用户界面元素可表示业务对象的至少一部分。业务逻辑可被应用于后台线程上的业务对象,并且业务对象可在用户界面线程上被修改。在对象在用户界面线程上被修改的同时,后台线程可被阻塞。如此处所使用的,业务对象是表示一个或多个业务项目的对象,诸如人(顾客、厂商、雇员等)、发票、会议室、大楼等。业务逻辑是被应用于一个或多个业务对象的应用逻辑,诸如被应用以使得对象如对于该对象所表示的业务项目的类型所预期般地操作的逻辑、或者被应用以使得对象配置以符合特定业务实体的规则(用户对象可访问特定类型的发票的规则等等)的逻辑。
提供本发明内容是为了以简化的形式介绍一些概念。这些概念将在以下具体实施方式中进一步描述。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在背景技术、具体实施方式、或附图中讨论的特定技术、工具、环境、缺点、或优点的实现。
附图说明
图1是其中可实现所描述的各实施例中的一个或多个实施例的合适的计算环境的框图。
图2是结合使用其可实现所描述的各实施例中的一个或多个实施例的计算环境的框图。
图3是示出用于执行从对象的信息的双线程数据读取的技术的一示例的示意图。
图4是示出用于执行至对象的信息的双线程数据写入的技术的一示例的示意图。
图5是用于带有后台应用逻辑的响应式用户界面的技术的流程图。
图6是用于带有后台应用逻辑的响应式用户界面的另一技术的流程图。
图7是用于带有后台应用逻辑的响应式用户界面的又一技术的流程图。
图8是用于带有后台应用逻辑的响应式用户界面的又一技术的流程图。
具体实施方式
此处描述的各实施例涉及用于在应用逻辑在后台中运行的同时允许用户界面保持响应式的改进的技术和工具。这可以在应用逻辑开发人员不必理解异步开发技术的情况下实现。这种改进和/或其他改进可源于分开或组合地使用各种技术和工具。
这些技术和工具可包括具有能够被用户界面线程和后台线程访问的对象。同步应用逻辑可在后台线程上运行。因此,该应用逻辑的开发人员可以不实现或甚至不理解异步模式和编码技术。在应用逻辑在后台线程上运行的同时,用户界面可在用户界面线程上被维持在响应式状态中。即使在后台线程正在运行与对象有关的应用逻辑时,用户界面线程也可以处于运行中。
当用户界面线程接收到请求操纵该对象的用户输入时,用户界面线程可通过将该用户输入转发至后台线程并且随后在无需同步地等待操纵代码完成的情况下继续来异步地履行所述请求。转发和/或发送诸如请求、用户输入等的通信可包括将通信转换成不同的形式、将通信与其他的通信进行组合、将通信分成各个部分等等。后台线程可使用应用逻辑来处理该用户输入。如果对象要被操纵,则后台线程可直接访问该对象并操纵该对象。然而,在某些情形中,可能需要在用户界面线程上通知用户界面元素该对象已经被操纵。如果是这样,则工作请求可被发送至用户界面线程以供用户界面线程本身执行操纵,以使得可在用户界面线程上如预期地提出变更通知。在这种情况下,后台线程可同步地等待用户界面线程完成操纵。
用户界面和后台线程之间的通信可通过对象来进行。由此,后台和用户界面线程可如它们与应用对象正常交互得那样各自与对象交互。然而,该对象可包括与两个线程交互的功能,以及在两个线程之间传递任务和通信的功能。
由此,从此处描述的工具和技术中可以实现一个或多个实质的益处。例如,开发人员可开发用于在后台线程上运行的同步应用逻辑。例如,对象与多个线程进行交互的功能可被内置到软件开发系统中,诸如Microsoft’sVisual开发系统中。开发人员可使用该开发系统来开发具有开发人员和/或开发系统所提供的应用逻辑的应用,诸如在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)。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (18)

1.一种计算机系统,包括:
在至少一个后台线程上运行同步应用逻辑的装置,所述应用逻辑在所述至少一个后台线程上访问对象;
在所述至少一个后台线程上运行所述同步应用逻辑的同时,在至少一个用户界面线程上维持用户界面处于响应式状态的装置,所述用户界面在所述至少一个用户界面线程上访问所述对象,在所述至少一个后台线程上运行所述同步应用逻辑的同时的用户界面的响应式状态包括响应于用户输入请求对所述对象的修改,所述用户界面可用于启动对所述对象的所述修改;以及
在所述至少一个用户界面线程上执行工作的同时阻塞所述至少一个后台线程的装置。
2.如权利要求1所述的计算机系统,其特征在于,维持所述用户界面处于响应式状态的装置包括不阻塞所述至少一个用户界面线程的装置。
3.如权利要求1所述的计算机系统,其特征在于,维持所述用户界面处于响应式状态的装置包括在所述至少一个用户界面线程上访问所述对象的装置。
4.如权利要求1所述的计算机系统,其特征在于,所述对象是业务对象并且所述应用逻辑是业务逻辑。
5.如权利要求1所述的计算机系统,其特征在于,所述系统还包括:
将用户输入请求从所述至少一个用户界面线程发送至所述对象的装置;以及
将所述用户输入请求从所述对象转发至所述至少一个后台线程的分派器的装置。
6.如权利要求5所述的计算机系统,其特征在于,所述系统还包括:响应于在所述至少一个后台线程的分派器处接收到所述用户输入请求,
将所述用户输入请求分派到所述至少一个后台线程的工作线程的装置;
在所述工作线程上将所述应用逻辑应用于所述用户输入请求的装置;
响应于将所述应用逻辑应用于所述用户输入请求,将工作请求从所述工作线程发送至所述对象的装置;以及
将所述工作请求从所述对象转发至所述至少一个用户界面线程的分派器的装置。
7.如权利要求6所述的计算机系统,其特征在于,所述系统还包括,响应于在所述至少一个用户界面线程的分派器处接收到所述工作请求,在所述至少一个用户界面线程上执行所述对象上的工作的装置。
8.一种计算机实现的方法,包括:
接收对要在对象上完成的工作的请求;
确定所述工作是要被分派到运行应用逻辑的至少一个后台线程还是要被分派到运行一个或多个用户界面元素的至少一个用户界面线程,确定所述工作是要被分派到运行应用逻辑的至少一个后台线程还是要被分派到至少一个用户界面线程包括确定所述请求是来自所述至少一个后台线程还是所述至少一个用户界面线程;
如果所述请求要被分派到所述至少一个后台线程,则将所述工作分派到所述至少一个后台线程而不必阻塞所述至少一个用户界面线程;以及
如果所述请求要被分派到所述至少一个用户界面线程,则将所述工作分派到所述至少一个用户界面线程并且阻塞所述至少一个后台线程。
9.如权利要求8所述的方法,其特征在于,如果所述请求来自所述至少一个用户界面线程而没有由所述至少一个后台线程处理,则确定所述工作是要被分派到至少一个后台线程还是被分派到至少一个用户界面线程包括,确定所述工作要由所述至少一个后台线程来完成。
10.如权利要求8所述的方法,其特征在于,所述对象是业务对象并且所述应用逻辑是业务逻辑,并且所述方法还包括,如果所述工作被分派到所述至少一个后台线程,则在所述至少一个后台线程上将所述业务逻辑应用于所述请求。
11.如权利要求8所述的方法,其特征在于,所述请求在所述对象处被接收。
12.一种计算机实现的方法,包括:
在至少一个后台线程上运行同步应用逻辑,所述应用逻辑在所述至少一个后台线程上访问对象;
在所述至少一个后台线程上运行所述同步应用逻辑的同时,在至少一个用户界面线程上维持用户界面处于响应式状态,所述用户界面在所述至少一个用户界面线程上访问所述对象,在所述至少一个后台线程上运行所述同步应用逻辑的同时的用户界面的响应式状态包括响应于用户输入请求对所述对象的修改,所述用户界面可用于启动对所述对象的所述修改;以及
在所述至少一个用户界面线程上执行工作的同时阻塞所述至少一个后台线程。
13.如权利要求12所述的方法,其特征在于,维持所述用户界面处于响应式状态包括不阻塞所述至少一个用户界面线程。
14.如权利要求12所述的方法,其特征在于,维持所述用户界面处于响应式状态包括在所述至少一个用户界面线程上访问所述对象。
15.如权利要求12所述的方法,其特征在于,所述对象是业务对象并且所述应用逻辑是业务逻辑。
16.如权利要求12所述的方法,其特征在于,所述方法还包括:
将用户输入请求从所述至少一个用户界面线程发送至所述对象;以及
将所述用户输入请求从所述对象转发至所述至少一个后台线程的分派器。
17.如权利要求16所述的方法,其特征在于,所述方法还包括:响应于在所述至少一个后台线程的分派器处接收到所述用户输入请求,
将所述用户输入请求分派到所述至少一个后台线程的工作线程;
在所述工作线程上将所述应用逻辑应用于所述用户输入请求;
响应于将所述应用逻辑应用于所述用户输入请求,将工作请求从所述工作线程发送至所述对象;以及
将所述工作请求从所述对象转发至所述至少一个用户界面线程的分派器。
18.如权利要求17所述的方法,其特征在于,所述方法还包括,响应于在所述至少一个用户界面线程的分派器处接收到所述工作请求,在所述至少一个用户界面线程上执行所述对象上的工作。
CN201080053016.9A 2009-11-24 2010-10-29 带有后台应用逻辑的响应式用户界面 Active CN102667713B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/624,463 2009-11-24
US12/624,463 US8418190B2 (en) 2009-11-24 2009-11-24 Responsive user interface with background application logic for working on an object
PCT/US2010/054727 WO2011066056A2 (en) 2009-11-24 2010-10-29 Responsive user interface with background application logic

Publications (2)

Publication Number Publication Date
CN102667713A CN102667713A (zh) 2012-09-12
CN102667713B true CN102667713B (zh) 2016-03-16

Family

ID=44063060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080053016.9A Active CN102667713B (zh) 2009-11-24 2010-10-29 带有后台应用逻辑的响应式用户界面

Country Status (5)

Country Link
US (1) US8418190B2 (zh)
EP (1) EP2504758B1 (zh)
CN (1) CN102667713B (zh)
HK (1) HK1173802A1 (zh)
WO (1) WO2011066056A2 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904407B2 (en) * 2011-07-28 2014-12-02 Microsoft Corporation Asynchronously refreshing, networked application with single-threaded user interface
US8990818B2 (en) 2012-06-01 2015-03-24 Microsoft Technology Licensing, Llc Multiple top level user interface displays
WO2015174976A1 (en) * 2014-05-15 2015-11-19 Hewlett-Packard Development Company, L.P. Measuring user interface responsiveness
US11095743B2 (en) 2014-07-16 2021-08-17 Tensera Networks Ltd. Optimized content-delivery network (CDN) for the wireless last mile
US10712913B2 (en) * 2014-10-20 2020-07-14 Oracle International Corporation Event-based architecture for expand-collapse operations
US10412020B2 (en) 2015-04-30 2019-09-10 Amazon Technologies, Inc. Background processes in update load balancers of an auto scaling group
US10038640B2 (en) 2015-04-30 2018-07-31 Amazon Technologies, Inc. Managing state for updates to load balancers of an auto scaling group
US10341426B2 (en) * 2015-04-30 2019-07-02 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups
US10761714B2 (en) * 2015-11-23 2020-09-01 Google Llc Recognizing gestures and updating display by coordinator
CN105930208A (zh) * 2016-04-01 2016-09-07 广州华多网络科技有限公司 一种线程调度方法及线程调度装置
CN106919488B (zh) * 2016-07-21 2020-06-02 阿里巴巴集团控股有限公司 应用程序的响应状态的确定方法及装置
WO2019171237A1 (en) 2018-03-05 2019-09-12 Tensera Networks Ltd. Application preloading in the presence of user actions
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
WO2021019415A1 (en) 2019-07-30 2021-02-04 Tensera Networks Ltd. Pre-rendering of application user-interfaces in user devices
CN116670646A (zh) * 2020-12-03 2023-08-29 腾赛拉网络有限公司 预加载具有现有任务的应用
CN114327707A (zh) * 2021-12-20 2022-04-12 凌云光技术股份有限公司 一种用户界面的刷新方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480847B1 (en) * 1996-10-18 2002-11-12 Sagent Technology, Inc. Database repository with deferred transactions
US7573295B1 (en) * 2007-05-14 2009-08-11 Xilinx, Inc. Hard macro-to-user logic interface

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US757395A (en) * 1903-07-17 1904-04-12 Savage Williams J Gaseous-fuel burner.
US6850257B1 (en) 2000-04-06 2005-02-01 Microsoft Corporation Responsive user interface to manage a non-responsive application
AU7606301A (en) * 2000-09-29 2002-04-11 International Business Machines Corporation Context based view design to support client side multi-threading
US6823518B1 (en) 2000-10-17 2004-11-23 Microsoft Corporation Threading and communication architecture for a graphical user interface
US7774307B2 (en) * 2001-07-24 2010-08-10 Siebel Systems, Inc. Method and apparatus for synchronizing a database with a third party database
US9137324B2 (en) * 2002-04-10 2015-09-15 International Business Machines Corporation Capacity on-demand in distributed computing environments
US20050192973A1 (en) 2004-02-12 2005-09-01 Smith Micro Software, Inc. Visual database management system and method
US7784022B2 (en) 2006-04-25 2010-08-24 Sap Ag Mapping a new user interface onto an existing integrated interface
US20080178125A1 (en) 2007-01-23 2008-07-24 Microsoft Corporation Providing dynamic content in a user interface in an application
US7895599B2 (en) * 2007-05-23 2011-02-22 Sap Ag User interface independent remote interface data loader
US8220002B2 (en) * 2008-01-25 2012-07-10 Microsoft Corporation Isolation of user-interactive components
US9235559B2 (en) * 2008-04-02 2016-01-12 Microsoft Technology Licensing, Llc Progressive page loading

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480847B1 (en) * 1996-10-18 2002-11-12 Sagent Technology, Inc. Database repository with deferred transactions
US7573295B1 (en) * 2007-05-14 2009-08-11 Xilinx, Inc. Hard macro-to-user logic interface

Also Published As

Publication number Publication date
CN102667713A (zh) 2012-09-12
HK1173802A1 (zh) 2013-05-24
US8418190B2 (en) 2013-04-09
WO2011066056A3 (en) 2011-08-18
US20110126210A1 (en) 2011-05-26
EP2504758B1 (en) 2020-01-15
EP2504758A4 (en) 2015-04-29
EP2504758A2 (en) 2012-10-03
WO2011066056A2 (en) 2011-06-03

Similar Documents

Publication Publication Date Title
CN102667713B (zh) 带有后台应用逻辑的响应式用户界面
CN101356522B (zh) 终端用户对工作流进行动态重新定位的计算机实现的系统
US8595641B2 (en) Methods, apparatus and systems for displaying and/or facilitating interaction with secure information via channel grid framework
CN100410872C (zh) 用于增强的运行时间主机支持的方法和设备
CN100504768C (zh) 基于树视图的编辑器中的内联属性编辑系统和方法
US10198405B2 (en) Rule-based layout of changing information
US8156137B2 (en) Data processing systems and methods
CN107820602B (zh) 生成转换链兼容类的方法、创建转换链的方法和系统
CN104380256B (zh) 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段
CN101167122A (zh) 提供窗口管理模式的系统和方法
CN107748740A (zh) 电子表格对象的无代码共享
CN101180598A (zh) 用于提供过程指南的方法和装置
CN108469979A (zh) 一种页面跳转方法、装置、服务器和存储介质
CN102541661A (zh) 等待地址同步接口
JP2021507382A (ja) ブロックチェーンネットワークのアカウント処理方法、装置、機器及び記憶媒体
CN109960589A (zh) 嵌入式系统的系统软件层的实现方法、装置及可读介质
US20130185694A1 (en) Declarative dynamic control flow in continuation-based runtime
US20050044173A1 (en) System and method for implementing business processes in a portal
CN100405300C (zh) 使至少一个组件以独立于应用框架的方式执行异步操作的方法和计算系统
US20100042919A1 (en) Windowless cross platform program, method and environment
WO2009083259A1 (en) Multi-user collaboration system and method
CN104254836B (zh) 向大型机系统的指令提供
RU2697625C2 (ru) Применение составных цепочек преобразований для множества устройств
CN112632036B (zh) 一种数据交换体系的管理平台、方法及相关设备
KR20240081624A (ko) 다계좌 통합 관리 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1173802

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150720

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150720

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1173802

Country of ref document: HK