用于计算机平台的编程接口的制作方法

文档序号:6428281阅读:159来源:国知局
专利名称:用于计算机平台的编程接口的制作方法
技术领域
本发明涉及软件以及此类软件的开发,尤其涉及一种方便应用程序和计算机硬件使用软件平台的编程接口。
背景技术
在很久以前,计算机软件被分类成“操作系统”软件或“应用”软件。广泛而言,应用是要为计算机用户执行具体任务的软件,任务如解数学方程或支持文字处理。操作系统是管理并控制计算机硬件的软件。操作系统的目标是令计算机资源对应用编程者可用,而同时隐藏实际控制硬件所必需的复杂性。
操作系统通过统称为应用程序接口或API的函数令资源可用。术语API也参考这些函数的单独一个来使用。这些函数通常被按照它们向应用编程者提供哪种资源或服务来分组。应用软件通过调用个别的API函数来请求资源。API函数也作为一种手段使操作系统所提供的消息和信息中继转回应用程序软件。
除硬件中的变化之外,推动操作系统软件发展的另一因素是简化并加快应用软件开发的期望。应用软件开发可能是一个令人沮丧的任务,它有时候需要几年的开发时间使用上百万行代码来创建复杂的程序。对于诸如Microsoft Windows操作系统的各种版本等流行的操作系统,应用软件开发者每年书写使用该操作系统的上千种不同的应用。需要一种一致且可用的操作系统基础来支持如此多的不同应用开发者。
通常可以通过令操作系统更复杂来将应用软件的开发变得更简单。即,如果一个函数对若干不同的应用程序有用,则一次性书写这一函数包括在操作系统中要比让许多软件开发者多次书写它包括在许多不同的应用中更好。以这一方式,如果操作系统支持许多应用所需要的较大范围的公用功能,则可以达到应用软件开发成本和时间的显著节省。
无论在操作系统和应用软件之间如何划线,很清楚,对于有用的操作系统而言,操作系统和计算机硬件以及应用软件之间的API就像操作系统本身的有效内部操作一样重要。
当开发应用程序时,开发者使用各种工具来生成图形项目和其它内容。有另外的工具可用来排列要显示或呈现的图形项目和其它数据。这些工具通常由不同的实体或不同的工具开发者创建。结果,这些工具不提供一致的编程环境。由此,使用这些不同工具的开发者需要学习如何使用每一工具并尝试令它们相互通信。这些活动可能是乏味且耗时的,从手头上的实际开发任务中夺走了时间。
在过去的几年中,因特网的全球使用以及一般性的网络技术已经改变了计算机软件开发者的前景。传统地,软件开发者把注意力集中在用于独立台式计算机或通过局域网(LAN)连接至有限数量的其它计算机的基于LAN的计算机的单点软件(single-site)应用。这类软件应用通常被称为“收缩包装(shrink wrapped)”产品,因为这些软件以收缩包装包交易且销售。应用使用较定义好了的API来访问计算机的底层操作系统。
随着因特网的发展并获得普遍接受,业界开始认识到在万维网(或简称web)的各种站点上主存(hosting)应用程序的威力。在网络化世界中,来自任何地方的客户机能够向主存于不同位置的基于服务器的应用提交请求,并在零点几秒内接收到响应。然而,这些web应用通常使用最初为独立的计算机器或本地网络化的计算机开发的同一操作系统平台来开发。不幸的是,在一些情况下,这些应用不能充分地转移到分布式计算模式。其基础平台的构建完全不是在支持无限数量的相互连接的计算机的观念上进行的。
为了适应向由因特网引进的分布式计算环境的转移,微软公司开发了一种网络软件平台,称为“.NET”框架(读作“点Net”)。Microsoft.NET是用于连接人、信息、系统和设备的软件。该平台允许开发者创建在因特网上执行的web服务。这一动态转移被伴之以微软的.NETTM框架的一组API函数。
由于.NETTM框架的使用变得越来越普遍,确定了提高平台的效率和/或性能的方法。发明人开发了一组独特的编程接口函数来允许这些提高的效率和/或性能。

发明内容
一种编程接口,如API,提供了用于生成应用、文档、媒体演示和其它内容的函数。这些函数允许开发者从操作系统、对象模型服务或其它系统或服务获取服务。在一个实施例中,该函数允许开发者生成图形用户界面。


