CN102144226A - 灵活的基类库 - Google Patents

灵活的基类库 Download PDF

Info

Publication number
CN102144226A
CN102144226A CN2009801351943A CN200980135194A CN102144226A CN 102144226 A CN102144226 A CN 102144226A CN 2009801351943 A CN2009801351943 A CN 2009801351943A CN 200980135194 A CN200980135194 A CN 200980135194A CN 102144226 A CN102144226 A CN 102144226A
Authority
CN
China
Prior art keywords
framework
base class
definition
special
data contract
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.)
Granted
Application number
CN2009801351943A
Other languages
English (en)
Other versions
CN102144226B (zh
Inventor
P·H·杜斯德
S·D·莫热
P·F·索利趣
F·V·佩斯彻-盖里
R·克里希纳斯瓦米
S·J·霍尔
M·塔卢里
R·马丁
M·M·马格鲁德
A·帕多
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 Corp
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 Corp filed Critical Microsoft Corp
Publication of CN102144226A publication Critical patent/CN102144226A/zh
Application granted granted Critical
Publication of CN102144226B publication Critical patent/CN102144226B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

Abstract

在以更适合框架所服务的应用程序的域的方式来允许在改变通用基类库时框架的显著灵活性的机制。运行时提供每一基类的数据结构的数据契约,而不是提供该基类库。只要该数据契约被履行,则框架可随后以定制方式来定义每一基类。由此,例如,框架可提供适于框架的定制的框架专用方法和/或属性。另一框架可以以不同方式来定义基类。

Description

灵活的基类库
背景技术
软件框架提供了由应用程开发者构建且定制的通用应用程序功能。不同的框架可提供不同的通用应用程序功能,并且由此适用于应用程序不同的域。由此,应用程序开发者选择在其上构建他们的应用程序的适当框架,并且在考虑框架的情况下创作该应用程序。
由框架提供的一种系统被称为“类型系统”,它定义了框架使用的各种扩展的类型集,并且定义了在扩展的类型集中各类型之间的关系。框架使用由应用程序将在其中执行的运行时所提供的原语类库(也被称为“基类库”)。这样的类可包括基本的基类型,诸如例如,根对象类、串类、整数类、浮点类等等。这样的基类例如可包括在基类库中。
框架常常提供从运行时所定义的基类对象集中导出的扩展的分层类型的系统。如果多个框架要使用运行时,每一框架具有其自己的扩展的类型系统,每一类型系统从在运行时上构建的任何框架可以使用的相同的通用基类对象集中导出。
简要概述
本文描述的各实施例涉及在以更适合框架所服务的应用程序的域的方式允许在改变通用基类库集时框架的显著的灵活性的机制。这与常规的整体式模型形成对比,其中即使对框架所服务的应用程序不需要它们,框架也支持整个通用基类库对象集及其整个功能集。
运行时提供基类的数据结构的数据契约,而不是提供该基类库。只要对应的数据契约被履行,则框架可随后以定制方式来定义基类。由此,例如,框架可提供定制的框架专用方法和/或适于框架的属性。另一框架可以以不同方式来定义基类。由此,框架可与运行时互操作,并且建立包括对专用框架的需求更为定制化的原语基类型的类型系统。
本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,下面将通过参考附图来呈现对各实施例的更具体的描述。可以理解,这些附图只描绘了样本实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加属性和细节来描述和解释各实施例,在附图中:
图1示出了可实现本文描述的一个或多个特征的计算系统;
图2示出了计算机框架,其中运行时提供基类的数据契约,从而只要对应的数据契约被履行,则允许框架灵活地定义相应的基类;
图3示出了由运行时来提供类型系统基础的方法的流程图;
图4示出了指定类型描述指针和对象布局的示例数据契约,其中该类型描述指针指向类型描述符;以及
图5示出了一种用于提供框架类型系统的方法的流程图。
具体实施方式
根据本文描述的各实施例,本文描述的原理提供了以最适合框架所服务的应用程序的域的方式来允许在改变通用基类库集时的框架的显著灵活性的机制。运行时提供每一基类的数据结构的数据契约,而不是提供该基类库。只要对应的数据契约被履行,则框架可随后以定制方式来定义基类。首先,通用计算系统将参考图1来描述。随后,各种实施例将参考图2至5来描述。
图1示出了计算系统100。计算系统现在越来越多地呈现各种形式。计算系统可以例如是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至通常不被视为计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括包含至少一个处理器以及其上能含有可由处理器执行的计算机可执行指令的存储器的任何设备或系统(或其组合)。存储器可以采取任何形式,并可以取决于计算系统的属性和形式。计算系统可以分布在网络环境中,并可包括多个组成计算系统。
如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,那么,处理、存储器和/或存储能力也可以是分布式的。如此处所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。
在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令,引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。
计算系统100还可以包含可允许计算系统100通过例如网络110(诸如可能因特网)与其他消息处理器进行通信的通信信道108。通信信道108是通信介质的示例。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息递送介质。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、无线电、红外线及其他无线介质之类的无线介质。如此处所用的术语“计算机可读介质”既包括存储介质又包括通信介质。
本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行指令或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括诸如RAM、ROM、EEPROM、CD-ROM之类的物理存储器和/或存储介质或其他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接完全视为计算机可读介质。因此,任何这样的连接被适当地称为计算机可读介质。上述的组合也应被包括在计算机可读介质的范围内。
计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于此处所描述的具体特征或动作。相反,此处所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。
图2示出了计算体系结构200。在一个实施例中,尽管不需要,但体系结构200的某些或所有组件可以是基于软件的。例如,在软件体系结构的情况下,在计算系统100的处理器102执行计算机可执行指令之后,体系结构200的某些或所有组件可在图1的计算系统100的存储器104中被实例化。这些计算机可执行指令可存储在诸如先前描述的一个或多个计算机可读介质上。
计算体系结构包括运行时210。运行时210提供了多个基类中的每一个的数据契约,而实际上没有提供基类本身。例如,运行时210可指定应如何结构化特定基类的对象,而对特定基类可支持什么方法、基类可具有什么属性、以及什么构造函数被用于创建基类的实例保留灵活性。
在图2中,运行时210被示为提供对应于四个基类的四个数据契约211A至211D。然而,省略号211E表示运行时210还可提供其他基类的数据契约,并且甚至提供少于四个基类的数据契约,并且可能与单个基类的单个数据契约一样低。注意,作为面向对象的复杂软件组件的运行时210可使用基类来构建,并且运行时本身可具有其自己的类型系统。然而,运行时210不迫使外部框架使用该类型系统,甚至不迫使其具有特别定义的基类库。相反,只要外部框架遵守由运行时210提供的数据契约,则运行时210准许外部框架建立它们自己的基类。
体系结构210可能还包括框架220,该框架220定义和由运行时210提供的数据契约相对应的框架专用基类的第一集合221。例如,基类221A由框架220定义,并且遵守由运行时210指定的数据契约211A。基类221B由框架220定义,并且遵守由运行时210指定的数据契约211B。注意,没有示出基类221C。这强调至少在某些实施例中,某些类可以是可任选的。因此,即使运行时210要指定特定基类的数据契约,也不需要框架定义对应的基类。继续该示例,基类221D由框架220定义,但与数据契约211D对应。
由于框架对如何定义基类提供有相当大的自由,因此框架专用基类对于框架是相当唯一的,并且可修改框架专用基类来适应由框架服务的目标和应用程序的域。
例如,考虑被称为“串”的通用基类型。串是由字符序列来定义的。运行时210可提供串应包括两个字节单元的序列的数据契约,其中每两个字节单元可被解释为字符。运行时210还可指定串要具有与其相关联的某些管理数据。例如,可能串对象应以指向具有特定方案的类型描述符的某一长度的类型描述符指针来开始。可包括在数据契约中的管理数据的其他示例包括串中的字符总数、以及可能在串中的有效字符总数,因为某些两个字节序列可能完全不必与特定字符相对应。
给定这一数据契约,框架在进一步定义串基类中具有相当的灵活性。例如,框架可将串基类定义为完全没有可在串基类的对象上调用的方法。另一方面,框架可定义可在串基类对象上调用的方法。例如,可以存在用于以ASCII码升序来排序的方法,用于ASCII码降序的方法,用于大写该串中所有字母的方法,用于移除该串中所有数字的方法,用于用某些单词代替另一些的方法等等。取决于框架服务的应用程序的域,不同的框架对于某些方法比另一些具有更多用处,并且由此可以将更有用的方法并入其串基类中。通过不需要支持较不有用的方法,可使类型系统更高效。
框架还可定义与串相关联的专用属性。例如,串基类可具有大写字母的总数的计数、对数字总数的计数、对特殊字符的总数的计数、指定串的所断言的语言的语言属性等等。再次,某些框架比另一些对于某些属性具有更多的用处,并且由此框架可将基类定义为具有对该框架最有用的属性,而另一框架可将串基类定义为具有不同的属性。
每一框架还可定义可用于生成特定类的对象的一组构造函数,由此留给该框架进一步的灵活性。框架总是能够定义构建基类的通用集合的定制的类型系统。然而,框架已经使用运行时所提供的通用基类库。使用本文描述的原理,框架无需使用通用基类库。相反,它们可以以框架专用方式向基类提供方法、属性和构造函数。在一个实施例中,即使基类名被改变,或命名空间内基类的分配还可能从一个框架变成另一个。
基类通常是可用于生成更复杂类和类型的核心构件块。此处更详细一些地讨论串的示例。然而,基类的其他示例可以是字符、整数、以及根类(诸如,例如,系统.对象)。尽管可为每一个指定数据契约,但框架可以其他方式具有相当的灵活性以定义适合框架目的的基类。
进一步探究整数基类的例子,运行时可指定某一字节长度来表示整数,并且可指示对象应在对象的指定部分具有指定长度的类型描述符点。框架可随后可能完全不用定制的方法、或可能用适合特定框架目的的一个或多个框架专用方法来定义整数基类。作为一个示例,一种定制方法可能是将整数的平方根返回为浮点的平方根方法。其他定制方法可对框架作者是显而易见的,该框架作者更可能知道在该框架的上下文中什么方法是有帮助的。
这一体系结构的优点之一是多个框架可在单个计算系统上使用单个运行时,并且仍不仅维护其自己的类型系统,而且完全使用不同的基类。例如,第二框架230定义基类231的朝着框架230的目的来修改的另一集合。在这一情况下,框架作者已经选择合并对应于运行时210向其提供数据契约的所有基类的对应基类231A至231D。因此,基类231A至231D的每一个都是对框架230专用的基类,虽然它们是以定义遵守对应的数据契约的方式来定义的。由此,例如,即使由框架230定义的基类231A和由框架220定义的基类221A一样遵循相同的数据契约,它们也可具有差别很大的方法、属性和构造函数。
注意,尽管框架作者使用本文描述的原理可在定义基类时具有相当的灵活性,但框架作者仍可选择定义基类,使得由该框架定义的一个、某些、或甚至全部基类与由另一框架定义的一个、某些、或甚至全部基类相同。然而,框架作者可定义基类,使得该框架的所定义的基类没有一个与任何其他框架所定义的任何其他基类相同。然而,在框架220和230定义不同的基类的情况下,框架不能共享对象实例,因为它们不能解释来自其他框架的实例。换言之,由于类型系统是不相交的,因此各框架之间的通信是用值(即,作为平面数据)来传递的通过诸如机器类型和机器类型的集合等类型来完成的。
因此,尽管不需要,即使两个不同的框架220和230遵循两个完全不同的类型系统,并且使用两个不同的基类集,但运行时210可允许两个不同框架220和230存在并且使用运行时210的服务。这允许可在单个运行时上运行的框架的类型的多样性,从而允许框架变得更高效地面向该框架意图服务的应用程序的域。这还允许对框架更高效的版本化,并且允许后续版本使用不同的基类。由此,框架作者不再限于由框架的先前版本定义的基类。框架作者可仅修改基类定义,使框架的后续版本更好地适应框架的操作。
因此,运行时提供类型系统基础,而仅指定某些或可能所有的基类集的数据契约。图3示出了用于提供类型系统基础的方法300的流程图。可对多个基类的每一个执行方法300。
运行时定义基类的数据契约,而无需实际定义该基类(动作301)。这不排除可能存在运行时确实实际定义的其他基类。然而,在一个实施例中,运行时不定义任何基类,而仅提供每一基类的数据契约。
只要基类定义遵循数据契约,则运行时还根据框架专用基类定义与定义该基类的框架接口(动作302)。对定义基类它们自己的版本的多个框架可执行该动作。例如,框架220和230定义对应于数据契约211A的基类的它们自己的版本221A和231A。然而,无论这些版本221A和231A是否不同,它们确实都遵循数据契约211A。因此,当对对应于数据契约211A的对象来回通信时,仅在通信中使用平面数据。如果框架对遵循数据契约211A的对象进行通信,则即使将不使用该对象的定制的框架专用特征,关于该数据契约的知识也准许该数据被解释。假定接收实体将仅仅把对象用作平面数据,则框架或运行时发送该对象,除非接收对象是正在使用该框架的应用程序。
图4示出了指定类型描述指针401和对象布局402的示例数据契约400。在这一实施例中,所有数据契约都指定基类要以类型描述指针401开始。对象布局402可对基类专用。例如,对于串,对象布局402可指定两个字节的字符的序列。类型描述指针401指向类型描述符403。类型描述符403可具有通用方案,使得可以解释该类型描述符来理解类型。因此,类型描述符403可用于需要对基类的精确理解的各种各样的目的。
作为示例,类型描述符403可用于执行不同类型系统之间的类型安全。例如,为确定两个对象是否是相同类型或等价类型,可以查看这两个对象的类型描述符,并且将可从每一个对象中正确地提取和解释适当信息来制定类型等价性的合理结论。类型描述符还可用于执行自动存储器管理、执行虚拟调用、或执行接口调用、或关于类型的详细知识将是有用的任何其他用途。在自动存储器管理的情况下,由运行时定义的数据契约可以允许运行时的垃圾收集。
图5示出了用于提供框架类型系统的方法500的流程图。可在构造要与图2的运行时210接口的框架时执行方法500。首先,确定由运行时为每一基类提供的数据契约(动作501)。随后,对于一个、某些、或可能所有基类的每一个,框架作者使用数据契约来定义基类型,由此制定基类型的框架专用定义(动作502)。
因此,本文描述的原理准许框架具有定制的框架专用基类,而仍允许应用程序使用通用运行时。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。

Claims (15)

1.一种包括其上含有计算机可执行指令的一个或多个物理计算机可读介质(103)的计算机程序产品,所述指令被构造,使得当所述指令由计算系统(100)的一个或多个处理器(102)执行时,使所述计算系统执行一种执行用于提供类型系统基础的方法(300)的运行时(210),所述方法包括:
定义(301)基类的数据契约(211)而无需实际定义所述基类的动作;以及
只要所述基类定义遵循所述数据契约(211A),则根据框架专用基类定义与定义所述基类(221A、231A)的框架(220、230)接口(302)的动作。
2.如权利要求1所述的计算机程序产品,其特征在于,所述框架是第一框架,并且所述基类的框架专用基类定义是所述基类的第一框架专用基类定义,所述方法还包括:
只要所述基类定义遵循所述数据契约,则根据第二框架专用基类定义与定义所述基类的第二框架接口的动作,其中所述基类的第一框架专用基类定义与所述第二框架专用基类定义不同。
3.如权利要求1所述的计算机程序产品,其特征在于,所述数据契约至少隐式地准许所述框架命名所述基类。
4.如权利要求1所述的计算机程序产品,其特征在于,所述数据契约至少隐式地准许所述框架将命名空间分配给所述基类。
5.如权利要求1所述的计算机程序产品,其特征在于,所述数据契约至少隐式地准许所述框架将框架专用方法分配给所述基类。
6.如权利要求1所述的计算机程序产品,其特征在于,所述数据契约至少隐式地准许所述框架将框架专用属性分配给所述基类。
7.如权利要求1所述的计算机程序产品,其特征在于,所述数据契约至少隐式地准许所述框架将构造函数分配给所述基类。
8.如权利要求1所述的计算机程序产品,其特征在于,所述基类是第一基类,并且所述框架专用基类定义是第一框架专用基类定义,所述方法还包括:
定义第二基类的数据契约而无需实际定义所述第二基类的动作;以及
只要所述第二基类定义遵循第二数据契约,则根据第二框架专用基类定义与定义所述第二基类的框架接口的动作。
9.如权利要求8所述的计算机程序产品,其特征在于,定义所述第一基类的框架与定义所述第二基类的框架相同。
10.如权利要求1所述的计算机程序产品,其特征在于,所述基类是串。
11.如权利要求1所述的计算机程序产品,其特征在于,所述基类是整数。
12.如权利要求1所述的计算机程序产品,其特征在于,所述基类是浮点。
13.如权利要求1所述的计算机程序产品,其特征在于,所述基类是字符。
14.一种用于提供框架类型系统的方法(500),所述方法包括:
确定(501)运行时在多个基类型上施加的数据契约(211)的动作;
对于至少一些所述多个基类型中每一个,执行以下动作:
使用所述数据契约(211A)来定义(502)所述基类型(221A)由此制定所述基类型的框架专用定义的动作。
15.一种其上含有计算机可执行指令的一个或多个物理计算机可读介质(104),当所述指令由计算系统(100)的一个或多个处理器(102)执行时,使所述计算系统在存储器(104)中实例化软件体系结构(200),所述软件体系结构包括:
运行时(210),所述运行时提供多个基类的数据契约(211);
第一框架(220),所述第一框架定义和所述多个基类的至少第一子集(211A、211B、211D)相对应的框架专用基类的第一集合(221A、221B、221D),所述第一集合的框架专用基类中的每一个遵循由所述运行时提供的对应的数据契约,而所述第一集合的框架专用基类中的至少一个对所述第一框架是唯一的;以及
第二框架(230),所述第二框架定义和所述多个基类的至少第二子集(211A、211B、211C、211D)相对应的框架专用基类的第二集合(231A、231B、231C、231D),所述第二集合的框架专用基类中的每一个遵循由所述运行时提供的对应的数据契约,而所述第二集合的框架专用基类中的至少一个对所述第二框架是唯一的。
CN200980135194.3A 2008-09-03 2009-08-19 灵活的基类库 Active CN102144226B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/203,860 US8271938B2 (en) 2008-09-03 2008-09-03 Flexible base class library
US12/203,860 2008-09-03
PCT/US2009/054302 WO2010027666A2 (en) 2008-09-03 2009-08-19 Flexible base class library

Publications (2)

Publication Number Publication Date
CN102144226A true CN102144226A (zh) 2011-08-03
CN102144226B CN102144226B (zh) 2014-08-06

Family

ID=41727185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980135194.3A Active CN102144226B (zh) 2008-09-03 2009-08-19 灵活的基类库

Country Status (5)

Country Link
US (1) US8271938B2 (zh)
EP (1) EP2321739A4 (zh)
CN (1) CN102144226B (zh)
BR (1) BRPI0916698A2 (zh)
WO (1) WO2010027666A2 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8424107B2 (en) * 2010-06-14 2013-04-16 Microsoft Corporation Selectively exposing base class libraries based on application execution context
US9519468B2 (en) 2015-02-13 2016-12-13 Oracle International Corporation Modular co-versioning in a dynamically linked runtime environment
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
US11954023B2 (en) 2022-07-20 2024-04-09 Microsoft Technology Licensing, Llc Garbage collection prefetching state machine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056195A1 (en) * 2001-07-19 2003-03-20 Hunt Joseph R. Code generator
US20050198624A1 (en) * 2004-03-02 2005-09-08 Chipman Timothy W. Method and system for program transformation
CN1828527A (zh) * 2005-02-28 2006-09-06 微软公司 用于跨不同应用程序框架的数据服务的平台
US20080059940A1 (en) * 2006-09-01 2008-03-06 Sap Ag System and method for implementing a safe framework

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2855797B2 (ja) 1990-06-15 1999-02-10 富士ゼロックス株式会社 文書処理装置
US5907707A (en) * 1997-01-14 1999-05-25 International Business Machines Corporation Object model for Java
US6513152B1 (en) 1997-07-23 2003-01-28 International Business Machines Corporation Object oriented framework mechanism for customization of object oriented frameworks
US6564375B1 (en) * 1999-07-23 2003-05-13 Cisco Technology, Inc. Reusable components for customization of wizard-based applications
US6754887B1 (en) * 1999-10-22 2004-06-22 International Business Machines Corporation Methods for implementing virtual bases with fixed offsets in object oriented applications
US7140012B2 (en) 2001-03-09 2006-11-21 Bea Systems, Inc. Method and apparatus for multi-version updates of application services
US7076785B2 (en) * 2001-08-15 2006-07-11 Microsoft Corporation Lazy loading with code conversion
US7340718B2 (en) * 2002-09-30 2008-03-04 Sap Ag Unified rendering
US20040133445A1 (en) * 2002-10-29 2004-07-08 Marathon Ashland Petroleum L.L.C. Generic framework for applying object-oriented models to multi-tiered enterprise applications
US7293254B2 (en) * 2003-09-18 2007-11-06 Microsoft Corporation Extensibility application programming interface and framework for meta-model objects
US7350192B2 (en) * 2003-12-08 2008-03-25 Ebay Inc. Method and system to automatically generate software code
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US20050229186A1 (en) * 2004-03-15 2005-10-13 Canyonbridge, Inc. Method and apparatus for dynamic runtime object aggregation
DE102005009529A1 (de) * 2005-03-02 2006-09-07 Siemens Ag Datenverarbeitungssystem zur Integration zweier Frameworks
US7689985B2 (en) 2005-03-04 2010-03-30 Microsoft Corporation Versioning support for drivers frameworks
US20060200759A1 (en) 2005-03-04 2006-09-07 Microsoft Corporation Techniques for generating the layout of visual content
US20060212847A1 (en) 2005-03-18 2006-09-21 Microsoft Corporation Type checker for a typed intermediate representation of object-oriented languages
US7644403B2 (en) * 2005-09-12 2010-01-05 Oracle International Corporation Method and system for automated root-cause analysis for class loading failures in java
US20080059949A1 (en) * 2006-09-01 2008-03-06 Sap Ag System and method for implementing a safe framework
US7469252B2 (en) 2006-11-30 2008-12-23 Fortinet, Inc. Device, system and/or method for providing schema-independent access to object in documents
US7934207B2 (en) * 2006-12-19 2011-04-26 Microsoft Corporation Data schemata in programming language contracts
US9471282B2 (en) * 2007-03-21 2016-10-18 Ca, Inc. System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056195A1 (en) * 2001-07-19 2003-03-20 Hunt Joseph R. Code generator
US20050198624A1 (en) * 2004-03-02 2005-09-08 Chipman Timothy W. Method and system for program transformation
CN1828527A (zh) * 2005-02-28 2006-09-06 微软公司 用于跨不同应用程序框架的数据服务的平台
US20080059940A1 (en) * 2006-09-01 2008-03-06 Sap Ag System and method for implementing a safe framework

Also Published As

Publication number Publication date
EP2321739A4 (en) 2014-10-29
WO2010027666A2 (en) 2010-03-11
EP2321739A2 (en) 2011-05-18
US20100058283A1 (en) 2010-03-04
CN102144226B (zh) 2014-08-06
BRPI0916698A2 (pt) 2015-11-17
US8271938B2 (en) 2012-09-18
WO2010027666A3 (en) 2010-05-06

Similar Documents

Publication Publication Date Title
CN106062711B (zh) 用于复合控件的方法、系统和计算机存储介质
CN108628605A (zh) 流式数据处理方法、装置、服务器和介质
CN101410841B (zh) 支持用于仿真结果观测的信号规范的方法、系统和程序产品
WO2013032505A1 (en) Describing native application programming interfaces of an operating system with metadata
CN109740122A (zh) 思维导图用例文件的转换方法及装置
US10747537B2 (en) Efficient quantization of compare results
CN110990396B (zh) 数据存储方法、装置及存储介质
JP4890869B2 (ja) 同じアイテムを表すデータ構造間で生データを転送するメカニズム
CN102144226B (zh) 灵活的基类库
CN110955481A (zh) 一种标签任务的生成方法、装置、存储介质及电子设备
CN110717268B (zh) 一种基于face架构的可移植组件单元封装方法
KR20230173203A (ko) 암시적 반올림 모드로 선택된 데이터 유형의 데이터 변환
US10606588B2 (en) Conversion of Boolean conditions
CN102203757A (zh) 用于冻结对象的类型描述符管理
CN109523326A (zh) 一种计费分润系统、方法、计算机设备及存储介质
CN103984554A (zh) 软件设计文档的生成方法及装置
US10740099B2 (en) Instruction to perform a logical operation on conditions and to quantize the boolean result of that operation
CN113377342A (zh) 一种项目构建方法、装置、电子设备及存储介质
CN104899316A (zh) 游戏数据的序列化与反序列化处理方法及装置
US20090037890A1 (en) Method and system for generating an application
CN109542904A (zh) 业务数据处理方法、装置、服务器和介质
Damevski Expressing measurement units in interfaces for scientific component software
US7506319B2 (en) Generating a model of software in execution
US20220405123A1 (en) Detection of invalid machine-specific data types during data conversion
CN104267954A (zh) 一种用户界面中所包含的部件的生成方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

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

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.