CN102567092B - 组件作用域的创建和终止 - Google Patents
组件作用域的创建和终止 Download PDFInfo
- Publication number
- CN102567092B CN102567092B CN201110418057.XA CN201110418057A CN102567092B CN 102567092 B CN102567092 B CN 102567092B CN 201110418057 A CN201110418057 A CN 201110418057A CN 102567092 B CN102567092 B CN 102567092B
- Authority
- CN
- China
- Prior art keywords
- action scope
- application
- assembly
- application module
- asked
- 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
Links
- 230000009471 action Effects 0.000 title claims abstract description 235
- 230000003068 static effect Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 51
- 230000000712 assembly Effects 0.000 claims description 7
- 238000000429 assembly Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 34
- 238000007726 management method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了组件作用域的创建和终止。本公开涉及计算***中的组件作用域的创建和管理。如此处所描述的,一种自动化作用域生成机制以应用无关的方式建立应用模块及其作用域和依赖关系,从而对对应的应用隐藏作用域管理的复杂性。如此处另外描述的,自动化作用域生成和管理技术能够在诸如文档编辑器和网络请求处理器等各种应用类型的上下文中实现。此外,此处描述了作用域管理器可用来实现基于作用域分层结构分析和/或其他因素的对作用域有效性的静态检验的各种技术。
Description
技术领域
本公开涉及模块化计算***管理,例如,创建和终止模块化计算应用内的组件作用域。
背景技术
合成容器(在本领域中也被称为依赖关系容器、依赖关系注入容器、控制反转容器等)是用于将应用模块和/或其他组件连接在一起的组件框架。合成容器通过读取或推断组件中所表达的依赖关系并尝试通过使用来自其他组件的实例和/或值来满足这些依赖关系来操作。合成容器具有其创建的组件实例的所有权,由此为这些实例定义生存期和可访问性边界。
然而,对于某些应用,常规合成容器不为生存期和/或可访问性提供足够的作用域粒度。例如,多文档应用可能期望对每一个打开的文档具有相应组件(例如,文本缓冲器、撤消管理器、拼写检查器等)的其自己的副本。为了在常规实现中实现这点,组件被要求设置其自己的处理相关联的基础结构逻辑的作用域语义(例如,在新文档被创建时启动新作用域)。因此,组件实现伴随特定合成容器,从而使其较不可重用且较不可测试并且使其代码较不可表达。
当今计算***管理技术的上述缺点仅旨在提供常规***的某些问题的概览,并且不旨在是穷尽性的。常规***的其他问题以及此处所描述的各非限制性实施例的对应的益处可以在审阅以下描述后变得更显而易见。
发明内容
此处提供了简化的发明内容以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本发明内容并不旨在作为详尽的或穷尽的。相反,本节发明内容的唯一目的在于,以简化的形式提出与一些示例性、非限制性实施例相关的一些概念,作为以下各实施例的更详细的描述的序言。
在各实施例中,引入了一种自动化作用域生成机制,该机制以应用无关方式建立应用模块及其作用域和依赖关系。在一个实施例中,一种程序组件作用域管理***包括被配置成经由一个或多个应用模块组件提供服务或提供对服务的访问的应用组件。该***还可包括作用域生成器组件,该组件被配置成从应用组件接收与对应于所选应用模块组件的所请求的作用域相关的信息,创建涉及所选应用模块组件的各依赖关系的合成容器,创建所请求的作用域,以及响应于从应用组件接收到的信息来将所请求的作用域分配给合成容器。例如,应用模块组件的至少一部分可对应于应用窗口。
在另一实施例中,一种用于管理计算***中的组件作用域的方法包括从与一个或多个应用模块相关联的应用获取与该一个或多个应用模块的所请求的作用域相关的信息,创建涉及该一个或多个应用模块的各依赖关系的合成容器,为该一个或多个应用模块创建所请求的作用域,以及将所请求的作用域与合成容器相关联。
在另一实施例中,一种应用请求处理方法包括与至少一个应用相关联地标识新请求者实体,提交创建对应于新请求者实体的作用域的请求,响应于该请求来获取与对应于新请求者实体的作用域相关的信息,以及根据对应于新请求者实体的作用域来处理来自该新请求者实体的请求。
这些和其他实施例在下文中更详细地描述。
附图说明
参考附图进一步描述各非限制性实施例,在附图中:
图1是示出根据一个或多个实施例的作用域管理***的简化视图的框图;
图2-3是示出可实现一个或多个实施例的各个示例性文档编辑器应用的框图;
图4是根据一个或多个实施例的示例性应用作用域结构的说明性视图;
图5是示出根据一个或多个实施例的分层作用域管理***的框图;
图6是示出根据一个或多个实施例的合成容器创建和作用域***的框图;
图7-8是示出根据一个或多个实施例的各个应用请求处理***的框图;
图9是示出用于应用作用域创建和管理的示例性、非限制性过程的流程图;
图10是示出用于管理对应于应用请求的作用域的示例性、非限制性过程的流程图;
图11是表示其中可实现在本文中所述的各实施例的示例性、非限制性联网环境的框图;以及
图12是表示其中可实现在本文中所述的各实施例的一个或多个方面的示例性、非限制性计算***或操作环境的框图。
具体实施例
概览
通过介绍,计算***的软件组件,诸如应用、操作***等,能够通过使用代码块和/或其他合适的结构来以模块化方式设计。代码块可包括例如模块、类和/或程序代码的任何其他合适的元素,等等。在某些情况下,对应于计算***的代码块能够通过依赖关系或其他手段彼此附连和/或以其他方式相关联。在给定代码块的依赖关系的数量足够的情况下,可出现代码块之间的纠缠,这引发确定各代码块之间的不同边界方面的困难。
因此,在一个或多个实施例中,引入了一种自动化作用域生成机制,该机制以应用无关方式建立应用模块及其作用域和依赖关系。作用域生成器对在计算***上运行的应用隐藏作用域管理的复杂性,由此提高***效率并降低应用代码复杂性。
在一个示例中,给定中等复杂的组件化项目为了生存期和/或可访问性的需要而定义、构造和终止合成的隔离边界,此处呈现了以与特定合成容器解耦并且提供可测试性和可重用性的方式传达该意图的新风格(idiom)。该风格基于定义预定义作用域的“门”的类型。当由合成容器内的组件使用时,在组件的代码执行期间的某一时刻静态传达控制隔离边界(例如,作用域)的意图。
此处描述的作用域管理技术能够一般地对各种应用实现。例如,此处提供了在文档编辑器应用、网络请求处理应用和其他应用的上下文中使用自动化作用域生成器来进行作用域管理的各个示例。在此处提供的其他示例中,作用域管理器可实现基于作用域层次分析和/或其他因素的对作用域有效性的静态检验,由此提供比常规作用域机制所提供的功能更多的功能。
常规上,由于标识代码块之间的依赖关系是复杂的过程,因此利用诸如合成容器(CC)、依赖关系注入容器、控制反转容器等结构,这些结构组装相应模块并且以经组装且使用就绪的格式返回每一个相应模块。在一个示例中,CC利用基于约定、标准接口等的信息来查明将组件连接在一起的方式。
在一实施例中,模块化应用中的复杂依赖关系能够从依赖关系是分开的前提开始并且随后将CC用作集成这些依赖关系的载体来设计。或者,可执行人工分析以组装依赖关系;然而,随着应用的成长及其依赖关系的数量的增加(例如,对于某些应用类型而言是数千的量级),人工依赖关系分析变得不可行。因此,可利用CC和/或其他手段来分析组件,并且在给定约定和/或其他合适的手段的情况下,获得对各组件如何相互依赖的理解。
在另一实施例中,CC根据依赖关系注入来操作,该依赖关系注入是在面向对象编程中用来向软件组件提供外部依赖关系的技术。CC可被实现为将行为与依赖关系解析分开的设计模式,由此解耦相关组件。例如,不是对依赖关系进行硬编码,可利用依赖关系注入来使得组件能够仅仅列出其适用的服务,依赖关系注入框架可基于此来提供所列出的服务。在没有依赖关系注入的情况下,可以理解必须使用给定服务来完成任务的组件不仅依赖于服务的接口,而且依赖于服务的实现细节。由此,组件被要求处理其对服务的使用以及该服务的生存期两者。相反,通过使用依赖关系注入,服务的生存期由诸如CC等依赖关系提供者而不是该组件来提供。在一个示例中,CC是链接服务的消费组件和提供组件的一种独立的、外部组件。因此,消费者只需要对服务的实现的引用来完成其任务。在一个示例中,依赖关系注入可被用来将高级模块与低级服务解耦。结果,用于依赖关系注入的CC和/或其他机制提供依赖关系反转功能。
作为具体的非限制性示例,CC和/或其他依赖关系注入机制可提供为文档编辑器组件实现依赖关系的功能。例如,为了保存文档,文档编辑器可依赖于诸如文件***管理器、拼写检查器等组件。因此,可使用CC来集成文档编辑器所依赖的组件以便于文档编辑器的正确操作。
然而,CC和其他这样的结构遭受关于作用域的困难。作为示例,在文档编辑器应用的情况下,可能期望对各个打开的文档利用单独的作用域。因此,例如,可经由各个文档的作用域提供不同的拼写检查器副本,而不是对多个打开的文档利用单个拼写检查器。常规上,这通过对每一作用域利用一个CC来管理,以使得对于每一个新文档,创建具有对涉及该文档的组件集合的控制的新CC。然而,可以理解,为了使一组件可重用,该组件应当与其环境解耦以使其不知晓存在将其组装在一起的实体。相反,如果如在现有实现中那样手动创建新作用域,则组件被要求具有CC结构的知识,创建新CC,并且在每一次需要新作用域时启动新作用域。鉴于常规计算***管理技术的至少上述缺点,此处描述的各实施例提供了通过隐藏作用域创建并暴露此处也被称为作用域生成器的作用域门来改进的作用域管理,该作用域门能够以应用无关方式被用来自动创建新作用域。
在一个实施例中,一种程序组件作用域管理***包括被配置成经由一个或多个应用模块组件提供至少一个服务的应用组件。该***另外包括作用域生成器组件,该组件被配置成从应用组件接收与对应于一个或多个应用模块组件中的所选应用模块组件的所请求的作用域相关的信息,以及自动创建涉及所选应用模块组件的各依赖关系的合成容器,创建所请求的作用域,以及响应于从应用组件接收到的信息来将所请求的作用域分配给合成容器。
在一些实现中,该一个或多个应用模块组件中的至少一部分对应于应用窗口。另外地或另选地,所请求的作用域可对应于根据所述至少一个服务来提交一个或多个请求的实体。
在一个示例中,作用域生成器组件包括作用域分析组件,该组件被配置成验证所请求的作用域的有效性,以及在所请求的作用域被确定为无效的情况下阻止创建合成容器。作用域分析组件还可被配置成获取关于与所选应用模块组件相关联的作用域的信息,以及至少部分地通过确定所请求的作用域是否可从与应用模块组件相关联的作用域访问来验证所请求的作用域的有效性。
在其他示例中,作用域生成器组件与对应于所选应用模块组件的父应用模块组件的合成容器相关联。在还有一些其他示例中,作用域生成器组件还被配置成至少部分地基于定义所述一个或多个应用模块组件的静态类属参数来创建所请求的作用域。
在各实现中,作用域生成器组件可包括被配置成创建合成容器的合成容器设置组件。在这一示例中,作用域生成器组件可创建所请求的作用域并将所请求的作用域分配给由合成容器设置组件创建的合成容器。在其他示例中,应用组件还被配置成经由与作用域生成器组件相关联的应用程序编程接口(API)向作用域生成器组件提交关于所请求的作用域的信息。
在另一实施例中,一种用于管理计算***中的组件作用域的方法包括从与一个或多个应用模块相关联的应用获取与该一个或多个应用模块的所请求的作用域相关的信息,创建涉及该一个或多个应用模块的各依赖关系的合成容器,为该一个或多个应用模块创建所请求的作用域,以及将所请求的作用域与合成容器相关联。
在一些实现中,该方法另外包括验证所请求的作用域的有效性并且在所请求的作用域无效的情况下放弃创建所请求的作用域。该验证可包括例如标识与关于所请求的作用域的信息相关联的请求者作用域,以及验证所请求的作用域可由请求者作用域访问。
在一个示例中,创建所请求的作用域可包括至少部分地基于类属地定义该一个或多个应用模块的静态参数来创建所请求的作用域。在另一示例中,获取可包括经由作用域API调用从应用获取与所请求的作用域相关的信息。在另一示例中,创建合成容器可包括独立于应用创建合成容器,创建所请求的作用域可包括独立于应用创建所请求的作用域。
在还有一些其他实现中,该方法可包括从应用获取与至少一个将要终止的作用域相关的信息,以及终止该至少一个将要终止的作用域。
在另一实施例中,一种应用请求处理方法包括与至少一个应用相关联地标识新请求者实体,提交创建对应于新请求者实体的作用域的请求,响应于该请求来获取与对应于新请求者实体的作用域相关的信息,以及根据对应于新请求者实体的作用域来处理来自该新请求者实体的请求。
在一个示例中,该方法还包括响应于新请求者实体完成活动来终止对应于新请求者实体的作用域。另外地或另选地,提交可包括经由作用域管理API提交请求。在另一示例中,处理可包括标识包括新请求者实体的多个请求者实体,以及根据分别与该多个请求者实体相关联的作用域来处理来自该多个请求者实体的请求。
此处,以上已经呈现了用于实现计算***中的作用域创建和终止的实施例中的某一些的概览。作为接下来的内容的向导,更详细地描述分布式事务管理的各种示范性、非限制性实施例和特征。随后,为了附加说明,给出一些非限制性实现和示例,之后是其中可实现这些实施例和/或特征的代表性网络和计算环境。
组件作用域的建立和终止
作为对在模块化计算环境中进行作用域管理的一个或多个非限制性方式的进一步描述,图1一般地示出了示例性作用域管理***的框图。图1所示的***包括应用组件100,该组件能够以模块化方式,例如使用一个或多个应用模块组件110,来编码和/或以其他方式实现。如上所述,常规计算***不具有可用来在个体应用的外部控制作用域的机制,这导致应用复杂性的显著提高。相反,图1所示的***利用对应用组件100及其应用模块组件110隐藏作用域生成和管理的复杂性的作用域生成器组件120。因此,作用域生成器组件120可被配置成以自动且应用无关的方式执行组件设置、作用域建立和其他合适的操作,从而使应用模块组件110的多样性、可重用性和可测试性更高。
根据各实施例,图1所示的***可以在任何合适的计算环境中并且为任何合适的应用类型实现。例如,图1所示的***以及此处描述和示出的其他实施例可以在客户机计算机、服务器、智能电话、个人数字助理(PDA)和/或任何其他合适的设备上利用。此外,可以对诸如例如文档编辑器、网络应用、编程工具等应用利用此处描述的实施例。
作为其中可实现此处描述的实施例的***的具体的、非限制性示例,图2示出了与文档编辑器应用200相关联的文档编辑***。文档编辑器应用200包括应用***210,该应用***由一个或多个***模块212组成。此外,应用***210利用***CC 214。文档编辑器应用200被用来编辑一个或多个文档230。这些文档进而可以与文档CC 232相关联,该文档CC为文档230组装对应于文档组件234的各个依赖关系。与其中对应于给定文档230的文档CC 232直接由应用***210生成的常规***形成对比,在一个实施例中应用***210利用如此处描述的作用域生成器220来对应用***210隐藏作用域复杂性并且自动化各个文档230的作用域建立。作用域生成器220可被实现为文档管理器和/或任何其他合适的机制。
作为另一非限制性示例,图3示出了利用文档管理器310来管理各个文档320-322的文档编辑器应用300。如图3所示,文档320-322与文档窗口330相关联,文档窗口330又与诸如撤消管理器332、保存键入的各个字符的状态的文本缓冲器334、依赖于文本缓冲器334的拼写检查器336等由各个文档320-322利用的其他资源相关联。在要创建新文档的情况下,文档管理器310能够独立于文档320-322启动新作用域。在一个示例中,文档管理器310最初可通过确定要与文档320-322相关联的组件及其次序来创建对应于新创建的文档320-322的文档CC 340。
对于其中要编辑多个文档320-322的***,作用域防止复杂问题,因为利用对应于文档320-322的多个窗口实例,这些窗口实例中的每一个都将具有单独的撤消管理器332、文本缓冲器334、拼写检查器336等。可以理解,如果不利用多个组件实例,则错误可以在文档之间传播。例如,如果在多个文档之间只共享单个文本缓冲器实例,则在第一文档中键入的字符将盖写在第二文档中键入的字符。
虽然可以为每一个文档320-322创建单独的组件实例,但在向文档管理器310传递新作用域方面引发问题。虽然在常规***中文档管理器能够在基本的水平上理解依赖关系,但这些文档管理器无法看出需要作用域的事实。因此,文档管理器310能够充分利用作用域生成器(例如,作用域生成器组件120)的功能来创建对应于每一个文档320-322的新作用域。在一个示例中,作用域生成器可由文档管理器310和/或图3所示的***中的其他合适的元素经由作用域管理API和/或其他合适的手段来调用。在一个示例中,当文档编辑器应用300第一次运行时,不存在打开的文档320-322。随后,当第一次创建文档时,创建第一作用域,并且与针对该作用域利用的组件一起透明地创建新文档CC340。当创建其他文档时,以类似方式创建新文档CC 340。在另一示例中,打开文档的列表可由文档编辑器应用与***CC 302一起维护。在另一示例中,当用户在打开的文档之间切换时,文档编辑器应用300能够继续维护与各个打开的文档320-322相关的信息,因为对焦点文档的改变仅导致视觉改变并且不影响作用域。
接着参考图4,示出了示例性应用作用域结构。该***包括与例如应用、操作***等相关联的组件A。此外,组件A与合成容器400和作用域生成器相关联。如上所述,对合成的隔离边界的控制在若干应用模型中进行。例如,服务器侧应用能够基于短期请求在web模型的上下文中利用合成的隔离边界。作为另一示例,只要将在桌面应用中控制(例如,与共享或全局可访问形成对比)状态和可访问性,就可利用这些边界,如同上述多文档应用和/或其他合适的应用中那样。
在一实施例中,图4所示的***可利用由公共类型表明的风格。该类型取得定义所依赖的组件和/或契约的静态类属参数(例如,T)。组件A然后可利用与其表达标准依赖关系的方式相组合的该风格。在一个示例中,参数T向合成容器400表达组件A期望控制正被用于以下各种目的的预定义作用域410和/或412:第一,确定要创建的预定义作用域,以及第二,启用静态和运行时分析来确定该作用域是否可从请求者作用域访问。可以例如在其中作用域是分层的***中利用这一分析。这样的作用域分析在此处更详细地描述。
与常规***相比,可以理解,不利用此处描述的实施例的框架依靠复杂API来取得相同的结果,而不具有静态分析的好处。
在一实施例中,组件A可对应于任何合适的应用,诸如文档编辑器、基于web的应用等。作为非限制性示例,如与作用域410-412相关联地示出的组件T可对应于一窗口,而组件T1和T2可对应于该窗口的相关组件。在一个示例中,作用域生成器由组件A利用来一般化CC和作用域创建。例如,可以理解,不能对其他常规应用利用常规博客应用的自定义作用域代码。相反,图4所示的作用域生成器可以用来解决跨许多不同类型的应用的作用域管理。在另一示例中,在生成作用域410-412之前,参数T可用作占位符直到被具体的作用域替代。因此,例如在T对应于一窗口的情况下,作用域生成器在第一次执行时返回一窗口。
在另一实施例中,作用域生成器可用于管制作用域的生存期。作为示例,对应于一文档的作用域的生存期从创建该文档的时间跨越到关闭该文档的时间。同样,对应于网络请求的作用域的生存期从作出该请求的时间跨越到满足该请求的时间。
在一些实施例中,如此处提供的作用域管理能够在分层***的上下文中被利用。作为如图5所示的具体示例,一应用能够利用包括构建***510的分层结构,该构建***510包含编辑器520,该编辑器又包含应用核530。如图5所示,层510-530还可与能够如此处一般描述的那样操作的作用域生成器500相关联。在一个示例中,作用域生成器500可包括作用域分析组件502,该作用域分析组件可用于对作用域生成请求执行静态分析。例如,作用域分析组件502可检查以确定在给定***的作用域分层结构和/或其他因素的情况下创建作用域是否是可能的。如果无法创建作用域,则作用域分析组件502可阻止创建作用域和/或以其他方式阻止作用域生成器组件500创建作用域。
作用域分析组件502可基于各种准则来分析潜在作用域。例如,作用域分析组件502可确定给定作用域是否有效和/或可访问。因此,如果给定层的作用域生成器试图创建对应于新窗口的作用域,但该窗口在该层之外,则对该层处的作用域生成器的调用可被配置成失败。
通过提供应用无关的作用域管理,可以理解,方便了在常规实现下是不可能的作用域分析和其他操作。此外,可以理解,提高了组件的可重用性,因为随着对一组件的依赖关系减少,该组件的可重用性提高。
在上文中提供的各实施例中,作用域生成器用于创建对应于给定作用域的CC以及创建作用域本身。然而,作用域生成器组件610可另选地如图6所示的那样操作,其中CC及其作用域的设置被划分到分开的组件中。更具体而言,CC生成器组件612可用于为对应于一个或多个应用600的给定作用域生成CC,而作用域生成器组件610可用于如此处一般描述的那样生成作用域。
作为此处描述的实施例的另一示例实现,此处提供的各种作用域管理技术能够在基于网络的应用的上下文中利用。作为示例,网络应用能够如图7所示的那样操作,其中一个或多个请求者实体(例如,用户)700与应用710交互。请求者实体700向应用710提供请求,这些请求由请求管理器组件712来处理。应用710进而利用作用域生成器组件720来生成对应于相应的请求者实体700的不同作用域。
根据各实施例的示例性基于网络的应用的操作在图8中更详细地示出。在一实施例中,可以从用户设备800作出对应于在服务器设备810上运行的应用的一个或多个请求802。这些请求能够以任何合适的方式作出,并且能够定期(例如,对应于预设刷新时间)和/或以任何其他合适的方式发生。在服务器设备810处,收集并处理来自各个用户设备800的请求812-816。因此,在用户设备800处该***看似仅仅相对于用户设备800操作,但在服务器设备810处处理对应于可能许多用户设备810的请求。
当接收到请求812-816时,服务器设备810可利用请求管理器820和/或其他合适的手段来处理请求812-816。对请求812-816的处理可包括例如认证请求、确认请求、满足请求以及将请求的结果返回给用户设备800。在一实施例中,请求管理器820可以与作用域生成器组件822相关联,该作用域生成器组件为各个用户设备800建立请求管理器820的作用域,如此处一般描述的那样。因此,虽然服务器设备810在应用层操作,但可通过作用域将不同的请求管理器实例分配给相应的用户设备800。
图9是示出用于应用作用域创建和管理的示例性、非限制性过程的流程图。在900,从一应用获取与同该应用相关联的一个或多个应用模块的所请求的作用域相关的信息。在910,创建涉及应用模块的各依赖关系的合成容器。在920,为应用模块创建所请求的作用域。在930,将所请求的作用域与合成容器相关联。
图10是示出用于管理对应于应用请求的作用域的示例性、非限制性过程的另一流程图。在1000,与至少一个应用相关联地标识新请求者实体。在1010,提交创建对应于新请求者实体的作用域的请求。在1020,响应于该请求获取与对应于新请求者实体的作用域相关的信息。在1030,根据对应于新请求者实体的作用域来处理来自新请求者实体的请求。
示例性联网以及分布式环境
本领域的普通技术人员可以理解,此处描述的作用域管理***和方法的各实施例可结合任何计算机或其他客户机或服务器设备来实现,该任何计算机或其他客户机或服务器设备可作为计算机网络的一部分来部署或者被部署在分布式计算环境中。在这一点上,此处描述的各实施例可在任何计算机***或具有任何数量的存储器或存储单元的环境中实现,并且任何数量的应用和进程跨任何数量的存储单元发生。这包括但不限于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。
分布式计算通过计算设备和***之间的通信交换来提供计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件之类的对象的高速缓存存储和盘存储。这些资源和服务还包括多个处理单元之间的处理能力共享以便进行负载平衡、资源扩展、处理专门化等等。分布式计算利用网络连接,从而允许客户机利用其集体力量来使整个企业受益。就此,各种设备可具有可如参考本发明的各实施例描述地参与作用域创建和管理机制的应用、对象或资源。
图11提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象1110、1112等以及计算对象或设备1120、1122、1124、1126、1128等,这些计算对象或设备可包括如应用1130、1132、1134、1136、1138所表示的程序、方法、数据存储、可编程逻辑等。可以理解,计算对象1110、1112等以及计算对象或设备1120、1122、1124、1126、1128等可包括不同的设备,诸如个人数字助理(PDA)、音频/视频设备、移动电话、MP3播放器、个人计算机、膝上型计算机等。
每个计算对象1110、1112等以及计算对象或设备1120、1122、1124、1126、1128等可经由通信网络1140直接或间接地与一个或多个其他计算对象1110、1112等以及计算对象或设备1120、1122、1124、1126、1128等通信。尽管在图11中被示为单个元件,但通信网络1140可包括向图11的***提供服务的其他计算对象或计算设备和/或可表示未示出的多个互连网络。每一个计算对象1110、1112等或计算对象或设备1120、1122、1124、1126、1128等还可以含有应用,诸如可以利用API或其他对象、软件、固件和/或硬件的、适于实现或与根据本公开的各实施例所提供的作用域管理技术进行通信的应用1130、1132、1134、1136、1138。
存在支持分布式计算环境的各种***、组件和网络配置。例如,计算***可由有线或无线***、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构可用于变得与如各实施例中所描述的作用域管理***相关联的示例性通信。
由此,可使用诸如客户机/服务器、对等、或混合架构之类的网络拓扑结构和网络基础结构的主机。“客户机”是使用与其无关的另一类或组的服务的一类或组中的成员。客户机可以是进程,即大致上是请求另一程序或进程所提供的服务的一组指令或任务。客户机进程使用所请求的服务,而无需“知道”关于其他程序或服务本身的任何工作细节。
在客户机/服务器体系结构中,尤其在联网***中,客户机通常是访问另一计算机(例如,服务器)所提供的共享网络资源的计算机。在附图11的图示中,作为非限制性示例,计算对象或设备1120、1122、1124、1126、1128等可被认为是客户机而计算对象1110、1112等可被认为是服务器,其中计算对象1110、1112等作为提供数据服务的服务器,诸如从客户机计算对象或设备1120、1122、1124、1126、1128等接收数据、存储数据、处理数据、向客户机计算对象或设备1120、1122、1124、1126、1128等发送数据,但任何计算机都可取决于环境而被认为是客户机、服务器、或两者。
服务器通常是可通过诸如因特网或无线网络基础结构之类的远程网络或本地网络访问的远程计算机***。客户机进程可在第一计算机***中活动,而服务器进程可在第二计算机***中活动,它们通过通信介质相互通信,由此提供分布式功能并允许多个客户机利用服务器的信息收集能力。按照此处所述的技术来利用的任何软件对象可单独提供或分布多个计算设备或对象上。
在通信网络1140或总线是因特网的网络环境中,例如,计算对象1110、1112等可以是其他计算对象或设备1120、1122、1124、1126、1128等经由诸如超文本传输协议(HTTP)之类的多种已知协议中的任一种与其通信的Web服务器。计算对象1110、1112等作为服务器还可用作例如计算对象或设备1120、1122、1124、1126、1128的客户机,这可以是如分布式计算环境的特性。
示例性计算设备
如上所述,有利的是,此处所描述的技术可适用于期望管理与计算***相关联的组件作用域的创建的任何设备。因此,可理解,构想了结合各实施例使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在可利用计算应用的任何地方。因此,以下在图12中所述的通用远程计算机只是计算设备的一个示例。
尽管并非所需,但各实施例可部分地经由操作***来实现,以供设备或对象的服务开发者使用和/或被包括在用于执行此处所述的各实施例的一个或多个功能方面的应用软件内。软件可在诸如客户机工作站、服务器或其他设备之类的一个或多个计算机所执行的诸如程序模块之类的计算机可执行指令的通用上下文中描述。本领域的技术人员将理解,计算机***具有可用于传递数据的各种配置和协议,并且由此没有特定配置或协议应当被认为是限制性的。
因此,图12示出了其中可实现各实施例的一个或多个方面的合适的计算***环境1200的一个示例,尽管如上所述,计算***环境1200仅为合适的计算环境的一个示例,并非对使用范围或功能提出任何限制。也不应当将计算***环境1200解释为对在示例性计算***环境1200中所示的组件中的任何一个或其组合有任何依赖或要求。
参考图12,用于实现一个或多个实施例的示例性远程设备包括计算机1210形式的通用计算设备。计算机1210的组件可包括,但不限于,处理单元1220、***存储器1230、以及将包括***存储器的各种***组件耦合到处理单元1220的***总线1222。
计算机1210通常包括各种计算机可读介质,并且可以是可由计算机1210访问的任何可用介质。***存储器1230可包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)之类的易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制,***存储器1230还可包括操作***、应用程序、其他程序模块、以及程序数据。
用户可通过输入设备1240向计算机1210输入命令和信息。监视器或其他类型的显示设备也经由诸如输出接口1250之类的接口连接到***总线1222。除监视器以外,计算机还可包括诸如扬声器和打印机之类的其他***输出设备,它们可通过输出接口1250连接。
计算机1210可使用到一个或多个其他远程计算机(诸如远程计算机1270)的逻辑连接在联网或分布式环境中操作。远程计算机1270可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点、或者任何其他远程媒体消费或传输设备,并且可包括以上关于计算机1210所述的任何或全部元件。图12所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)之类的网络1272,但也可包括其他网络/总线。这些联网环境在家庭、办公室、企业范围的计算机网络、内联网和因特网中是常见的。
如上所述,尽管结合各种计算设备和网络架构描述了各示例性实施例,但基本概念可被应用于其中期望管理代码块的作用域的任何网络***和任何计算设备或***。
而且,存在实现相同或相似功能的多种方法,例如适当的API、工具箱、驱动程序代码、操作***、控件、独立或可下载软件对象等,它们使得应用和服务能够使用此处提供的技术。由此,此处的各实施例从API(或其他软件对象)的观点以及从实现如此处描述的一个或多个实施例的软件或硬件对象构想。由此,此处所述的各实施例可具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。
本文中所使用的词语“示例性”意味着用作示例、实例、或说明。为避免疑惑,本文所公开的主题不限于这些示例。另外,本文中作为“示例性”所述的任何方面或设计不一定被解释为比其他方面或设计更优选或有利,它也不意味着排除本领域普通技术人员已知的等效示例性结构和技术。此外,在使用术语“包括”、“具有”、“包含”和其他类似词语的程度上,为避免疑惑,这些术语旨在以类似于术语“包括”作为开放的过渡词的方式是包含性的而不排除任何附加或其他元素。
如所述的,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如此处所使用的,术语“组件”、“***”等同样旨在指计算机相关实体,或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。
如前所述的***已经参考若干组件之间的交互来描述。可以理解,这些***和组件可包括组件或指定的子组件、某些指定的组件或子组件和/或附加的组件,并且根据上述内容的各种置换和组合。子组件还可作为通信地耦合到其他组件的组件来实现,而不是被包括在父组件内(分层)。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处所述的任何组件也可与一个或多个此处未专门描述的但本领域技术人员一般已知的其他组件进行交互。
鉴于以上所述的示例性***,参考各附图的流程图还可理解根据所述的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述的方法,但是应当理解,各实施例不仅仅限于框的次序,因为一些框可以与此处所描绘和描述的框不同的次序发生和/或与其他框并发地发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达到相同或类似结果的各种其他分支、流程路径和框的次序。此外,并非全部所示的框都是实现下面所述的方法所必需的。
除此处所述的各实施例以外,应当理解,可使用其他类似实施例,或者可对所述实施例作出修改和添加以便执行对应实施例的相同或等效功能而不背离这些实施例。此外,多个处理芯片或多个设备可共享此处所述的一个或多个功能的性能,并且类似地,存储可跨多个设备实现。因此,本发明不应限于任何单个实施例,而是应当根据所附权利要求书的广度、精神和范围来解释。
Claims (12)
1.一种程序组件作用域管理***,包括:
包括一个或多个应用模块组件(110)的应用组件(100),所述应用组件被配置成经由所述一个或多个应用模块组件来提供至少一个服务或提供对至少一个服务的访问;
作用域生成器组件(120),所述作用域生成器组件被配置成接收与对应于所述一个或多个应用模块组件(110)中的所选一个应用模块组件的所请求的作用域相关的信息,以及创建管理所选应用模块组件的各依赖关系的合成容器,创建所请求的作用域,以及响应于从所述应用组件接收到的信息来将所请求的作用域分配给所述合成容器;
其中,所述作用域生成器组件(120)包括:
作用域分析组件(502),所述作用域分析组件被配置成验证所请求的作用域的有效性,以及在所请求的作用域被确定为无效的情况下阻止创建所述合成容器,其中所述作用域分析组件(502)还可被配置成获取关于与所选应用模块组件相关联的作用域的信息,并至少部分地通过确定所请求的作用域是否可从与所述应用模块组件相关联的作用域访问来验证所请求的作用域的有效性。
2.如权利要求1所述的***,其特征在于,所述一个或多个应用模块组件(110)中的至少一部分对应于应用窗口。
3.如权利要求1所述的***,其特征在于,所请求的作用域对应于根据所述至少一个服务来提交一个或多个请求的实体。
4.如权利要求1所述的***,其特征在于,所述作用域生成器组件(120)与对应于所选应用模块组件的父应用模块组件的合成容器相关联。
5.如权利要求1所述的***,其特征在于,所述作用域生成器组件(120)还被配置成至少部分地基于定义所述一个或多个应用模块组件(110)的静态类属参数来创建所请求的作用域。
6.如权利要求1所述的***,其特征在于,所述作用域生成器组件(120)包括:
被配置成创建所述合成容器的合成容器设置组件;
其中,所述作用域生成器组件创建所请求的作用域并将所请求的作用域分配给由所述合成容器设置组件创建的所述合成容器。
7.如权利要求1所述的***,其特征在于,所述应用组件(100)还被配置成经由与所述作用域生成器组件(120)相关联的应用程序编程接口(API)向所述作用域生成器组件(120)提交关于所请求的作用域的信息。
8.一种用于管理计算***中的应用模块组件的作用域的方法,包括:
获取(900)与一个或多个应用模块组件的所请求的作用域相关的信息,所述一个或多个应用模块组件是一个应用的部分;
创建(910)管理所述一个或多个应用模块组件以及在所述应用中使用的其他应用模块组件的各依赖关系的合成容器;
为所述一个或多个应用模块组件创建(920)所请求的作用域;以及
将所请求的作用域与所述合成容器相关联(930);
其中所述方法还包括:
通过获取关于与所选应用模块组件相关联的作用域的信息,并至少部分地通过确定所请求的作用域是否可从与所述应用模块组件相关联的作用域访问来验证所请求的作用域的有效性;
其中所述创建(920)所请求的作用域包括在所请求的作用域无效的情况下放弃创建所请求的作用域。
9.如权利要求8所述的方法,其特征在于,所述创建(920)所请求的作用域包括:
至少部分地基于类属地定义所述一个或多个应用模块组件的静态参数来创建所请求的作用域。
10.如权利要求8所述的方法,其特征在于,所述获取(900)包括:
经由作用域控制应用程序编程接口(API)调用从所述应用获取与所请求的作用域相关的信息。
11.如权利要求8所述的方法,其特征在于:
所述创建(910)合成容器包括独立于所述应用创建所述合成容器;以及
所述创建(920)所请求的作用域包括独立于所述应用创建所请求的作用域。
12.如权利要求8所述的方法,其特征在于,还包括:
从所述应用获取(1020)与至少一个要被终止的作用域相关的信息;以及
终止(1030)所述至少一个要被终止的作用域。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/962,654 US8793708B2 (en) | 2010-12-08 | 2010-12-08 | Creation and termination of component scopes |
US12/962,654 | 2010-12-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567092A CN102567092A (zh) | 2012-07-11 |
CN102567092B true CN102567092B (zh) | 2015-09-09 |
Family
ID=46200829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110418057.XA Active CN102567092B (zh) | 2010-12-08 | 2011-12-07 | 组件作用域的创建和终止 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8793708B2 (zh) |
CN (1) | CN102567092B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810172B (zh) * | 2012-11-06 | 2017-07-04 | 金蝶软件(中国)有限公司 | 生成组件依赖关系图的方法和装置 |
US9448773B2 (en) * | 2013-04-03 | 2016-09-20 | Salesforce.Com, Inc. | Systems and methods for implementing a uniform application user interface across a multi-tenant environment |
EP3164800B1 (en) * | 2015-07-24 | 2021-03-03 | Oracle International Corporation | Bridging a module system and a non-module system |
US9626171B2 (en) | 2015-07-24 | 2017-04-18 | Oracle International Corporation | Composing a module system and a non-module system |
US10078497B2 (en) | 2015-07-24 | 2018-09-18 | Oracle International Corporation | Bridging a module system and a non-module system |
US10158647B2 (en) | 2015-08-25 | 2018-12-18 | Oracle International Corporation | Permissive access control for modular reflection |
US10191753B2 (en) | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10282184B2 (en) | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
US10387142B2 (en) | 2016-09-16 | 2019-08-20 | Oracle International Corporation | Using annotation processors defined by modules with annotation processors defined by non-module code |
US10848410B2 (en) | 2017-03-29 | 2020-11-24 | Oracle International Corporation | Ranking service implementations for a service interface |
CN110717123B (zh) * | 2019-09-30 | 2022-04-22 | 北京字节跳动网络技术有限公司 | 页面响应方法、装置、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7680758B2 (en) * | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US7895594B2 (en) * | 2005-03-28 | 2011-02-22 | Freescale Semiconductor, Inc. | Virtual machine extended capabilities using application contexts in a resource-constrained device |
US7805730B2 (en) | 2006-09-21 | 2010-09-28 | Reuters America, Llc | Common component framework |
US8745584B2 (en) * | 2007-05-03 | 2014-06-03 | International Business Machines Corporation | Dependency injection by static code generation |
US8140554B2 (en) * | 2008-12-19 | 2012-03-20 | Microsoft Corporation | Shared value resolution with multiple runtime containers |
-
2010
- 2010-12-08 US US12/962,654 patent/US8793708B2/en active Active
-
2011
- 2011-12-07 CN CN201110418057.XA patent/CN102567092B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102567092A (zh) | 2012-07-11 |
US20120151505A1 (en) | 2012-06-14 |
US8793708B2 (en) | 2014-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567092B (zh) | 组件作用域的创建和终止 | |
Bass et al. | Quality attribute design primitives and the attribute driven design method | |
Brambilla et al. | Process modeling in web applications | |
AU2002319843B2 (en) | General and reusable components for defining net-centric application program architectures | |
CN101901150B (zh) | 通用分布式机载设备健康管理仿真平台及其实现方法 | |
CN100545851C (zh) | 使用命令行环境的远程***管理 | |
Lee et al. | A feature-oriented approach for developing reusable product line assets of service-based systems | |
AU2002319843A1 (en) | General and reusable components for defining net-centric application program architectures | |
Trad | Integrating a Holistic Enterprise Architecture Pattern: A Proof of Concept | |
Henderson-Sellers | Creating a comprehensive agent-oriented methodology: using method engineering and the OPEN metamodel | |
Dragoicea et al. | Integrating HLA and service-oriented architecture in a simulation framework | |
Axelsson et al. | Towards the architecture of a decision support ecosystem for system component selection | |
Cai et al. | Modeling and managing collaborative processes over the internet | |
Khalil | Reference architecture for virtual organization | |
Penberthy | Exam Ref 70-486 Developing ASP. NET MVC 4 Web Applications (MCSD): Developing ASP. NET MVC 4 Web Applications | |
Franco et al. | Supporting structural and functional collaborative networked organizations modeling with service entities | |
Altintas et al. | Integrating a software product line with rule-based business process modeling | |
Osório et al. | Open services ecosystem supporting collaborative networks | |
Manuali | A grid knowledge management system aimed at virtual research communities sustainability based on quality evaluation | |
Palanca et al. | Distributed goal-oriented computing | |
Chigani et al. | The implications of network-centric software systems on software architecture: A critical evaluation | |
Mahmoudi et al. | Web service orchestration driven by formal specification | |
Kühn et al. | XVSM Micro-Room Process Modeler | |
Zhang et al. | Service-Agent-Based Model Composition | |
Mitrovic | Domain Specific Language (DSL) visualisation for Big Data Pipelines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150729 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150729 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 |