贯穿附图,相同的标号标识相同的特征。
图1示出了在其中客户机使用常规协议通过因特网访问web服务的网络体系结构。
图2是一种包括应用程序接口(API)的用于网络平台的软件体系结构的框图。
图3是该API支持的演示子系统以及各种API函数的函数类的框图。
图4是可执行该软件体系结构的所有或部分的示例性计算机的框图。
图5、6、7、8、9、10、11、12、13、14、15和16示出了编程接口的各种示例实现。
具体实施例方式
本揭示着眼于用于开发者可在其上构建web应用和服务的网络平台的编程接口,如应用程序接口(API)。更具体地,描述了用于使用诸如由微软公司创建的.NETTM框架等网络平台的操作系统的示例性API。.NETTM框架是用于在分布式计算环境中实现的web服务和web应用的软件平台。它代表下一代因特网计算,使用开放通信标准以在协作执行具体任务的松耦合web服务中进行通信。
在描述的实现中,网络平台使用XML(可扩充标记语言),它是一种描述数据的开放标准。XML由万维网联盟(W3C)管理。XML用于定义web页和商业对商业文档中的数据元素。XML使用一种与HTML类似的标签结构;然而,HTML定义了如何显示元素,而XML定义了那些元素包含什么。HTML使用预定义的标签,而XML允许由页面的开发者定义标签。由此,实际上可以标识任意的数据项,允许web页起到与数据库记录一样的作用。通过使用XML和其它开放协议,如简单对象访问协议(SOAP),网络平台允许集成可针对用户的需求量身定做的大范围的服务。尽管结合XML和其它开放标准描述了本发明的实施例,这对本发明的操作不是必需的。其它等效可行的技术足以实现此处所描述的本发明。
如本发明所使用的,短语“应用程序接口”或API包括采用方法或函数调用以及远程调用(如,代理、存根关系)和SOAP/XML调用的传统接口。
示例性网络环境图1示出了可以在其中实现诸如.NETTM框架等网络平台的网络环境100。网络环境100包括代表性web服务102(1),…,102(N),它们提供了可通过网络104(如因特网)访问的服务。web服务,一般引用为102,是可再使用且可在网络104上在程序上交互的可编程应用组件,一般通过业界标准web协议,如XML、SOAP、WAP(无线应用协议)、HTTP(超文本传输协议)以及SMTP(简单邮件传输协议)来实现,尽管可以也使用通过网络与web服务进行交互的其它手段,如远程过程调用(RPC)或对象代理程序类型技术。web服务可以是自描述性的,并通常按照消息的格式和排序来定义。
web服务102可由其它服务(如由通信链路106所表示的)或软件应用,如web应用110(如由通信链路112和114所表示的)直接访问。所示每一web服务102包括执行软件来处理对具体服务的请求的一个或多个服务器。这类服务通常维护储存着要向请求者供回的信息的数据库。web服务可以被配置成执行各种不同的服务的任一种。web服务的示例包括登录核实、通知、数据库存储、股票报价、位置目录、映射、音乐、电子钱包、日历/日程安排、电话清单、新闻和信息、游戏、票务等等。web服务可以彼此组合,并可与其它应用组合来构建智能交互式体验。
网络环境100也包括代表性客户机装置120(1)、120(2)、120(3)、120(4)、…、120(M),它们使用web服务102(如由通信链路122所表示的)和/或web应用110(如由通信链路124、126和128所表示的)。客户机也可使用标准协议相互通信,如由客户机120(3)和120(4)之间的示例性XML链接130所表示的。
客户机装置,通常被引用为标号120,可以以许多不同的方式来实现。可能的客户机实现的示例包括但不限于,便携式计算机、固定计算机、图形输入板PC、电视机/机顶盒、无线通信装置、个人数字助理、游戏控制台、打印机、复印机以及其它智能装置。
web应用110是设计成在网络平台上运行且当处理并服务来自客户机120的请求时可使用web服务102的应用。web应用110包括运行在编程框架132之上的一个或多个软件应用130,在一个或多个服务器134或其它计算机系统上执行。注意,web应用110的一部分可实际上驻留在一个或多个客户机120上。可选地,web应用110可与客户机120上的其它软件协调以实际完成其任务。
编程框架132是支持由应用开发者开发的应用和服务的结构。它通过支持多语言而准许多语言开发和无缝集成。它支持开放协议,如SOAP,并封装了底层操作系统和对象模型服务。该框架为多编程语言提供了一种健壮且安全的执行环境,并提供安全、集成的类库。
框架132是一种多层体系结构,它包括应用程序接口(API)层142、公共语言运行时(CLR)层144以及操作系统/服务层146。这一分层体系结构允许在不影响该框架的其它部分的情况下对各层作出更新和修改。公共语言规范(CLS)140允许各种语言的设计者书写能够访问底层库功能的代码。规范140起到语言设计者和库设计者之间的约定的作用,它可以用来提升语言的互操作性。通过遵守CLS,以一种语言书写的库可以对以其它语言书写的代码模块直接可访问,以实现以一种语言书写的代码模块和以另一种语言书写的代码模块之间的无缝集成。CLS的一种示例性详细实现在由ECMA TC39/TG3的参与者创建的ECMA标准中有描述。请读者访问ECMA web网站www.ecma.ch。
API层142呈现应用130可调用来访问由层146提供的资源和服务的函数组。通过展现用于网络平台的API函数,应用开发者能够为分布式计算系统创建充分利用网络资源和其它web服务的web应用,而不需要理解这些网络资源实际上如何操作或变为可用的复杂的相互作用。此外,web应用可以以任意数量的编程语言来书写,并被翻译成由公共语言运行时144所支持的中间语言,并作为公共语言规范140的一部分包括在内。以这一方式,API层142可为广泛且不同的各种应用提供方法。
另外,框架132可以被配置成支持由远离主存该框架的服务器134执行的远程应用所放置的API调用。代表性应用148(1)和148(2)分别驻留在客户机120(3)和120(M)上,它们可通过经网络104直接或间接向API层142作出调用来使用API函数。
也可以在客户机装置120上实现该框架。客户机120(3)表示框架150在客户机上实现的情况。该框架可与基于服务器的框架132相同,或为客户机目的而修改。可选地,在客户机是有限或专用功能装置,如蜂窝电话、个人数字助理、手持式计算机或其它通信/计算装置的情况下,可以浓缩基于客户机的框架。
开发者的编程框架图2更详细地示出了编程框架132。公共语言规范(CLS)层140支持以各种语言130(1)、130(2)、130(3)、130(4)、…、130(K)书写的应用。这些应用语言包括Visual Basic、C++、C#、COBOL、Jscript、Perl、Eiffel、Python等等。公共语言规范140指定了特征的一个子集或关于特征的规则,如果遵循这些规则,则允许各种语言进行通信。例如,某些语言不支持给定类型(如,“int*”类型),而这些类型可由公共语言运行时144支持。在这一情况下,公共语言规范140不包括该类型。另一方面,由所有或大多数语言支持的类型(如“int[]”类型)包括在公共语言规范140中,使得库开发者可以自由地使用这一类型,并且确保该语言能够处理该类型。这一通信能力产生了以一种语言书写的代码模块和以另一种语言书写的代码模块之间的无缝集成。由于不同语言特别适合于特定的任务,语言之间的无缝集成允许开发者为代码模块选择特定的语言而却能够与以不同语言书写的代码模块一起来使用该代码模块。公共语言运行时144允许具有跨语言继承性的无缝多语言开发,并为多编程语言提供了一种健壮且安全的执行环境。关于公共语言规范140和公共语言运行时144的更多信息,请读者阅读2000年6月21日提交的名为“编译多语言的方法和系统(Method and System for Compiling Mutiple Languages)”(序列号09/598,105)以及2000年7月10日提交的“统一数据类型系统和方法(UnifiedData Type System and Method)”(序列号09/613,289)的共同待批的申请,该等申请通过引用结合于此。
框架132封装了操作系统146(1)(如,Windows操作系统)和对象模型服务146(2)(如组件对象模型(COM)或分布式COM)。操作系统146(1)提供了常规的功能,如文件管理、通知、事件处理、用户界面(如,开窗口、菜单、对话框等)、安全、验证、核实、进程和线程、内存管理等等。对象模型服务146(2)提供了与其它对象的接口来执行各种任务。向API层142作出的调用被交付给公共语言运行时层144,用于由操作系统146(1)和/或对象模型服务146(2)本地执行。
API 142将API函数分组成多个名字空间。名字空间本质上定义了类、接口、委托、枚举和结构的集合,统称为“类型”,该集合提供了一组具体的相关功能。“类”表示具有参考赋值语义的管理堆已分配数据。“委托”是面向对象的函数指针。“枚举”是表示命名内容的一种特殊的值类型。“结构”表示具有值赋值语义的静态已分配数据。“接口”定义了其它类型可实现的约定。
通过使用名字空间,设计者能够将一组类型组织成一个分层名字空间。设计者能够从该组类型创建多个组,每一组包含展现逻辑上相关功能的至少一个类型。在示例性实现中,对应用142进行组织来包括三个根名字空间。应当注意,尽管在图2中仅示出了三个根名字空间,在API 142中也可以包括另外的根名字空间。API 142中示出的三个根名字空间是用于演示子系统的第一名字空间200(包括用于用户界面外壳的名字空间202)、用于web服务的第二名字空间204以及用于文件系统的第三名字空间206。然后可以向每一组分配一个名字。例如,可以向演示子系统名字空间200中的类型分配名字“Windows”、向文件系统名字空间206中的类型分配名字“Storage”。可以在用于系统层API的单个“全局根”名字空间,如总体系统(System)名字空间下组织命名的组。通过选择并顶层标识符并将其作为前缀,每一组中的类型可以由包括作为包含该类型的组的名字的前缀的所选择的顶层标识符容易地引用。例如,文件系统名字空间206中的类型可以使用分层名字“System.Storage”来引用。以这一方式,个别的名字空间200、204和206变为从系统名字空间分支的主要部分,并可具有该个别名字空间在何处以指示符,如“System.”前缀作为前缀的指定。
演示子系统名字空间200属于编程和内容开发。它提供允许生成应用、文档、媒体演示和其它内容的类型。例如,演示子系统名字空间200提供一种允许开发者从操作系统146(1)和/或对象模型服务146(2)获取服务的编程模型。
外壳名字空间202属于用户界面功能。它提供了允许开发者在其应用中嵌入用户界面功能的类型,并还允许开发者扩充用户界面功能。
web服务名字空间204属于用于启用各种各样web应用的创建的基础结构,web应用如与在内联网上两个对等体之间操作的聊天应用一样简单的应用,和/或与用于上百万个用户的可伸缩web服务一样复杂的应用。描述的基础结构是有利地高度可变的,一个人只需要使用适合具体解决方案的复杂性的那些部分。该基础结构为构建不同规模和复杂性的基于消息的应用提供了基础。该基础结构或框架为基本消息通信、安全消息通信、可靠消息通信和事务消息通信提供了API。在下文所描述的实施例中,关联的API被以仔细制作来平衡适用性、可用性、可扩充性和可定版本性的方式分解成名字空间的层次。
文件系统名字空间206涉及存储。它提供了允许信息存储和检索的类型。
除框架132之外,提供了编程工具220来协助开发者构建web服务和/或应用。编程工具220的一个示例是Visual StudioTM,它是由微软公司提供的一套多语言编程工具。
根API名字空间图3更详细地示出了演示子系统200的一部分。在一个实施例中,依照分层命名约定来标识名字空间,其中名字串用句点来连接。例如,演示子系统名字空间200由根名字“System.Windows”来标识。在“System.Windows”名字空间内的是用于各种控制的另一名字空间,它被标识为“System.Windows.Controls”,它还标识了用于原语的另一名字空间(未示出),称为“System.Windows.Controls.Primitives”。当了解了这一命名约定,以下提供了API 142的所选择的名字空间的综述,尽管可以适用其它命名约定来达到相等的效果。
如图3所示,演示子系统200包括多个名字空间。图3所示的名字空间标识演示子系统200的一个具体实施例。演示子系统200的其它实施例可包括一个或多个另外的名字空间,或者可省略图3所示的一个或多个名字空间。
演示子系统200是API 142的演示功能的大多数的根名字空间。控制名字空间310包括用于构建诸如用户界面等信息显示的控制,以及允许用户与应用交互的类。示例控制包括在显示屏上创建按钮的“按钮(Button)”、在显示屏上生成小圆形风格按钮的“单选按钮(RadioButton)”、在显示屏上创建菜单的“菜单(Menu)”、在显示屏上创建工具条的“工具条(ToolBar)”、在显示屏上创建图像的“图像(Image)”以及创建信息的分层视图的“树形视图(TreeView)”。
通过嵌套并排列多个元素来创建某些控制。控制具有隐藏用于创建该控制的元素的逻辑模型,由此简化的编程模型。控制可以由开发者或用户来设计或定主题(如,通过定制外观和用户界面按钮的行为)。一些控制具有允许个人调节个别控制的风格的可寻址组件。另外,可由应用开发者和组件开发者细分并扩充控制。使用矢量图形呈现控制,使得可以重新调节它们的大小以适合具体的界面或其它显示屏的需求。例如,控制能够使用动画来增强用户界面的交互式感觉并显示行动和反应。
控制名字空间310包括一个或多个面板,它们是测量并排列其子面板(如嵌套元素)的控制。例如,“放置面板(DockPanel)”面板通过将每一子面板放置到显示屏的上、左、下或右侧来排列其子面板,并使用其它数据来填充剩余的空间。特定的面板可将菜单和工具条放置到显示屏的顶部,将状态条放置到显示屏的底部,将文件夹列表放置到显示屏的左侧并以消息列表填充空间的剩余部分。
如上所述,System.Windows.Controls.Primitives是包括多个控制的名字空间,这些控制是通常由System.Windows.Controls名字空间中的控制的开发者和创建其自己的控制的开发者使用的组件。这些组件的示例包括“滚动杆拇指和重复按钮(Thumb and RepeatButton)”。另一组件“滚动条(ScrollBar)”使用四个重复按钮(一个用于“向上换行”、一个用于“向下换行”、一个用于“向上翻页”、一个用于“向下翻页”)和用于将当前视图拖至文档中的另一位置的“滚动杆拇指”来创建。在另一示例中,“滚动察看器(ScrollViewer)”是使用两个“滚动条”和一个“滚动区域(ScrollArea)”创建的提供可滚动区域的控制。
以下列表包含由System.Windows.Controls名字空间展现的示例类。这些类允许用户例如通过各种输入和输出能力以及另外的显示能力与应用进行交互。
·AccessKey-AccessKey(访问按键)是包装字符的框架元素(FrameworkElement)元素,指示要接收表示该字符为键盘记忆的键盘提示修饰。默认地,键盘提示修饰是下划线。
·Audio-音频元素。
·Border-在另一元素周围画边框、背景或两者。
·Button-表示固有地对点击(Click)事件做出反应的标准按钮组件。
·Canvas-定义在其中用户可以通过与画布(Canvas)区域有关的坐标显式地放置子元素的区域。
·CheckBox-使用复选框(CheekBox)给予用户选项,如真/假。复选框允许用户从选项的列表中选择。复选框控制使用户选取选项的组合。
·CheckedChangedEventArgs-该CheckedChangedEventArgs类包含关于复选改变事件(CheckedChangedEvent)事件的另外的信息。
·CheckStateChangedEventArgs-该CheckStateChangedEventArgs类包含关于复选状态改变事件(CheckStateChangedEvent)事件的另外的信息。
·ClickEventArgs-包含关于点击事件的信息。
·ColumnStyle-表示可改变列风格(ColumnStyle)对象。
·ColumnStyles-可改变式样IList对象,是可改变元素的集合。
·ComboBox-组合框(ComboBox)控制。
·ComboBoxItem-在组合框内实现可选择项目的控制。
·ContactPickerDialog-允许用户选择一个或多个联系人。
·ContactPropertyRequest-允许应用通过联系人选取对话框(ContactPickerDialog)请求关于联系人性质的信息。该类不能被继承。
·ContactPropertyRequestCollection-表示联系人性质请求(ContactPropertyRequest)对象的集合。
·ContactSelection-关于来自代号为“WinFS”或Microsoft Active Directory的MicrosoftWindows文件系统的所选择联系人的信息。
·ContactSelectionCollection-表示联系人选择(ContactSelection)对象的集合。
·ContactTextBox-支持选取联系人或联系人性质的编辑控制。
·ContactTextBoxSelectionChangedEventARgs-用于联系人文本框选择改变(ContactTextBoxSelectionChanged)事件的自变量。
·ContactTextBoxTextChangedEventArgs-用于联系人文本框文本改变(ContactTextBoxTextChanged)事件的自变量。
·ContactTextBoxTextResolvedEventArgs-用于文本解析为联系人(TextResolvedToContact)事件的自变量。
·ContentChangedEventArgs-用于内容改变事件(ContentChangedEvent)的事件自变量。
·ContentControl-用于内容的单个片断的所有控制的基类。
·ContectPresenter-ContentPresenter在内容控制的风格内用于表示控制的可视树(金属框模板)内要添加内容之处。
·ContextMenu-定义用户调用的选项的菜单的控制。
·ContextMenuEventArgs-在上下文菜单事件(ContextMenuEvent)上发送的数据。
·Control-表示所有用户交互元素的基类。该类为其子类提供了基本性质组。
·Decorator-在诸如边框(Border)等单个子元素上或周围应用效果的元素的基类。
·DockPanel-定义在其中可以水平或垂直相对彼此地排列子元素的区域。
·DragDeltaEventArgs-该DragDeltaEventArgs类包含关于拖曳增量事件(DragDeltaEvent)事件的另外的信息。
·FixedPanel-FixedPanel是在固定格式文档中用于包含分页的固定页的根元素。FixedPanel每次在一页上显示分页内容,或将分页内容显示为页的可滚动栈。
·FlowPanel-FlowPanel用于断开、包装并对齐超出单行的长度的内容。FlowPanel提供了行断开和对齐性质,它们可以在载体的内容,如文本(Text)的流动可能超出单行的长度时使用。
·Frame-可加载另一标记树的内容的区域。
·Generator-Generator是生成代表项目控制(ItemsControl)的UI(用户界面)的对象,在生成器工厂(GeneratorFactory)的监督下运行。
·GeneratorFactory-GeneratorFactory负责生成代表项目控制(ItemsControl)的UI。它维护控制的项目集合(ItemsCollection)(拉伸视图)中的项目和对应的用户界面元素(UIElements)之间的关联。控制的项目载体可向工厂要求生成器(Generator),生成器执行UI的实际生成。
·GridPanel-定义包括列和行的栅格区域。
·HeaderItemsControl-用于包含多个项目且具有头部的所有控制的基类。
·HorizontalSerollBar-水平滚动条类。
·HorizontalSlider-水平滑动条类。
·HyperLink-HyperLink类实现导航控制。默认呈现器是文本呈现器(TextPresenter)。
·Image-提供在文档或应用中包括图像的简单方式。
·IncludeContactEventArgs-传递ContactPickerDialog.IncludeContact事件的处理器的自变量。
·ItemCollection-维护控制内的离散项目的集合。提供了允许改变集合内容并获取关于该内容的数据的方法和性质。
·ItemsChangedEventArgs-项目改变(ItemsChanged)事件由生成器工厂引发来向布局通知项目集合已改变。
·Itemscontrol-具有多个子控制的所有控制的基类。
·ItemsView-ItemsView提供了项目集合(ItemCollection)的拉伸视图。
·KeyboardNavigation-KeyboardNavigation类提供了用于可聚焦控制之间的逻辑(跳格)和方向(箭头)导航的方法。
·ListBox-实现所选择的项目的列表的控制。
·ListItem-实现列表框(ListBox)内所选择的项目的控制。
·Menu-定义用户调用的选项的菜单的控制。
·MenuItem-菜单(Menu)的子项目。可选择菜单项目(MenuItems)来调用命令。菜单项目可以是分隔符。菜单项目可以是子菜单的头部。菜单项目可以被复选或未复选。
·PageViewer-表示包含分页控制、工具条和页条控制的文档视图复合控制。
·PaginationCompleteEventArgs-分页完成事件(PaginationCompleteEvent)的事件自变量。
·PaginationProgressEventArgs-分页进行事件(PaginationProgressEvent)的事件自变量。
·Pane-提供了不装入新窗口在标记语言(如,“XAML”)中定义窗口性质的方法。
·Panel-提供了所有Panel(面板)元素的基类。为例示Panel元素,使用衍生的具体类。
·RadioButton-RadioButton(单选按钮)实现具有两种状态真或假的选项按钮。
·RadioButtonList-该控制起单选按钮的分组控制的作用,并且是处理单选按钮相互排他性的片断。RadioButtonList从选择器(Selector)继承。RadioButtonList本质上是单选模式选择器,并且(来自选择器的)选择的概念从其分组的单选按钮的所复选的性质中切除。
·RowStyle-可改变式样的可改变元素。
·RowSytles-可改变式样的IList对象,它是可改变元素的集合。
·ScrollChangeEventArgs-ScrollChangeEventsArgs描述了滚动状态中的变化。
·ScrollViewer-·SelectedItemsCollection-选择器(Selector)中所选择的项目的载体。
·SelectionChangedEventArgs-到选择改变事件处理器的输入。
·SimpleText-SimpleText是期望在用户界面(UI)情形中使用的轻量、多行、但格式文本元素。SimpleText将若干同样的格式化性质展现为文本(Text),并通常可以用于以某一多功能性的成本获得的性能。
·SytleSelector-StyleSelector允许应用书写者提供自定义风格选择逻辑。例如,使用类Bug作为内容,对Pri1程序错误使用特定的风格并对Pri2程序错误使用不同的风格。应用书写者可忽略衍生的选择器类中的SelectStyle(选择风格)方法,并向ContentPresenter类上的StyleSelector(风格选择器)性质分配该类的实例。
·Text-表示允许呈现文本的多种格式的文本控制。文本最佳地在应用UI内使用;更高级的文本情形从文本面板(TextPanel)的另外的特征组获益。在大多数需要相对简单文本支持的情况下,由于其轻量特性和特征范围,文本是较佳的元素。
·TextBox-表示提供接受文本输入的可编辑区域的控制。
·TextChangedEventArgs-TextChangedEventArgs类表示与由TextRange.SetText()引发的事件有关的路由事件自变量(RoutedEventArgs)类型。
·TextPanel-对文本格式化、定大小并绘制。TextPanel支持多行文本和多文本格式。
·ToolTip-当用户覆盖在控制上时显示信息的控制。
·ToolTipEventArgs-在工具提示事件(ToolTipEvent)上发送的数据。
·TransformDecorator-TransformDecorator包含一个子元素并向其应用指定的变换。TransformDecorator实现在其本地(预变换)坐标中测量和排列子元素的逻辑,使得在变化之后,该子元素紧密地在该修饰器的空间中合适并使用最大区域。因此,该子元素不需要具有变换向其应用的知识。
·UIElementCollection-UIElementCollection是UI元素(UIElement)的排序集合。
·ValueChangedEventArgs-该ValueChangedEventARgs类包含关于值改变事件(ValueChangedEvent)事件的另外的信息。
·VerticalScrollBar-垂直滚动条类。
·VerticalSlider-垂直滑动条类。
·Video-在当前用户坐标系统内指定的矩形内播放流视频或音频文件。
·VisibleChangedEventArgs-VisibleChangedEventArgs类包含关于可视改变事件(VisibleChangedEvent)事件的另外的信息。
System.Windows.Controls名字空间也包含各种枚举。以下列表包含与System.Windows.Controls名字空间关联的示例枚举。
·CharacterCase-当键入文本时指定文本框(TextBox)控制中的字符的大小写。
·CheckState-指定可以被复选、取消复选或设为中间状态的诸如复选框等控制的状态。
·ClickMode-指定应当何时激活点击(Click)事件。
·ContactControlPropertyPosition-控制联系人性质的位置和显示。
·ContactPickerDialogLayout-指定联系人选取对话框(ContactPickerDialog)应当如何显示选择的性质。
·ContactPropertyCategory-在一个性质具有多个用户可从中选择的值的情况下指定使用哪一值作为默认。例如,如果指定“Work(工作)”为当向联系人选取对话框请求电话号码性质时的较佳类别,并且用户选择了既有工作电话号码又有家庭电话号码的联系人,则工作电话号码出现为默认选择。用户然后可以使用UI来替代地选择家庭电话号码·ContactPropertyType-指定联系人选取对话框可向用户要求的联系人的性质。
·ContactType-指定在联系人选取对话框中显示哪一联系人类型。
·Direction-该枚举由生成器工厂(GeneratorFactory)和生成器(Generator)用于指定生成器生成UI的方向。
·Dock-指定放置面板(DockPanel)中子元素的放置位置。
·GeneratorStatus-该枚举由生成器工厂(GeneratorFactory)用于指示其状态。
·KeyNavigationMode-TabNavigation性质类型指定当出现跳格导航时载体如何移动焦点。
·MenuItemBehavior-定义菜单项目能够具有的不同行为。
·MenuItemType-定义菜单项目的不同布置类型。
·Orientation-滑动条定向类型。
·PageViewerFit-选择页应当如何适合页察看器(PageViewer)的客户区域。
·PageViewerMode-选择模式下拉中反应的当前页察看器模式。
·ScrollerVisibility-可视性(Visibility)定义了滚动条的可视行为。
·SelectionMode-指定了列表框(ListBox)的所选择的行为。
“Position(位置)”是与System.Windows.Controls名字空间关联的一个示例结构。Generator的用户使用该结构来描述位置。例如为从项目列表的始端开始前向生成,指定位置(-1,0),和方向Forward(前向)。为从列表的末端开始后向生成,指定位置(-1,0)和方向Backward(后向)。为在具有索引k的元素之后生成项目,指定位置(k,0)和方向Forward(前向)。
以下列表包含了与System.Windows.Controls名字空间关联的示例委托。
·CheckedChangedEventHandler-该委托由CheckedChangedEvent事件的处理器使用。
·CheckStateChagnedEventHandler-该委托由复选状态改变事件(CheckStateChangedEvent)事件的处理器使用。
·ClickEventHandler-表示处理点击(Click)事件的方法。
·ContactTextBoxSelectionChangedEventHandler-用于联系人文本框选择改变(ContactTextBoxSelectionChanged)事件的委托处理器。
·ContactTextBoxTextChangedEventHandler-用于联系人文本框改变(ContactTextBoxChanged)事件的委托处理器。
·ContactTextBoxTextResolvedEventHandler-用于文本解析到联系人(TextResolvedToContaet)事件的委托处理器。
·ContentChangedDelegate-用于联系人改变事件(ContentChangedEvent)的委托。
·ContextMenuEventHandler-用于处理上下文菜单事件(ContextMenuEvent)的回叫类型。
·DragDeltaEventHandler-该委托由拖曳增量事件(DragDeltaEvent)事件的处理器使用。
·IncludeContactEventHandler-用于ContactPickerDialog.IncludeContact事件的处理器。
·ItemsChangedEventHandler-用于接收项目改变事件自变量(ItemsChangedEventArgs)的处理器的委托。
·OpenedEventHandler-用于ContactPickerDialog.Opened事件的处理器。
·PaginationCompleteDelegate-用于分页完成事件(PaginationCompleteEvent)的委托。
·PaginationProgressDelegate-用于分页进行事件(PaginationProgressEvent)的委托。
·ScrollChangeEventHandler-该委托由滚动改变事件(ScrollChangeEvent)事件的处理器使用。
·SelectionChangedEventHandler-用于处理选择改变事件的委托类型。
·TextChangedEventHandler-用于接收文本改变事件自变量(TextChangedEventArgs)的处理器的委托。
·ToolTipEventHandler-用于处理工具提示事件(ToolTipEvent)的回叫类型。
·ValueChangedEventHandler-该委托由值改变事件(ValueChangedEvent)事件的处理器使用。
·VisibleChangedEventHandler-该委托由可视改变事件(VisibleChangedEvent)事件的处理器使用。
另-名字空间System.Windows.Controls.Atoms是System.Windows.Controls名字空间的子名字空间。System.Windows.Controls.Atoms包括关联的控制、事件自变量和事件处理器。以下列表包含了与System.Windows.Controls.Atoms名字空间关联的示例类。
·PageBar-表示可滚动分页控制。
·PageElement-呈现分页内容的具体页。要呈现的页由页源(PageSource)性质指定。
·PageHoveredEventArgs-PageHoveredEventArgs提供了关于鼠标指针覆盖在何处的信息。
·PageScrolledEventArgs-PageScrolledEventArgs包含属于页滚动(PageScrolled)事件的信息。
·PageSelectedEvenArgs-当作出新行/列范围选择时激发页选择事件(PageSelectedEvent)。
·PageSelector-PageSelector允许用户选择要显示的页的行/列范围。
·PageSource-标识要分页的内容源。它也提供了用于格式化分页内容的性质和方法。
以下列表包含了与System.Windows.Controls.Atoms名字空间关联的示例委托。
·PageHoveredEventHandler-该委托由页覆盖事件(PageHoveredEvent)事件的处理器使用。
·PageScrolledEventHandler-该委托由页滚动(PageScrolled)事件的处理器使用。
·PageSelectedEventHandler-该委托由页选择事件(PageSeleetedEvent)事件的处理器使用。
System.Windows.Controls.Primitives名字空间是System.Windows.Controls名字空间的另一子名字空间。如上所述,Primitives子名字空间包括期望被其它更多的复杂控制用作原语的控制。以下列表包含了与System.Windows.Controls.Primitive名字空间关联的示例类。
·ButtonBase-当在衍生的类中忽略时,定义了相关的事件和性质,并为相关输入事件提供处理器。
·Popup-创建包含内容的飞出窗口的控制。
·RangeBase-标识用于具有特定范围的元素的基类。这类元素的示例是滚动条和进度条。该类定义了相关的事件和性质,并为该事件提供了处理器。
·RepeatButton-RepeatButton控制添加点击(Click)事件何时出现的重复情形。
·ScrollArea-ScrollArea是用于滚动的有效元素。它包含它所剪切的内容并提供性质来展现该内容的偏移和扩充。它也提供默认输入处理,使得可以可编程地或通过键盘或鼠标滚轮来驱动滚动。
·ScrollBar-滚动条类。
·Selector-用于从其子控制中选择项目的控制的基类。
·Slider-滑动条类。
·Thumb-滚动杆拇指控制启用滚动条基本拖曳—移动功能和窗口调整大小部件。
“IEnsureVisible”是与System.Windows.Controls.Primitives名字空间关联的示例接口。IEnsureVisible在可视部件上实现以将子可视部件滚动/移动到视图。
以下列表包含了与System.Windows.Controls.Primitives名字空间关联的示例枚举。
·ArrowButtonStates-·CloseModeType-描述弹出窗口应当如何对各种鼠标事件作出行为。
·Part-Part枚举用户指示构成滚动条的控制的情形使用。
·PartStates-滚动条部件状态。
·PlacementType-描述应当在屏幕的何处放置弹出窗口。
·SizeBoxStates-文档名字空间312是用于创建多功能格式化且语义丰富的文档的语义和格式化元素的集合。在一个实施例中,“element(元素)”是主要结合元素的层次(称为“树”)使用的类。这些元素可以是交互式的(如,通过键盘、鼠标或其它输入设备接收用户输入)、可以呈现图像或对象并可以协助其它元素的排列。示例元素包括实现一般块的“Bloc(块)”元素、标识包括表格体的内容的“Body(正文)”元素、标识包括在表格头中的内容的“Header(头)”元素以及用于跨多页断开内容的“PageBreak(页断开)”元素。
以下列表包含了由System.Windows.Documents名字空间展现的示例类。
·AdaptiveMetricsContext-AdaptiveMetricsContext为自适应流格式(adaptive-flow-format)文档提供了根元素。一旦在AdaptiveMEtricsContext元素中封装了子面板,由读度量引擎(RME)处理该面板的内容。子面板的大小用于计算任一列的数量和大小,并优化字体大小和行高。
·Block-实现不引入默认呈现行为的一般块元素。
·BlockElement-实现用于所有Block元素的基类。
·Body-表示构成Table(表)元素的体的内容。
·Bold-实现从Inline(内嵌)衍生的Bold(粗体)元素。
·BreakRecord-储存跨页中断继续格式化分页内容必需的信息。从该类继承来提供分页支持。这是抽象类。
·Cell-Cell包含表(Table)内的表数据。Cell元素包含在行(Row)中。
·CellCollection-表单元的排序集合。
·Column-Column元素用于分配栅格面板(GridPanel)或表(Table)的内容。
·Columncollection-Columnclooection是列(Column)的排序集合。
·ColumnResult-表示列的视图相关的信息。
·ContainerParagraphResult-提供对仅包含其它Paragraph(段落)对象的Paragraph对象的计算布局参数的访问。
·ContentPosition-表示段落内的内容的位置。从该类继承来描述关联的内容的位置。这是抽象类。
·Document-Document类的目的是将文档的内容从包围其的UI“金属框”中去耦。“去耦”指可以在不考虑(且不提交)其UI的情况下创作文档。Document类保留了文档内容,通常为文本面板(TextPanel)或固定面板(FixedPanel)及其子类。可视树(默认为页察看器(PageViewer))通过WPP控制式样机制与该元素关联。
·DocumentPage-表示与服从分页的文档的页关联的控制的布局信息。从该类继承来描述这些控制的布局信息。这是抽象类。
·DocumentPageParagraphResult-提供对被分页影响的对象的计算布局参数的访问。
·FindEngine-用于找出算法的基类。
·FindEngineFactory-找出算法工厂。
·FixedPage-提供对固定格式布局文档内的内容的单个页的访问。
·Footer-表示构成表(Table)元素的页脚的内容。
·Headaer-表示构成表(Table)元素的头的内容。
·Heading-实现将文本呈现为标题的块级元素。
·HyphenationDictionary-HyphenationDictionary表示用于提供应用内的断字支持目的的字典。它可包含内嵌字典和到外部字典的引用。该内嵌字典具有较高的优先级,并在外部字典中的条目之前应用。
·Hyphenator-Hyphenator对象维护到断字字典(HyphenationDictionary)内的断字数据的引用,并且也执行断字。
·Inline-实现不引入任何默认呈现行为的一般内嵌元素。
·InlineElement-将一般内嵌元素实现为所有内嵌元素的基类。
·Italic-实现从Inline衍生的Italic(斜体)元素。
·LineBreak-表示强迫断行的标记元素。
·LineResult-提供到文本的行的计算信息的访问。
·List-实现列表元素。列表是设计成使用诸如项目符号或编号等标记格式化的块级元素。
·ListElementItem-实现列表元素项目,支持诸如项目符号或编号的标记。
·Note-实现记录元素,类似于HTML中的记录元素。
·PageBreak-表示用于跨不同的页断开内容的标记元素。
·PageDescriptor-实现页描述符,储存创建分页布局所必需的信息。
·Paragraph-实现用于在段落中呈现文本的块级元素。呈现行为类似于HTML中段落元素的呈现行为。
·ParagraphResult-提供到段落(Paragraph)对象的计算布局参数的访问。
·Row-在栅格面板(GridPanel)或表(Table)元素内定义行。
·RowCollection-RowCollection表示行(Row)的排序集合。
·Section-实现一般载体元素。呈现行为类似于HTML中的div元素。
·SmallCaps-实现内嵌小体大写字母元素。小体大写字母元素是如标题中呈现为字母的小体大写版本用于强调的印刷形式。
·Subscript-表示内嵌下标元素。注脚字符书写在其它字符的正下方、左下方或右下方。
·Superscript-表示内嵌上标元素。上标字符通常是字母或数字,并呈现在其它字符的正上方、左上方和右上方。
·Table-Table用于使用标记语言(如“XAML”)以表格的形式显示复杂数据。
·TextArray-用于文本访问和操纵的基本API。
·TextChangedEventArgs-TextChangedEventArgs定义了当改变文本阵列(TextArray)时发送的事件自变量。
·TextElement-TextElement提供了方便文本树(TextTree)的文本范围(TextRange)。它是具有固定端点的不变、连续文本范围。它提供了内容元素输入(ContentElement Input)、聚焦(Focus)和事件(Eventing)支持。它也提供了DependencyObject(依赖对象)性质支持。
·TextNavigator-这可以枚举文本内容。实现可移动文本位置(TextPositoin)。它可由在文本中的已知位置上运行或放置的文本移动。
·TextParagraphResult-提供对包括浮动对象和图片的文本的计算布局参数的访问。
·TextPosition-这是表示文本阵列(TextArray)中某一位置的对象。表示文本中的位置的压缩对象当文本改变时自动维护位置。比较操作仅可应用到同一文本阵列(同一上下文)内的位置。文本位置可以是静态或可移动的。IsChangeable(是否可改变)性质告知了位置的种类。
·TextRange-TextRange是提供与性质的零或更多子范围的一般关联的抽象类。子范围操纵在衍生的类上定义。
·TextRangeMovable-TextRangeMovalbe是用于可移动文本范围的抽象类。它添加了基于文本单元(TextUnit)移动起始和终止点的能力。
·TextTreeChangedEventArgs-TextChangedEventArgs定义了当文本阵列改变时发送的事件自变量。
·TextTreeDumper-TreeDumper是因包装问题而公用的树测试类。
·TextTreeNavigator-这是表示文本树中某一可移动位置的对象。它是TextNavigator(文本导航器)的一种特定实现,仅在文本树中使用。
·TextTreePosition-这是表示文本树中某一不变位置的对象。它是TextPosition(文本位置)的一种特定实现,仅在文本树中使用。
·TextTreeRange-提供了方便文本树的文本范围。它是具有可移动端点的可变、连续文本范围。
·TextTreeRangeContentEnumerator-直接在文本树范围之下的子对象上的枚举器。
·TextUnit-文本导航的可扩充单元。
·TextUnits-用于文本位置和文本范围的常用文本单元。
·Typography-提供了到多功能开放类型印刷性质组的访问。
·UIElementParagraphResult-完全由UI元素(UIElement)组成的段落的段落结果。用于浮动物(Floater)、图片(Figure)和嵌入式块级UI元素。
·Underline-实现从InlineElemnt衍生的下划线元素。
以下列表包含了与Systen.Windows.Documents名字空间关联的示例接口。
·IDocumentContentHost-在内容主类上实现该结构,使得当内容改变时该主类的子类能够通知该主类。
·IDocumentFormatter-在元素上实现该接口以提供对诸如分页等文档特征的支持。
·ITextDocumentResult-实现该接口为文本段落提供文本和位置信息。
以下列表包含了与System.Windows.Documents名字空间关联的示例枚举。
·ElementEdge-这标识了查找文本位置之处的对象的边缘。
·FindAdvancedOptions-由FindAlgorithm(搜索初始化) 和TextRangeMovable/TextSelection(简化搜索执行)类使用的高级搜索选项。
·FindOptions-由TextBox.Find方法使用的简化搜索选项。
·LogicalDirection-LogicalDirection定义了用于文本中的移动的逻辑方向。它也用于确定当在文本位置上插入内容时将文本位置移动到何处。
·TextArrayRunType-这标识了查找文本位置之处的运行,考虑逻辑方向。
·TextChangeOptions-用于可改变文本(CanChangeText)的可能文本变化。
·TextMoveOptions-这通过指定暂停导航的条件控制文本导航器的移动。
以下列表包含了与System.Windows.Documents名字空间关联的示例委托。
·ObjectCloneDelegate-当复制或移动文本阵列的一部分时提供依赖对象(DependencyObject)的复制或副本。
·TextChangedEventHandler-TextChangedEventHandler委托在每次向文本树添加或从其移除内容时使用文本改变事件自变量来调用。
形状名字空间314是用于创建图像和对象的矢量图形元素的集合。矢量图形元素的使用允许容易地调整元素的大小以适合特定的界面或显示设备的需求。以下列表包含了由System.Windows.Shapes名字空间展现的示例类。
·Ellipse-绘制椭圆。
·Glyphs-以诸如“XAML”等标记语言表示字形形状。字形用于表示字体。
·Line-绘制两点之间的直线。
·Path-绘制一列连接的直线和曲线。
·Polygon-绘制多边形(形成封闭形状的一列连接的直线)。
·Polyline-绘制一列连接恶直线。
·Rectangle-绘制矩形。
·Shape-为形状元素,如椭圆、多边形和矩形提供基本功能的抽象类。
System.Windows.Controls、System.Windows.Documents和System.Windows.Shaples名字空间为开发应用和相关组件提供了一种集成系统。这一集成系统为所有三个名字空间提供了公用编程模型,由此简化了应用程序的开发。所有三个名字空间之间的互操作性允许开发者学会了适应用于由三个名字空间提供的特征的任一个的单个编程体系结构。例如,对所有三个名字空间使用公用标记语言。这一公用标记语言提供了XML标记中指定的类和性质到对象的例示树的映射。
另外,对三个名字空间使用一种一致编程模型和一致服务。例如,使用了一致事件系统来启动并处理各种事件。使用了公用性质系统来设计各种性质、将数据绑定到性质或对性质进行动画制作,而不管该性质是否与“控制”、“文档”或“形状”名字空间关联。另外,相同的输入范例和布局处理对所有三个名字空间是公用的。例如,来自System.Windows.Controls名字空间的各种控制可以在使用System.Windows.Documents名字空间定义的文档内容中间嵌套。
示例源文件包括使用“控制”、“文档”和“形状”声明性地定义的一组窗口和窗格(也称为“页”)。也为窗口和窗格提供了交互逻辑。交互逻辑标识响应于具体用户行动或响应于事件或活动的出现而执行的程序代码。例如,使用公共语言运行时(CLR)语言来定义交互逻辑。CLR是处理程序代码(如.NET程序代码)的执行并提供诸如安全相关服务和内存相关服务等各种服务的运行时刻环境。示例CLR语言包括C#和Visual Basic。源文件也可包括其它独立编程语言文件,如C#或Visual Basic文件。
尽管本讨论参考“控制”、“文档”和“形状”名字空间的集成,该集成可应用到本发明所讨论的名字空间和子名字空间的所有或任一个。
数据名字空间316包括用户将元素的性质绑定到数据源的类和接口、数据源类和集合和视图的数据专用实现。这些类和接口也用户处理数据条目中的异常,并允许基于各种数据源中的信息在运行时刻创建用户界面。数据可以以文本形式显示,或可以用于改变显示的格式,例如,如果美元数为负时以红色显示。示例类包括标识管理动态性质用户界面和源数据之间的绑定绑定声明对象的“Bind”类,以及担当用于绑定到XML内容节点的数据的数据源的“XmlDataSource”类。
媒体名字空间318提供各种媒体类。应用开发者以及组件开发者可使用这些类来开发各种演示功能。媒体名字空间318中的示例类包括准许某些成像效果(如,模糊和灰度级)的“ImageEffect”类,以及提供用于使用纯色、梯度、图像、视频等填充区域的机制的“Brush”类。
媒体名字空间318包括子名字空间System.Windows.Media.Animation,它包括允许开发者对性质进行动画制作并使用一组时间线协调一组动画的服务。动画是随时间改变值的对象。动画效果包括在显示屏上移动对象,以及改变对象的大小、形状或色彩。可通过将动画与元素的性质值关联来达到效果。例如,为创建在视图中渐显和渐隐的矩形,将一个或多个动画与该矩形的不透明性性质向关联。
媒体名字空间318也包括提供各种文本服务的子名字空间System.Windows.Media.TextFormatting。例如,“文本格式化器”文本引擎提供了用于断开文本行并格式化显示屏上所呈现的文本的服务。“文本格式化器”能够处理不同的文本字符格式和段落风格,并处理国际文本布局。
设计名字空间320提供了能够编辑形式和文本、格式化数据并交叉处理数据共享的类。这些类为编辑文档、应用和其它内容提供了可扩充框架。
输入名字空间322包括协调由系统接收的输入的输入管理器。输入名字空间322也包括帮助管理并为不同的输入设备,如键盘或鼠标提供控制的类。
导航名字空间324提供了允许使用导航范例,如浏览器应用构建应用的一组类和服务。这些类和服务准许使用定制的导航经验来开发应用程序。例如,当从联机商家购买产品或服务时,点击“Back(回退)”按钮促使应用显示一个不同的页,询问用户他们是否想要取消或改变其订单。在另一示例中,激活“Refersh(刷新)”按钮促使应用检索新数据而不是首先加载应用再检索新数据。导航名字空间324也包括提供用于生成向用户呈现的问题的层次的机制的页函数。
自动化名字空间326提供支持可访问性和用户界面自动化的一组类。
串行化名字空间328提供可从XML文件或具有二进制标识的文件加载对象(如,元素)的层次或向这些文件中保存对象(如,元素)的层次的分析器。该过程也设置与对象关联的特性并管理事件处理器。
互操作名字空间330提供能够与其它操作系统或计算平台互操作的一组类。
forms.interop(形式互操作)名字空间332提供允许应用主含形式控制操作的元素。
另一名字空间System.IO.CompoudFile(图3中未示出)提供了使用在其中储存了各种文档可分布文件的复合文件的服务。这些服务允许内容的加密和压缩。服务也支持同一内容,如可重新流动的文档和固定格式的文档的多次再现的存储。
示例性计算系统和环境图4示出了适合在其中实现编程框架132(全部或部分)的计算环境400的一个示例。计算环境400可在本发明描述的计算机和网络体系结构中使用。
示例性计算环境400仅为计算环境的一个示例,并非建议对计算机和网络体系结构的使用或功能的范围的局限。也不应将计算环境400解释为对示例性计算环境400中示出的任一组件或其组合具有依赖或需求。
框架132可以使用众多其它通用或专用计算系统环境或配置来实现。适合使用的众所周知的计算系统、环境和/或配置包括但不限于,个人计算机、服务器计算机、多处理器系统、基于微处理器的系统、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。该框架的压缩或子集版本也可以在有限资源的客户机中实现,如蜂窝电话、个人数字助理、手持式计算机或其它通信/计算装置。
框架132可以在计算机可执行指令的一般上下文环境中描述,计算机可执行指令如程序模块,由一个或多个计算机或其它装置执行。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。框架132也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒质中,如存储器存储设备。
计算环境400包括计算机402形式的通用计算装置。计算机402的组件可包括但不限于,一个或多个处理器或处理单元404、系统存储器406以及将包括处理器404的各类系统组件耦合至系统存储器406的系统总线408。
系统总线408代表若干种总线结构类型的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各类总线结构的处理器或本地总线。作为示例而非局限,这类结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)本地总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机402通常包括各种计算机可读媒质。这类媒质可以是可由计算机402访问的任一可用媒质,包括易失和非易失媒质、可移动和不可移动媒质。
系统存储器406包括以易失存储器形式的计算机可读媒质,如只读存储器(ROM)410,和/或非易失存储器形式的计算机存储媒质,如随机存取存储器(RAM)412。基本输入/输出系统(BIOS)414包括如在启动时帮助在计算机402内的元件之间传输信息的基本例程,储存在ROM 412中。RAM 410通常包含处理单元404立即可访问和/或当前正在操作的数据和/或程序模块。
计算机402也可包括其它可移动/不可移动、易失/非易失计算机存储媒质。作为示例,图4示出了对不可移动、非易失磁媒质(未示出)进行读写的硬盘驱动器416、对可移动、非易失磁盘420(如“软盘”)进行读写的磁盘驱动器418以及对可移动、非易失光盘424,如CD ROM、DVD-ROM或其它光媒质进行读写的光盘驱动器422。硬盘驱动器416、磁盘驱动器418和光盘驱动器422的每一个通过一个或多个数据媒质接口425连接到系统总线408。可选地,硬盘驱动器416、磁盘驱动器418和光盘驱动器422可以通过一个或多个接口(未示出)连接到系统总线408。
驱动器及其关联的计算机可读媒质为计算机402提供了计算机可读指令、数据结构、程序模块和其它数据的非易失存储。尽管本示例示出了硬盘416。可移动磁盘420和可移动光盘424,可以理解,也可以使用可储存可由计算机访问的数据恶其它类型的计算机可读媒质,如磁带盒或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等,来实现示例性计算系统和环境。
多个程序模块可储存在硬盘416、磁盘420、光盘424、ROM 412和/或RAM 410中,作为示例包括,操作系统426、一个或多个应用程序428、其它程序模块430和程序数据432。操作系统426、一个或多个应用程序428、其它程序模块430和程序数据432的每一个(或其某一组合)可包括编程框架132的元素。
用户可以通过诸如键盘434和定位设备436(如“鼠标”)等输入设备向计算机402输入命令和信息。其它输入设备438(未具体示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪和/或其类似物。这些和其它输入设备通过耦合至系统总线408的输入/输出接口440连接到处理单元404,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器442或另一类型的显示设备也通过接口,如视频适配器444连接到系统总线408。除监视器442之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机446等组件,通过输入/输出接口440连接到计算机402。
计算机408可以在使用到一个或多个远程计算机,如远程计算装置448的逻辑连接的网络化环境中操作。远程计算装置448可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它公用网络节点等。示出远程计算装置448为包括本发明所描述的与计算机402有关的许多或所有元件和特征的便携式计算机。
计算机402和远程计算机448之间的逻辑连接被描述为局域网(LAN)450和一般广域网(WAN)452。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机402通过网络接口或适配器454连接至局域网450。当在WAN网络环境中使用时,计算机402通常包括调制解调器456或其它装置,用于通过广域网452建立通信。调制解调器456可以对计算机402是内置或外置的,通过输入/输出接口440或其它合适的机制连接至系统总线408。可以理解,示出的网络连接是示例性的,也可以使用在计算机402和448之间建立通信链路的其它装置。
在网络化环境中,如使用计算环境400所示出的,描述的与计算机402或其部分相关的程序模块可储存在远程存储器存储设备中。作为示例,远程应用程序458驻留在远程计算机448的存储器设备中。为说明目的,本发明示出应用程序和诸如操作系统等其它可执行程序组件为离散块,尽管可以认识到,这类程序和组件在不同的时刻驻留在计算装置402的不同存储组件中,并由计算机的数据处理器执行。
框架132的一种实现,尤其是API 142或对API 142作出的调用,可以储存在某一形式的计算机可读媒质中或在其上传输。计算机可读媒质可以是可由计算机访问的任一可用媒质。作为示例而非局限,计算机可读媒质包括“计算机存储媒质”和“通信媒质”。“计算机存储媒质”包括以用于储存信息的任一方法或技术实现的易失和非易失,可移动和不可移动媒质,信息如计算机可读指令、数据结构、程序模块或其它数据。计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机访问的任一其它媒质。
“通信媒质”通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据。通信媒质也包括任一信息传送媒质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信媒质包括有线媒质,如有线网络或直接连线连接,以及无线媒质,如声学、RF、红外和其它无线媒质。上述任一的组合也应当包括在计算机可读媒质的范围之内。
可选地,框架的部分可以以硬件或硬件、软件的组合和/或固件来实现。例如,可以设计或编程一个或多个专用集成电路(ASIC)或可编程逻辑器件(PLD)来实现该框架的一个或多个部分。
编程接口(或简称之为接口)可以被视为用于令代码的一个或多个片断能与由代码的一个或多个其它片断提供的功能进行通信或对其进行访问的任一机制、过程、协议。可选地,编程接口可以被视为能够通信地耦合至其它计算机的一个或多个机制、方法、函数调用、模块等的系统的组件的一个或多个机制、方法、函数调用、模块、对象等。上述语句中的术语“代码片断”意在包括代码的一个或多个指令或代码行,并包括,如,代码模块、对象、子例程、函数等等,无论应用的术语是什么、或代码片断是否被单独编译、或代码片断是否被提供为源码、中间码或对象代码、代码片断是否在运行时系统或进程中使用、或它们是否位于同一或不同机器上或跨多个机器分布、或由代码片断表示的功能是否完全由软件、完全由硬件或硬件和软件的组合来实现。
概念上,编程接口可以被一般地察看,如图5或图6所示的。图5示出了接口“接口1”为管道,第一和第二代码片断通过该管道进行通信。图6示出了接口包括接口对象I1和I2(可以是或不是第一和第二代码片断的部分),它们令系统的第一和第二代码片断能通过媒质M进行通信。在图6中,可以认为接口对象I1和I2为同一系统的单独接口,并且也可以认为对象I1和I2加上媒质M构成了接口。尽管图5和6示出了双向流程以及该流程的每一侧上的接口,某些实现可仅具有一个方向上的信息流(或如下所述没有信息流),或仅具有一侧的接口对象。作为示例而非局限,诸如应用编程或程序接口(API)、入口点、方法、函数、子例程、远程过程调用和组件对象模型(COM)接口等术语包含在编程接口的定义之内。
这类编程接口的方面可包括第一代码片断向第二代码片断发送信息的方法(其中,“信息”以其最广泛的意义使用,并包括数据、命令、请求等等);第二代码片断接收信息的方法;以及该信息的结构、序列、语法、组织、模式、定时和内容。在这一点上,只要信息以接口所定义的方式传输,底层传输媒质本身可以对接口的操作不重要,无论该媒质是有线还是无线,或两者的组合。在某些情况下,在常规意义上,当一个代码片断仅访问由第二代码片断执行的功能时,信息可不在一个或两个方向上传输,因为信息传输可以是或者通过另一机制(如,信息被放置在与代码片断之间的信息流分离的缓存、文件等中)或者不存在。这些方面的任一个或所有可以在给定的情况下重要,如,取决于代码片断是否是松耦合或紧耦合配置的系统的一部分,并且因此该列表应当被认为是说明性的而非限制。
编程接口的这一概念对本领域的技术人员是已知的,并且可以阅读上述本发明的详细描述而清楚这一概念。然而,有其它方法来实现编程接口,并且除非明显地排除,这些方法也由所附权利要求书包含在内。这些其它方法看似比图5和6的视图更精密或复杂,但是它们仍执行类似的功能来完成同一整体结果。现在简要描述编程接口的某些说明性替换实现。
A.分解可以通过将通信分裂成多个离散通信来间接地实现从一个代码片断到另一个的通信。这在图7和8中示意性地描述。如图所示,可以按照功能的可分组来描述某些接口。由此,可以分解图5和6的接口功能来达到相同的结果,如同可以在数学上提供24,或2乘2乘3乘2一样。因此,如图7所示,可以细分由接口“接口1”提供的功能以将该接口的通信变换成多个接口“接口1A”、“接口1B”、“接口1C”等,而达到相同的结果。如图8所示,由接口I1提供的函数可以被细分成多个接口I1a、I1b、I1c等,而达到相同的结果。类似地,从第一代码片断接收信息的第二代码片断的接口I2可以被分解成多个接口I2a、I2b、I2c等。当分解时,包括在第一代码片断中的接口的数量不需要匹配包括在第二代码片断中的接口的数量。在图7或8的任一情况下,接口“接口1”和I1的功能性精神分别与图5和6的保持相同。接口的分解也可遵从联合、通信和其它数学性质,使得分解较难识别。例如,命令操作可以是不重要的,并且因此由接口完成的功能可以在达到该接口之前由另一段代码或接口较好地完成,或者由系统的单独组件执行。此外,编程领域的普通技术人员可以理解有各种方式来作出不同的函数调用而达到相同的结果。
B.重定义在某些情况下,可能忽略、添加或重定义编程接口的某些方面(如参数),而仍达到预期的结果。这在图9和10中示出。例如,假定图5的接口“接口1”包括函数调用Square(input,precision,output)(平方),它包括三个参数,input(输入)、precision(精度)和output(输出),并且由第一代码片断向第二代码片断发布。如果中间参数precision在给定的情形下无关紧要,如图10所示,它也可以被忽略或甚至由meaningless(无意义)(在这一情况下)参数来替换。也可以添加无关紧要的additional(另外)参数。在任一情况下,只要在输入由第二代码片断平方之后返回输出,就可以达到square(平方)的功能。Precision也有可能对计算系统的某一下游或其它部分是极有意义的参数;然而,一旦认识到precision对计算平方这一有限目的不是必需的,它可以被替换或忽略。例如,不是传递一个有效的pricision值,而是在不对结果产生不利地影响的情况下传递诸如出生日期等无意义的值。类似地,如图10所示,接口I1由接口I1′替换,它被重新定义来忽略或向接口添加参数。接口I2可类似地被重定义为接口I2′,它被重定义来忽略不必要的参数,或可在别处处理的参数。此处的要点是在某些情况下,编程接口可包括对某一目的而言所不需要的方面,诸如参数,因此可以忽略或重定义它们,或在别处处理它们用于其它目的。
C.内嵌代码合并两个单独的代码模块的一些或全部功能也是可行的,使得它们之间的“接口”改变形式。例如,图5和6的功能可以被分别转化到图11和12的功能。在图11中,图5的先前的第一和第二代码片断被合并成包含两者的模块。在这一情况下,该代码片断仍可以彼此通信,但是该接口可以适用于更适合单个模块的形式。由此,例如,正式的调用(Call)和返回(Return)状态将不再必需,但是依照接口“接口1”的类似的处理或响应仍是有效的。类似地,如图12所示,图6的部分(或所有)接口I2可以内嵌地写入接口I1来形成接口I1″。如图所示,接口I2被划分成I2a和I2b,并且接口部分I2a内嵌在接口I1中书写代码来形成接口I1″。对于具体的示例,考虑图6的接口1执行函数调用square(input,output),它由接口I2接收,在由第二代码片断处理传递到input的值(对其求平方)之后,它被使用output传递回已求平方的结果。在这一情况下,由第二代码片断执行的处理(对input求平方)可以由第一代码片断在不调用该接口的情况下执行。
D.脱离可以通过将通信分裂成多个离散的通信来间接地完成从一个代码片断到另一个的通信。这在图13和14中示意性地描述。如图13所示,提供了中间件的一个或多个片断(脱离接口(Divorce Interface),因为它们从原始的接口脱离的功能和/或接口函数),以转化第一接口“接口1”上的通信,使得它们符合不同的接口,在本情况下为“接口2A”、“接口2B”和“接口2C”。这可以在这样一种情况中完成,例如,依照“接口1”协议设计应用的已安装基础与如操作系统进行通信,但是然后改变该操作系统来使用不同的接口,在本情况下为接口“接口2A”、“接口2B”和“接口2C”。要点是改变了由第二代码片断使用的原始接口,使得它不再与第一代码片断所使用的接口兼容,因此使用中间物来令旧接口和新接口兼容。类似地,如图14所示,可以使用脱离接口DI1引入第三代码片断以从接口I1接收信息,并使用脱离接口DI2引入第三代码片断以向例如接口I2a和I2b发送接口功能,重新设计接口I2a和I2b以使用DI2,但是提供相同的功能性结果。类似地,DI1和DI2可共同工作以将图6的接口I1和I2的功能翻译成一新操作系统,而提供相同或类似的功能性结果。
E.重写再一种可能的变化是动态地重写代码,使用别的东西来替换接口的功能,而仍达到相同的总体结果。例如,可以有一种系统,其中,向执行环境(如由.Net框架提供的环境、Java运行时刻环境或其它类似的运行时刻类型环境)中的及时(Just-in-Time)(JIT)编译器或解释器提供了中间语言(如Microsoft IL、JavaByteCode等)中呈现的代码片断。可以书写JIT编译器以动态地将通信从第一代码片断转化到第二代码片断,即,令它们符合第二代码片断(原始或不同的第二代码片断)所需要的不同接口。这在图15和16中有描述。如图16中所看见的,这一方式类似于上述的脱离情形。它可以在这样一种情况下完成,例如,依照“接口1”协议设计应用的已安装基础操作系统进行通信,然后改变该操作系统以使用不同的接口。JIT编译器可以用于令已安装基础应用的空中通信符合操作系统的新接口。如图16所描述的,可以应用这一动态重写接口的方法以进行动态分解,或者改变接口。
应当注意,上述通过替换实施例实现与接口相同或相似的结果的情形也可以以各种方式串行、并行或与其它干预代码组合。由此,上文呈现的替换实施例并非相互穷尽,并且可以被混合、匹配和组合以产生与图5和6中所呈现的一般情形相同或等效的情形。也应当注意,如同大多数编程构造,本发明可能未描述达到与接口相同或相似的功能的其它类似的方式,但是它们仍由本发明的精神和范围来表示,即,应当注意,它至少部分地是由作为接口的值的基础的接口表示的功能或由其启用的有利结果。
总结尽管以对结构特征和/或方法行动特定的语言描述了本发明,应当理解,所附权利要求书中定义的本发明不必局限在所描述的具体特征或行动上。相反,描述了具体特征和行动作为实现所要求权利的发明的示例性形式。
权利要求
1.一种包含在一个或多个计算机可读媒质上的编程接口,其特征在于,它包括与生成图形对象有关的第一组服务;与将内容格式化有关的第二组服务;以及与创建所述图形对象的组件有关的第三组服务。
2.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务共享一公用编程模型。
3.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务使用一公用标记语言。
4.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务共享一公用事件系统。
5.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务共享一公用特性定义系统。
6.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务共享一公用输入范例。
7.如权利要求1所述的编程接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务共享一公用系统,所述公用系统用于在与另一组服务关联的元素内嵌套与一组特定服务关联的元素。
8.如权利要求1所述的编程接口,其特征在于,所述第一组服务包括一确定所述图形对象的外观的服务。
9.如权利要求1所述的编程接口,其特征在于,所述第一组服务包括一确定所述图形对象的行为的服务。
10.如权利要求1所述的编程接口,其特征在于,所述第一组服务包括一确定所述图形对象的排列的服务。
11.如权利要求1所述的编程接口,其特征在于,所述第一组服务包括定义所述图形对象的多个嵌套元素。
12.如权利要求1所述的编程接口,其特征在于,所述图形对象包括由矢量图形定义的一个或多个元素。
13.如权利要求1所述的编程接口,其特征在于,所述第一组服务可在不装入新窗口的情况下以标记语言定义窗口性质。
14.如权利要求1所述的编程接口,其特征在于,所述第一组服务生成一包含多个图形对象的用户界面。
15.如权利要求1所述的编程接口,其特征在于,所述第二组服务排列所述图形对象。
16.一种包括权利要求1所述的编程接口的软件体系结构。
17.一种包含在一个或多个计算机可读媒质上的应用程序接口,其特征在于,它包括与生成图形对象有关的第一组服务;与将内容格式化有关的第二组服务;以及与创建所述图形对象的组件有关的第三组服务,其中,所述第一组服务、所述第二组服务和所述第三组服务共享一公用编程模型。
18.如权利要求17所述的应用程序接口,其特征在于,所述第一组服务、所述第二组服务和所述第三组服务使用一公用标记语言。
19.如权利要求17所述的应用程序接口,其特征在于,所述第三组服务包括生成几何形状的服务。
20.如权利要求17所述的应用程序接口,其特征在于,所述第一组服务包括对多个数据元素进行排列。
21.如权利要求17所述的应用程序接口,其特征在于,所述第一组服务包括一确定图形对向的外观的服务;以及一确定所述图形对象的行为的服务。
22.如权利要求17所述的应用程序接口,其特征在于,所述第一组服务包括一在不装入新窗口的情况下以标记语言定义窗口特性的服务。
23.一种包括一个或多个微处理器及一个或多个软件程序的计算机系统,所述一个或多个软件程序使用一编程接口从操作系统请求服务,所述编程接口包括请求服务的单独的命令,其特征在于,所述服务包括以下服务组用于生成图形对象的第一组服务;以及用于创建所述图形对象的组件的第二组服务,其中,所述第一组服务和所述第二组服务共享一公用编程模型。
24.如权利要求23所述的计算机系统,其特征在于,所述第一组服务包括一用于定义所述图形对象的外观的服务;以及一用于定义所述图形对象的排列的服务。
25.如权利要求23所述的计算机系统,其特征在于,所述第二组服务包括生成多个几何形状的服务。
26.一种方法,其特征在于,它包括调用方便生成图形对象的一个或多个第一函数;以及调用方便将内容格式化的一个或多个第二函数,其中,所述第一函数和所述第二函数共享一公用编程模型。
27.如权利要求26所述的方法,其特征在于,它还包括调用方便创建所述图形对象的组件的一个或多个第三函数。
28.如权利要求26所述的方法,其特征在于,它还包括调用方便生成包含在所述图形对象内的几何形状的一个或多个第三函数。
29.如权利要求26所述的方法,其特征在于,所述第一函数方便了在不装入新窗口的情况下以标记语言定义窗口特性;以及生成一包含多个图形对象的用户界面。
30.一种系统,其特征在于,它包括用于展现能够生成图形对象的第一组函数的装置;用于展现能够创建所述图形对象的组件的第二组函数的装置,其中,所述图形对象的组件包括多个几何形状,并且其中,所述第一组函数和所述第二组函数共享一公用编程模型。
31.如权利要求30所述的系统,其特征在于,所述第二组函数还能够在要呈现的页上排列所述几何图形。
32.如权利要求30所述的系统,其特征在于,它还包括用于展现能够将内容格式化用于显示的第三组函数的装置。
33.如权利要求30所述的系统,其特征在于,所述第一组函数和所述第二组函数使用一公用标记语言。
34.如权利要求30所述的系统,其特征在于,所述第一组函数和所述第二组函数共享一公用事件系统和一公用特性定义系统。
全文摘要
一种编程接口提供了用于生成应用、文档、媒体演示和其它内容的函数。这些函数允许开发者从操作系统、对象模型服务或其它系统或服务获取服务。
文档编号G06F17/00GK1609793SQ200410078528
公开日2005年4月27日 申请日期2004年9月10日 优先权日2003年10月24日
发明者J·L·伯格丹, R·A·雷尔耶 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1