CN101137959A - 用于跨越远程边界传送计算机可读对象的系统和方法 - Google Patents
用于跨越远程边界传送计算机可读对象的系统和方法 Download PDFInfo
- Publication number
- CN101137959A CN101137959A CNA2004800012499A CN200480001249A CN101137959A CN 101137959 A CN101137959 A CN 101137959A CN A2004800012499 A CNA2004800012499 A CN A2004800012499A CN 200480001249 A CN200480001249 A CN 200480001249A CN 101137959 A CN101137959 A CN 101137959A
- Authority
- CN
- China
- Prior art keywords
- computer
- type
- readable medium
- serialization
- attribute
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q9/00—Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
- H04Q9/02—Automatically-operated arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q9/00—Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
Abstract
提供了用于跨越远程边界安全地传送计算机可读对象的系统和方法。该方法基于已知对象类型的列表把任何类型的对象都分解成子组件分级结构。每个子组件对应于已知对象类型或未知对象类型。未知对象可进一步分解成分级结构中另一级别上的已知对象类型。分级结构中的已知对象被串行化成传送给远程实体的包。远程实体重建该分级结构。对于任一已知对象类型,远程实体例示已知对象类型的一对象,并以该包中传送的信息填充该对象。可通过为指定一分级结构的级别、指定限制串行化的已知对象数量、或者指定对象中要串行化的属性来限制分解。
Description
技术领域
本发明涉及远程计算系统,尤其涉及用于在远程通信期间传送计算机可读对象的方法。
背景技术
当今在软件开发中,开发者利用一种称为面向对象编程的编程概念。在面向对象编程中,定义了计算机可读对象。对象具有属性和方法。属性存储属于该对象的数据。方法执行关联于该对象的功能,并通常向定义在该对象中的属性提供接口。尽管用对象编程提供了很好的多功能性,跨越远程边界诸如在不同计算机之间使用对象仍然显示出具有某些挑战性。
一个挑战是确定用于在两台计算机之间传送对象的机制。在某些环境中,对象的可执行代码(方法)以及其属性从服务器计算机传送到请求计算机。然而,如果所传送的可执行代码执行诸如删除文件的有害动作,该方案可造成请求计算机的安全风险。因而,已经开发了其它方案以使这种潜在风险最小。
一种当前方案是一种称为Web服务技术的技术。使用该技术,传送到请求计算机的对象被转换成XML(扩展标记语言)。在收到XML之后,请求计算机把XML转换回对象。然后请求计算机可访问该对象的属性并调用该对象的方法。使用该技术,请求计算机负责了解并信任作为所接收对象来源的服务器。另外,对于希望与请求计算机通信的任何对象,开发该对象的软件开发者必须实现一专用接口以处理该通信。该专用接口为了传送对象提供一种用于串行化和解串(de-serialize)对象的机制。
尽管该Web服务技术方案提供了用于跨越远程边界传送对象的稳固环境,该技术还是有限并负担繁重的。在某些环境中,诸如在系统管理环境中,强迫软件开发者实现系统管理任务想要监视的对象专用接口并非是可行的方案。例如,想要开发者实现这些专用接口并不是一件小事,且需要开发者从其主要目标-为其自己的特定应用实现对象-转移注意力。因此,许多开发者不为他们的对象专用转移接口且因而不可访问这些对象。
因此,需要一种跨越远程边界传送对象的方法,它对软件开发者而言是安全的,而不是限制性的和负担繁重的。
发明内容
本发明涉及用于对象远程通信的机制和技术。简言之,提供了用于跨越远程边界安全地传送计算机可读介质的系统和方法。该方法基于已知对象类型的列表把任何类型的对象都分解成子组件分级结构。每个子组件对应于已知对象类型或未知对象类型。未知对象类型还可分解成分级结构中另一级别上的已知对象类型。分级结构中的已知对象被串行化成传送给远程实体的包(package)。远程实体重建该分级结构。对于任一已知对象类型,远程实体例示已知对象类型的一对象,并以该包中传送的信息填充该对象。可通过为指定一分级结构的级别、指定限制串行化的已知对象数量、或者指定要串行化对象中的属性来限制分解。
附图说明
图1示出了可实现示例性管理工具架构的示例性计算装置。
图2是一般地示出示例性管理工具架构纵览的框图。
图3是示出如图2所示的管理工具架构的主机专用组件中组件的框图。
图4是示出如图2所示的管理工具架构的核心引擎组件中组件的框图。
图5是示例性扩展类型管理器的功能框图,该管理器适于在如图2所示的管理工具架构中使用。
图6是用来指定cmdlet的示例性数据结构,该数据结构适于在如图2所示的管理工具架构中使用。
图7是示出如图2所示的管理工具架构中用于执行cmdlet远程处理的组件的功能框图。
图8是示出用于处理cmdlet的示例过程的逻辑流程图。
图9是示出适于在图8中使用的串行化过程和解串过程的纵览的框图。
图10是示出用于串行化对象的示例性过程的逻辑流程图,该过程适于在图8所示cmdlet的处理中使用。
图11是示出用于解串对象的示例性过程的逻辑流程图,该过程适于在图8所示cmdlet的处理中使用。
图12是属性嵌套分级结构(bag hierarchy)的图形表示,该分级结构在如图10所示的串行化过程期间生成。
图13是示出用于谈判协议的示例性过程的逻辑流程图,该协议适于结合如图10所示用来串行化对象的过程使用。
具体实施方式
简言之,用于跨越远程边界传送对象的本系统和方法提供了用于传送对象的一种安全方法。另外,本系统和方法不在对象上施加任何人工要求。因此,软件开发者不会招致任何使用其对象用来支持远程操作的压力。因而,不像现有的系统,可跨越远程边界向请求过程传送任何计算机上或者同一计算机上的另一过程的任何对象。另外,用于传送对象的本系统和方法不需要两台计算机执行相同版本的软件。相反,该方法还并入了一种协议谈判过程,它不仅提供了用于在两个不同版本之间支持通信的机制,还使得跨越远程边界传送的数据量为最小。
以下的详细描述被分成若干小节。一般而言,本系统和方法在示例性管理工具环境的上下文中描述。然而,在阅读了以下描述之后,本领域技术人员将理解可在包括于所附权利要求书范围内的其它示例性环境中实现本发明。
第一小节描述一示例性管理工具环境可在其中操作的说明性计算环境。第二小节描述用于管理工具环境的示例性框架。随后的小节描述示例性框架的单个组件以及这些组件的操作。例如,关于“Cmdlet的示例性远程处理”的小节结合图7-13描述了用于跨越远程边界传送对象的示例性系统和方法。
示例性计算环境
图1示出了可用于示例性管理工具环境的示例性系统计算装置。在非常基本的配置中,计算装置100通常包括至少一个处理单元102和系统存储器104。取决于计算装置的准确配置和类型,系统存储器104可以是易失的(诸如RAM)、非易失的(诸如ROM、闪存等等)、或两者的某些组合。系统存储器104通常包括操作系统105、一个或多个程序模块106,也可包括程序数据107。操作系统106包括基于组件的框架120,该框架支持组件(包括属性和事件)、对象、继承、多形性、反映,并提供面向对象的基于组件应用编程接口(API),诸如华盛顿州Redmond的微软公司制造的.NETTM框架。操作系统105还包括与基于组件的框架120交互的管理工具框架200,以支持管理工具(未示出)的开发。基本配置在图1中由虚线108内的那些组件示出。
计算装置100可具有附加特征或功能。例如,计算装置100还可包括诸如磁盘、光盘、或磁带的其它数据存储装置(可移动和/或不可移动)。这种其它存储器在图1用可移动存储器109和包括移动存储器110示出。计算机存储介质可包括以用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息的任何方法或技术实现的易失和非易失、可移动和不可移动的介质。系统存储器104、可移动存储109和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化通用光盘(DVD)或其它光学存储器、磁盒、磁带、磁盘存储器或其它磁性存储装置、或可用来存储所需信息并可由计算装置100访问的任何其它介质。任何这种计算机存储介质可以是装置100的一部分。计算装置100还可具有诸如键盘、鼠标、笔、语音输入装置、触摸输入装置等等的输入装置112。还可包括诸如显示器、扬声器、打印机等等的输出装置114。这些装置在本领域中是众所周知的,无需在此赘述。
计算装置100还可包含使装置能与其它计算装置118诸如在网络上进行通信的通信连接116。通信连接116是通信介质的一个示例。通信介质通常体现为计算机可读指令、数据结构、程序模块、或其它诸如载波或其它传送机制的已调制数据的信号的其它数据,并包括任何信息传送介质。术语“已调制数据信号”意指具有以这种把信息编码到信号中的方式来设置或改变的一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其它无线介质的无线介质。在此所用的术语计算机可读介质包括存储介质和通信介质。
示例性管理工具架构
图2是一般地示出示例性管理工具架构200纵览的框图。管理工具架构200包括一个或多个主机组件202、主机专用组件204、主机无关组件206、以及处理器组件208。主机无关组件206可与每个其它组件通信(即主机组件202、主机专用组件204、以及处理器组件208)。每个这些组件都在下面简述,并且会按需在随后小节中进行更详细的描述。
主机组件
主机组件202包括向用户或其它程序展现相关联应用程序自动化特征的一个或多个主机程序(例如主机程序210-214)。每个主机程序210-214可用其自己的特定风格来展现这些自动化特征,诸如通过命令行、图形用户界面(GUI)、语音识别接口、应用编程接口(API)、脚本语言、网络服务等等。然而,每个主机程序210-214通过由管理工具框架提供的机制展现一个或多个自动化特征。
在此例中,机制使用cmdlet向相关联主机程序210-214的用户披露管理工具能力。另外,该机制使用主机提供的一组接口来把管理工具环境嵌入到与相应主机程序210-214相关联的应用程序中。贯穿以下的讨论,术语“cmdlet”被用于指在示例性管理工具环境中使用的诸命令。
Cmdlet对应于传统管理环境中的命令。然而,cmdlet与这些传统命令又很不相同。例如,通常cmdlet在尺寸上比其相对命令要小,因为cmdlet能利用管理工具框架提供的通用功能,诸如剖析、数据校验、错误报告等等。由于可一次性地实现并一次性地测试这种通用功能,管理工具框架中cmdlet的使用使得关联于应用程序专用功能的渐进式开发和测试成本与传统环境相比能很低。
此外,与传统环境相反,cmdlet不必是独立的可执行程序。相反,cmdlet可在管理工具框架内的相同过程中运行。这使得cmdlet能在彼此间交换“活动的”对象。交换“活动”对象的能力使cmdlet能够直接调用这些对象上的方法。
总的看来,每个主机程序210-214对管理工具框架内用户和其它组件之间的交互进行管理。这些交互可包括对于参数、错误报告等等的提示符。通常,每个主机程序210-213可提供自己的那组专用主机cmdlet(例如主机cmdlet 218)。例如,如果主机程序是电子邮件程序,该主机程序可提供与邮箱和消息交互的主机cmdlet。尽管图2示出了主机程序210-214,本领域技术人员将理解主机组件202可包括关联于现有或新重建的应用程序的其它主机程序。这些其它主机程序也将把由管理工具环境提供的功能嵌入其相关联应用程序中。
在图2所示的示例中,主机程序可以是管理控制台(即主机程序210),它为用户提供简单、稳定的管理用户接口以创建、存储、以及打开对计算装置的硬件、软件和网络组件进行管理的管理工具。为了完成这些功能,主机程序210提供用来在管理工具框架的顶端建立管理GUI的一组服务。也可将GUI交互展现为帮助把管理工具环境提供的脚本能力教给用户的用户可见脚本。
在另一示例中,主机程序可以是命令行交互外壳(即主机程序212)。命令行交互外壳可使得外壳元数据216能在命令行上输入以影响命令行的处理。
在又一示例中,主机程序可以是为跨平台的分布式计算和互操作性、编程语言、以及应用程序而使用工业标准规格的网络服务(即主机程序214)。在另一示例中,如图7所示,主机程序可提供用于与远程计算机通信的远程接口。
除了这些示例,第三方可通过创建“第三方”或“供应商”接口和供应商cmdlet来添加与它们的主机程序或其它主机程序一起使用的它们自己的主机组件。供应商接口展现应用程序或基础设施,使得该应用程序或基础设施可由管理工具框架操纵。供应商cmdlet提供导航、诊断、配置、生命周期、操作等等的自动化。供应商cmdlet展示完全不同种类的数据存储组上的多形性cmdlet行为。管理工具环境在供应商cmdlet上以与其它cmdlet上相同的优先级进行操作。使用与其它cmdlet相同的机制来创建供应商cmdlet。供应商cmdlet把应用程序或基础设施的特定功能展现给管理工具框架。因而,通过cmdlet的使用,产品开发者仅需要创建使他们的产品能与许多管理工具进行操作的一种主机组件。例如,在所述管理工具环境中,可将系统级图形用户界面帮助菜单集成并搬运至现有应用程序。
主机专用组件
主机专用组件204包括计算系统(例如图1中的计算装置)用以把管理工具框架从该框架运行其上的平台的细节中隔离出来的一堆服务。因而,每类平台都有一组主机专用组件。主机专用组件使用户能在不同操作系统上使用相同的管理工具。
现在简要地看一下图3,主机专用组件204可包括智能感应/元数据组件302、帮助cmdlet组件304、配置/登记组件306、cmdlet设置组件308、以及输出接口组件309。组件302-308与关联于数据存储库314的数据库存储管理器312通信。解析器220和脚本引擎222与智能感应/元数据访问组件302通信。核心引擎224与帮助cmdlet组件304、配置/登记组件306、cmdlet设置组件308、以及输出接口组件309进行通信。输出接口组件309包括由主机提供给外部cmdlet的接口。然后这些外部cmdlet能调用主机的输出对象以执行描绘。主机专用组件204也可包括记录/审计组件310,它被核心引擎224使用以与提供记录和审计能力的主机专用(即平台专用)服务通信。
在一示例性管理工具框架中,智能感应/元数据访问组件302提供命令、参数、以及参数值的自动完成。帮助cmdlet组件304提供基于主机用户接口的定制帮助系统。
处理器组件
再参看图2,处理器组件208包括继承实用程序230、管理cmdlet232、非管理cmdlet234、遥控cmdlet236、以及网络服务接口238。管理cmdlet232(也称为平台cmdlet)包括查询或操纵关联于计算装置的配置信息的cmdlet。由于管理cmdlet232操纵系统类型信息,它们依赖于特定平台。然而,每个平台通常都具有提供与其它平台上的管理cmdlet232类似作用的管理cmdlet232。例如,每个平台都支持获取和设定系统管理属性(例如,“get/process”(“获取/过程”)、“set/IPAddress”(设定/IP地址))的管理cmdlet232。主机无关组件206通过在主机无关组件206中生成的cmdlet对象与管理cmdlet通信。
非管理cmdlet234(有时称为基础cmdlet)包括在由管理cmdlet提供的对象上进行分组、排序、过滤、以及执行其它处理的cmdlet。非管理cmdlet234还可包括由于格式化和输出关联于流水线(pipelined)对象的cmdlet。非管理cmdlet 234在每个平台上可能都是相同的,并提供通过cmdlet对象与主机无关组件206交互的一组实用程序。非管理cmdlet234与主机无关组件206之间的交互允许对象上的偏转(reflection),并允许在经偏转对象上进行无关于其(对象)类型的处理。因而,这些实用程序使得开发者能够仅编写一次非管理cmdlet,然后将这些cmdlet应用到计算系统所支持的所有类对象上。过去,开发者不得不实现综合要处理数据的格式,然后编写应用程序以仅处理该数据。因此,传统应用程序仅能处理很有限范围的数据。
继承实用程序230包括现有的执行程序,诸如在cmd.exe下运行的win32执行程序。每种继承应用程序230使用作为对象工具框架中对象类型的文本流(即,stdin和stdout)与管理工具框架通信。由于继承实用程序230利用了文本流,由管理工具框架提供的基于偏转操作不可用。继承实用程序230在与管理工具框架不同的过程中执行。尽管未示出,其它cmdlet也可在过程外操作。
遥控cmdlet236结合网络服务接口238,提供遥控机制以经诸如互联网或内联网(例如,图2中所示的互联网/内联网240)的通信介质访问其它计算装置上交互式和有程控的管理工具环境。在一示例性管理工具架构中,遥控机制支持取决于跨多个独立控制域的基础设施的联合服务。遥控机制使脚本能在远程计算装置上执行。脚本可在单个或多个远程系统中上运行。当每个单独脚本完成时可处理脚本的结果,或者在已完成各种计算装置上所有脚本之后可集合结果并一起进行处理。
例如,示作主机组件202之一的网络服务214可以是远程代理。远程代理处理远程命令请求向目标系统上的解析器和管理工具框架提交。远程cmdlet作为远程客户机以提供对远程代理的访问。远程代理和遥控cmdlet通过经解析流进行通信。在协议层上可保护该经解析流,或者可使用附加cmdlet来加密该经解析流,然后将其解密。用于处理远程cmdlet并在远程过程之间传送对象的示例性组件如图7所示,且在以下标题为“cmdlet的示例性远程处理”的小节中进行描述。
主机无关组件
主机无关组件206包括解析器220、脚本引擎222以及核心引擎224。主机无关组件206提供机制和服务以将多个cmdlet分组、协调cmdlet的操作、并协调其它资源、通话以及作业与cmdlet的交互。
示例性解析器
解析器220提供若干机制,用于从各种主机程序接收输入请求,并把该输入请求映射成贯穿管理工具框架诸如在核心引擎224中使用的同一cmdlet对象。另外,集线器220可根据接收的输入进行数据处理。本管理工具框架的解析器220提供向用户轻松展现具有相同能力的不同语言或语法的能力。例如,由于解析器220负责翻译输入请求,解析器220中影响期望输入语法的代码的改变将本质地影响管理工具框架的每个用户。因此,系统管理员可在不同计算装置上提供支持不同语法的不同解析器。然而,用相同解析器操作的每个用户都将体验到对于每个cmdlet的一致语法。相反,在传统环境中,每个命令实现其自己的语法。因而,有了成千上万的命令,每个环境就支持若干不同的语法,而通常其中许多互相之间都不一致。
示例性脚本引擎
脚本引擎222提供机制和服务以使用脚本把多个cmdlet联系起来。脚本是在继承的严格规则下共享通话状态的命令行集合。基于在输入请求中提供的语法,可同步或异步地执行脚本中的多个命令行。脚本引擎222具有处理诸如循环和条件语句的控制结构以及处理脚本中变量的能力, 脚本引擎还管理通话状态,并基于政策(未示出)使cmdlet能访问通话数据。
示例性核心引擎
核心引擎224负责处理由解析器220识别的cmdlet。现在简单看一下图4,示出了管理工具框架200中的示例性核心引擎224。示例性核心引擎224包括流水线处理器402、载入器404、元数据处理器406、错误和事件处理器408、通话管理器410以及扩展类型管理器412。
示例性元数据处理器
元数据处理器406被配置以访问和存储诸如图3中所示数据库存储器314的元数据存储器中的元数据。可通过cmdlet类定义等等中的命令行提供元数据。管理工具框架200中的不同组件可在执行其处理时请求元数据。例如,解析器202可请求元数据以确认命令行上提供的参数。
示例性错误和事件处理器
错误和事件处理器408提供错误对象以在命令行的处理期间存储关于错误的每次发生的信息。对于有关特别适合本管理工具框架的一特定错误和事件处理器的其它信息,参见标题为“System and Method for Persisting Error Information in aCommand Line Environment”为本发明同一受让人所有的美国专利,申请号为10/413,054,在此引入作为参考。
示例性通话管理器
通话管理器410向管理工具框架200中的其它组件提供通话和状态信息。由通话管理器管理的状态信息可由任何cmdlet、主机、或核心引擎通过编程接口进行访问。这些编程接口允许状态信息的创建、更改、以及删除。
示例性流水线处理器和载入器
载入器404被配置以载入存储器中的每个cmdlet,以便流水线处理器402执行该cmdlet。流水线处理器402包括cmdlet处理器420和cmdlet管理器422。cmdlet处理器420分发单个cmdlet。如果cmdlet需要在一个(或一组)远程机器上执行,cmdlet处理器420用如图2所示的遥控cmdlet236协调该执行。cmdlet管理器422处理cmdlet集合的执行。cmdlet管理器422、cmdlet处理器420以及脚本引擎222(图2)互相通信以便在从主机程序210-214接收的输入上执行该处理。通信本质上可以是递归的。例如,如果主机程序提供脚本,该脚本可调用cmdlet管理器422以执行其自身可能也是脚本的cmdlet。然后可由脚本引擎222执行该脚本。
示例性扩展类型管理器
如上所述,管理工具框架提供一组实用程序,它们允许对象上的反射并允许在经反射对象上进行无关其(对象)类型的处理。管理工具框架200与计算系统上的组件框架(图1中的组件框架120)交互以执行该反射。如本领域技术人员所知,反射提供查询对象、获知对象类型、以及然后在关联于该类对象的各种对象和属性上进行反射以获取其它对象和/所需值的能力。
尽管反射向管理工具框架200提供了有关对象的可观信息,但是通常反射关注的是对象的类型。例如,当在数据库数据表上进行反射,所返回的信息是该数据表具有两个属性:列属性和行属性。这两个属性并不提供关于该数据表中“对象”的充分细节。当反射用于可扩展标记语言(XML)和其它对象上时也出现了类似的问题。
相反,扩展类型管理器412相比对象类型而言更关注类型的使用。因而,有此作为其焦点,扩展类型管理器确定是否可使用对象来获取所需信息。继续上述数据表的示例,知道了该数据表具有列属性和行属性并不特别有趣。然而,通过关注其使用,扩展类型管理器使每个行与一“对象”相关联,而使每个列与该“对象”的“属性”相关联。因而,扩展类型管理器412提供一种机制以从任何类型的可精确解析的输入中创建“对象”。在这样做时,扩展类型管理器412补充由基于组件的框架120提供的反射能力,并把“反射”扩展到任何类型的可精确解析的输入中。
总的看来,扩展类型管理器被配置以访问可精确解析的输入(未示出),并把可精确解析的输入与被请求数据类型联系起来。然后扩展类型管理器412向诸如流水线处理器402或解析器220的请求组件提供请求信息。在以下讨论中,可精确解析的输入被定义为在其中属性和值都能被洞悉的输入。某些示例性可精确解析的输入包括Windows管理设备(WMI)输入、ActiveX数据对象(ADO)输入、可扩展标记语言(XML)输入、以及诸如.NET对象的对象输入。其它可精确解析的输入可包括第三方数据格式。
图5是在管理工具架构中使用的示例性扩展类型管理器的功能框图。为了解释,由扩展类型管理器提供的功能(以圆圈内的数字“3”标注)与由传统的严格绑定系统(以圆圈内的数字“1”标注)提供的功能、以及由反射系统(以圆圈内的数字“2”标注)提供的功能进行比较。在传统严格绑定系统中,应用程序中的调用者502直接访问对象A中的信息(例如,属性P1和P2、方法M1和M2)。如上所述,调用者502必须预先在编译时知道由对象A提供的属性(例如属性P1和P2)和方法(例如方法M1和M2)。在反射系统中,一般代码520(不依赖于任何数据类型)查询系统508,该系统在被请求对象上执行反射510并向一般代码520返回关于对象(例如对象A)的信息(例如,属性P1和P2、方法M1和M2)。尽管在对象A中未示出,被返回信息可包括附加信息,诸如供应商、文件、日期等等。因而,通过反射,一般代码520至少获取严格绑定系统提供的相同信息。反射系统还使调用者520能查询系统并且没有对参数的任何预先了解而获得附加信息。
在严格绑定系统和反射系统两者中,新数据类型不能在操作环境中轻易地得到结合。例如,在严格绑定系统中,一旦交付了操作环境,操作环境就不能结合新数据类型,因为为了支持它们将不得不重建该操作环境。类似地,在反射系统中,用于每个对象类的元数据是固定的。因而,通常不能完成新数据类型的结合。
然而,有了本扩展类型管理器,就可把新数据类型结合到操作系统中去。有了扩展类型管理器522,一般代码520可在请求对象上进行反射,以获取由诸如第三方对象(例如对象A’和B)、语义网络532、本体服务534等等的各种外部源提供三维扩展数据类型(例如对象A’)。如图所示,第三方对象可扩展现有对象(例如对象A’)或创建全新对象(例如对象B)。
每个这些外部源可在类型元数据540中登记其独特结构,并可提供代码542。当新闻对象时,扩展类型管理器查看类型元数据540以确定该对象是否已登记。如果该对象未在类型元数据540中登记,则执行反射。否则,执行扩展反射。代码542返回与在其上反射的类型相关联的附加属性和方法。例如,如果输入类型是XML,代码542可包括描述使用XML从XML文档创建对象的方式的描述文件。因而,类型元数据540描述扩展类型管理器412应当如何查询各种类型的可精确解析输入(例如第三方对象A’和B、语义网络532)以获取用来为该特定输入类型创建对象的所需属性,且代码542提供指令以获取这些所需属性。作为结果,扩展类型管理器412提供允许在所有对象类型上“反射”的间接层。该间接层的示例性实现在后面结合远程处理进行更详细的描述。在该实现中,使用可精确解析输入(例如串行化对象)以获取用来为该特定输入类型(例如属性包)创建对象的所需属性。然后该属性包被进一步地分解以创建一个或多个基本类型的对象。如下所述,扩展类型管理器允许用于在远程过程间传送对象的一实施例,并使得任何类型的任何对象能在过程之间进行传送。
除了提供扩展类型,扩展类型管理器412提供附加查询机制,诸如属性路径机制、关键机制、比较机制、转换机制、globber机制、属性设定机制、关系机制等等。可使用各种技术来实现扩展类型管理器的语义。下面将描述三种技术。然而,本领域技术人员将理解可使用这些技术的变种。
在一技术中,可提供具有静态方法(例如getproperty())的一系列类。对象被输入到静态方法中(例如getproperty(object)),且静态方法返回一组结果。在另一技术中,操作环境把对象与适配器封装在一起。因而,没有提供输入。适配器的每个实例都有作用在经封装对象上的getproperty方法,并返回该封装对象的属性。以下是说明该技术的伪码:
Class Adaptor
{
Object X;
getProperties();
}
在又一技术中,适配器类对该对象分子类。通常,分子类在编译前发生。然而,在某些操作环境中,分子类可动态地发生。对于该类环境,以下是说明该技术的伪码:
Class Adaptor:A
{
getProperties()
{
return data;
}
}
因而,如图5所示,扩展类型管理器使开发者能创建新数据类型、登记该数据类型、并使其它应用和cmdlet能使用新的数据类型。相反,在当前的管理环境中,在编译时不得不知道每个数据类型,以便可直接访问从该数据类型例示的关联于对象的属性或方法。因此,过去很少完成对管理环境所支持的新数据类型的添加。
再参看图2,总的看来,管理工具框架200不依赖外壳用于协调由用户输入的命令的执行,而是相反把功能拆分成若干处理部分(例如主机无关组件206)和用户交互部分(例如通过主机cmdlet)。另外,本管理工具环境极大地简化了管理工具的编程,因为需要用于解析和数据确认的代码不再包括在每个命令中,而是由管理工具框架中的组件(例如解析器220)提供。在管理工具框架中执行的示例性处理如下所述。
示例性操作
图6图形地示出了在管理工具环境中使用的示例性数据结构。图8-11和13图形地示出了管理工具环境中的示例性处理流。本领域技术人员将理解,可由不同于以下所述的组件来执行某些处理而不背离本发明的范围。在描述管理工具框架的组件中执行的处理之前,先描述管理工具框架中使用的cmdlet示例性数据结构。
cmdlet对象的示例性数据结构
图6是用来指定一cmdlet的示例性数据结构,该数据结构适于在如图2所示的管理工具架构中使用。当完成时,cmdlet可以是管理cmdlet、非管理cmdlet、主机cmdlet、供应商cmdlet等等。以下讨论从系统管理员角度来描述cmdlet的创建(即供应商cmdlet)。然而,每类cmdlet都以相同方式创建并以相似方式操作。可用任何语言诸如C#来编写cmdlet。另外,可使用脚本语言等等来编写cmdlet。当管理工具环境以.NET框架进行操作时,cmdlet可以是.NET对象。
供应商cmdlet600(此后称为cmdlet600)是源自cmdlet类602的公用类。cmdlet600包括在“<command name>”处指定的cmdlet类名。软件开发者指定把诸如“get/process”(“获得/过程”)、“get/db”(“获得/数据库”)、“format/table”(“格式化/表格”)等等的动词/名词对606关联于cmdlet 600的cmdletDeclaration604。在管理工具环境中登记动词/名词对606。动词或名词可以是隐含的。当具有名字(例如“get/db”)的命令字符串作为命令行上或在脚本中的输入提供时,解析器在cmdlet登记表中查看以标识cmdlet600。
cmdlet600与把期望输入参数的语法定义给cmdlet的语法机制相关联。该语法机制可直接或间接地与cmdlet相关联。例如,cmdlet600示出了直接语法关联。在cmdlet600中,声明了一个或多个公共参数(例如Name630和State632)。每个公共参数630和632可与诸如输入属性631和633的一类或多类属性相关联。输入属性631和633指定分别填充公共参数630和632的方式。例如,可从命令流水线中的另一cmdlet发出的对象、从命令行等等来填充公共参数。如果从其它对象来填充公共参数,cmdlet600包括第一方法640(例如StartProcessing)和第二方法642(例如processRecord)。核心引擎使用第一和第二方法640和642来引导cmdlet600的处理。例如,第一方法640可被执行一次,且它可执行设置功能。可对需要由cmdlet600处理的每个对象(例如记录)执行第二方法642中的代码。cmdlet 600还包括在cmdlet600之后进行整理的第三方法(未示出)。或者,可使用对在诸如XML文档的外部源中定义的公共参数的描述来使语法机制与该cmdlet直接相关联。该外部源中对参数的描述将向cmdlet推动输入对象的解析。
因而,如图6所示,通常第二方法642中的代码是很简短的,且并不包含传统管理工具环境中所需的功能,诸如解析代码、数据确认代码等等。因而,系统管理员不学习复杂的编程语言也能开发复杂的管理任务。
数据结构600还可包括不被识别为输入参数的私有成员650。可使用私有成员650来存储在cmdlet中生成的数据。
现在描述管理工具环境中的示例性过程流。
cmdlet的示例性远程处理
图7是一般示出利用结合本发明描述的机制的远程计算环境700的功能框图。示出的是“管理器”710计算系统和远程计算系统(此后称为远程服务器720)。远程服务器720物理上可位于任何地方,且可以是由诸如员工或订户等终端用户使用的单个计算系统。尽管图7示出了单个远程服务器720,但远程计算环境700可包括任何数量的远程服务器。每个远程服务器执行如下参照远程服务器720所述的处理。
管理器112和远程服务器720可以是诸如图1所示的计算装置100之类的计算装置。管理器112由系统管理员等使用以维护远程服务器720。换言之,管理器112运行命令并执行可查询远程服务器720的状况或状态和/或改变远程服务器720的任务。管理器112具有可包括图2中所示管理工具框架200的若干组件的执行环境。具体地说,管理器112包括远程接口714和基本类型列表712。在一实施例中,基本类型列表712包括有两列的表格:第一列用于列出对象类型而第二列用于引用关联于该类型的特定串行化器。尽管也可利用管理工具框架200中的其它组件来执行cmdlet的远程处理,但以下讨论集中于管理器112和远程服务器720之间的交互以便处理诸如“Rcmd machine:RemoteServer Get/DB”的远程cmdlet,并描述在该环境中按需对其它组件的操作。此外,以下示例说明了一cmdlet的远程处理。然而,如果有cmdlet的流水线,各远程方面也会一样地工作。
远程服务器720包括远程代理724。远程代理724是对应于执行一个或多个cmdlet的远程请求的组件。另外,远程代理724被配置用以获得一个或多个cmdlet的执行的结果,并创建返回给请求实体(例如管理器112)的返回包730。在一实现中,该包取串行化对象的形式,该串行化对象包括执行结果、以及诸如调用日期和时间的元信息、关于结果来源的特定远程系统的标识信息、以及关于请求实体的信息。该信息和可能的其它信息被绑定到返回包730中,并传送回请求实体(例如管理器112)。
特别要注意的是,请求实体可能是在计算系统上执行的一个过程,而远程服务器则是在相同计算系统上运作的另一过程。在该配置中,通信接口740包括用于在两个过程之间通信的为本领域技术人员所熟知的系统级应用编程接口(API)。在另一实施例中,通信接口740包括互联网或内联网。
图8是一般示出可由用于实行一cmdlet的过程800执行的步骤的逻辑流程图。该过程从判定框806开始,其中为执行已经诸如通过命令行等等输入了一cmdlet。例如已经输入了“Rcmd machine:RemoteServer Get/DB”的cmdlet。在判定框806,确定要执行该cmdlet的地方以便确定该执行是否跨越了远程边界。总的看来,每个计算系统(例如管理器112、远程服务器720)支持一个或多个过程。每个过程找到至少一个程序或应用。此外,一个过程可主含一个或多个应用域。应用域是允许在同一过程中执行多个应用但该过程仍与其它应用隔离的一种相对较新机制。应用域是由运行时环境在应用周围创建的逻辑和物理边界。每个应用域防止其各自应用的配置、安全或稳定影响其它应用域中的其它应用。因而,cmdlet可在以下位置上执行:1)请求实体(例如管理器)的应用域中;2)与请求实体相同的过程中的另一应用域中;3)请求实体上的另一过程中;或4)远程服务器上。如果cmdlet在另一过程(#3)中或者远程服务器(#4)上执行,以下讨论指此为在“远程边界”上执行,一般意指在过程边界外执行。
在一实施例中,为了指定该位置,与cmdlet一起指定的参数标识要执行cmdlet的位置。例如,参数“-node”连同相关节点名可指示关联于该节点名的cmdlet在远程服务器上的执行。参数“-workerprocess”可在请求实体的另一过程中指示cmdlet的执行。参数“-appdomain”可指示相同过程的另一应用域中cmdlet的执行。如果要在相同应用域中或在相同过程中的另一应用域中发生,过程在框808继续。否则过程在框818继续。尽管框808-814的处理对远程处理的理解并不是必须的,但理解这个处理将有助于理解为了支持cmdlet的远程处理要克服的相关问题。
在框808,标识关联于cmdlet的文件。对cmdlet及其相关联文件的标识可通过登记进行。如上结合图6所述,文件包含用于执行cmdlet的代码,也包含关联于cmdlet类的属性和方法。
在框810,为了当前的应用域将文件载入过程。如上所述,如果文件从某些未知、不受信任、远程的服务器载入,把可执行文件向请求实体上过程的盲目载入增加了安全隐患。如下结合框820-834所述,可利用用于在远程边界之间传送对象的本方法来克服该安全隐患。
在框812,执行cmdlet。执行包括示例该cmdlet类以创建cmdlet对象、以在cmdlet类中指定的方式填充在cmdlet对象中指定的属性、创建按在cmdlet类的代码中定义的对象。如果输入对象(诸如在流水线命令中来自先前cmdlet的对象)与当前cmdlet类中指定的类不匹配,扩展类型管理器可强迫类型为所需的。过程在框814继续。
在框814,过程可通过访问任一属性以及调用任一方法来操纵被创建对象。这些被创建对象被称为“活动”或“原始”对象,因为可用或能调用该对象的方法。
可以想像,在框808-814框中描述的处理在cmdlet位于远程计算机上时不会是理想的。如果为了执行把远程文件载入本地过程,远程文件就可能执行危及请求实体安全的有害代码。另外,在管理工具环境中,请求实体(例如管理器)一般对获取关于远程计算机的管理信息感兴趣。因而,由cmdlet填充的对象必须包含关于远程服务器而不是请求实体(例如管理器)的状态或其它信息。
如在背景技术小节中所述,在传统网络服务环境中,客户机负责了解和信任其想要通信的远程服务器。然而,如上所述,这极大地限制了客户机要通信的对象,因为仅有支持专用接口的对象才能与请求实体通信。用于在请求实体(例如管理器)和远程服务器之间传送对象的本方法未加这些限制,现在来进行描述。为了方便,在远程实体(例如远程服务器或独立过程)上执行处理的框以“加点”背景示出。
回到确定框806,如果cmdlet要在另一过程或远程服务器上运行,处理在框818继续。在框818,客户机建立关联于远程实体与远程代理的通信。然后远程代理执行框820-824,它们执行如上所述框810-812的功能但是相对远程实体执行。然而,一旦cmdlet执行并获得了其相关联对象,处理在框826继续。
在框826,对象以一定方式串行化,从而不危及请求实体(例如管理器)的安全。串行化过程创建返回包,诸如图7所述的返回包730。总的看来,串行化这些对象以不会对请求实体有害的方式来串行化信息。串行化过程的纵览如图9所示,且串行化过程的更详细描述结合图10如下。处理在框828继续。
在框828,向客户计算机传送串行化对象。串行化对象的传送可使用已知的网络通信的常规方法来执行,或者如果请求实体和远程服务器在同一计算机上则使用过程间通信。处理在块830上继续。
在框830,在请求实体上接收串行化对象。串行化对象类型是在扩展类型管理器上登记的类型。因而,在接收之后,扩展类型管理器识别串行化对象类型。过程在框832继续。
在框832,串行化对象被解串成子组件对象。简言之,解串过程把串行化对象分解成已知基本类型。对于不是基本类型的任何属性,解串把属性保持为属性包。解串过程的纵览如图9所示,且解串过程的更详细描述结合图11如下。处理在框834继续。
在框834,是基本类型之一的解串对象可作为“原始”对象进行操纵,意指可得到关联于对象的方法和属性。不是基本类型之一的解串对象则不可作为“原始”对象进行操纵。这些对象被称为“解串”对象,意指这些对象包含关于对象某些属性的信息,但得不到其方法。
图9是示出适于在图8中使用的串行化过程和解串过程的纵览的框图。一般而言,串行化过程900把由在远程实体上执行的cmdlet创建的对象902转换成等级树904。一般而言,等级树904是表示对象902被拆分成子组件的对象。某些子组件是是两个实体(例如请求实体和远程实体)所知的对象类型。分别在请求实体和远程实体上的基本类型712和722的列表中标识这些已知类型。当基本类型712和722不包含基本类型的相同列表,执行如下结合图13详述的协议谈判过程以确定使用哪个基本类型列表。因而,如下结合图10的更详细描述,等级树中每个条目被串行化并添加到串行化对象906中。在一实施例中,串行化对象906包括XML文档。组合该串行化对象以及其它信息以形成传送到请求实体的请求包。
在收到请求包之后,请求实体检索串行化对象906并执行解串过程910。一般而言,解串过程910重建了等级树904。由于等级树904是扩展类型管理器识别的对象类型之一,扩展类型管理器把等级树904分解成基本对象和/或属性包对象912。基本对象是具备功能性(例如方法)的“活动”(即“原始”)对象。属性包对象912(即“解串”对象)提供相关数据但不包括方法。因而,如该纵览所示,已经向请求实体传送了作为多个“原始”基本对象和其它“解串”对象的原来在远程实体上创建的对象902,而没有危及请求实体的安全或为对象902请求任何专用接口。该解串过程910结合图11进行详述。
图10示出了用于串行化对象的示例性过程900。如上所述,总的看来,串行化过程900把对象及其属性(属性也是对象)分解成已知基础对象以及可能的一个或多个属性包。过程900本质上是递归式的,并持续直到对象(包括属性)已被分解成基本类型之一,或者直到每个剩下的对象都未列于已知基本类型中。由于串行化过程900是递归式的且它可创建难以管理的等级树,过程900也可使用如下所述的若干不同技术进行限制。为了更好地解释过程900,以下讨论使用假设由“get/DB”cmdlet创建的示例对象(例如SQLInfo对象)。一般而言,可以任何传统方式定义该SQLInfo对象。以下是那些常规方式之一:
SQLInfo
{
public intEmployccNumbcr
[Attribute(“Identification”)]
publ ic string Name;
public residence Address;
public int SSN;
public DateTime BirthDatc;
}
图12示出了在过程900期间创建的部分等级树的图形表示。等级树表示以上所示的SQLInfo对象的经分解部分,并将结合图9用于描述串行化过程。
过程900在框1002开始,其中已经创建了由远程cmdlet创建的对象。在框1002,执行协议谈判过程以便标识请求实体与远程实体可进行通信的级别。简言之,如下结合图13详述,为了传送对象,实体进行通信的级别决定要传送给请求实体的信息量。如下所述,协议谈判过程使请求实体和远程实体都能与彼此无关地更新其系统,而仍然使它们能使用不同版本彼此通信。实际上,这允许以比远程实体上版本新若干年的基本类型版本操作的请求实体具备了仍然与远程实体通信的能力。反之亦然。因此,很多年前运送的系统可由新的管理计算机进行管理。谈判过程的输出是标识每个经谈判基本类型的经谈判列表。一旦确定了通信的级别,处理在框1004继续。
在框1004,属性包被创建用于保持关于对象的信息。在一实施例中,可将属性包实现为散列表格。属性包是由管理工具环境支持的核心数据类型。处理在框1006继续。
在框1006,对象的类型通过在该对象上进行反射来标识。一旦类型被标识,处理在评定框1008继续。在判定框1008,要确定经谈判基本类型是否包括经标识的对象类型。可将该确定实现为经谈判列表中的查阅。对于该实现,经谈判列表会标识每一个经谈判基本类型。如果对象被标识为经谈判基本类型之一,处理在框1010继续。
在框1010,为经标识对象在属性包中创建条目。现在将描述属性包的一示例性实现。
现在简单看一下图12,示出了部分示例性等级树(例如属性包树)的图形描述。该部分描述了等级树中的两个级别:具有属性包1220的第一级别;具有子属性包1240的第二级别。每个属性包1220和1240包括名字域1202、值域1204、以及类型域1206。另外,每个属性包1220和1240可包括IsType域1208、WasType域1210、以及TreatAs域1212。属性包1220包括条目1222-1230而子属性包1240包括条目1242-1248。
回到图10,如上所述对于框1010,在属性包122中创建了对象的条目(例如条目1222)。然后用有关该对象的信息来更新该条目的每个域。例如,对象的名字(例如“EmployeeName”)在名字域1202中输入。属性的值(例如28731)在值域1204中输入。对象的类型(例如“Int”)在类型域1206中输入。在一实施例中,名字域可以是散列表格的关键域。处理在框1012继续。
在框1012,对象串行化。通过由下层组件框架提供的机制,或者通过对基本类型所指定的代码等等,直接串行化可发生。对象的串行化过程取决于其基本类型。每个基本类型都有其自己特定的串行化过程。在一实施例中,在经谈判列表中标识该特定串行化过程。对于该实施例,经谈判列表包括对于列表中每个经谈判基本类型的特定串行化过程的引用。在一实施例中,直接串行化将该对象转换成XML。然而,直接串行化可把对象转换成不同于XML的格式,且不背离所附权利要求书。特定串行化过程的结果存储在串行化对象中。
回到判定框1008,如果确定对象未被标识为经谈判基本类型之一,处理在框1014继续。在框1014,属性包类型在类型域1206输入。然后该属性包类型指向在框1016中创建的子属性包(例如子属性包1240)。
在框1016,创建了子属性包(例如子属性包1240)。因而,通过创建子属性包的附加级别,形成了属性包树。子属性包具有与为属性包定义的相同的域。该子属性包还可具有创建属性包等级树中另一级别的一个或多个子属性包的条目。处理在框1020继续。
在框1020,图形地描绘了串行化过程的递归式本性。串行化过程关注于串行化对象中每个所需属性。通常,所需属性是指定为公共的属性。然而,在某些情形中,隐藏属性和其它属性可以是所需属性,且也被串行化。可以各种次序执行框1022-1032。且在某些情形中可有选择地执行一个或多个框(例如框1032)。现在进一步描述框1022-1032的每一个。
在框1022,标识所需属性的类型。通过如上所述参照框1006的反射,这再次发生。
在框1024,把属性的条目添加到当前属性包(例如子属性包)。
在框1026,设定关联于所需属性的条目中的域。按如上框1010所述来设定域,但是在子属性包中而不是属性包中设定。例如,如图12所示子属性包1240中条目1242的域以关联于属性(对象)的信息进行更新。
在框1028,如果所需属性是经谈判基本类型之一,属性按如上框1012所述直接进行串行化。
在框1030,如果所需属性不是经谈判基本类型之一,以递归方式执行框1014和1020。
由于该递归过程,属性包的等级树就变得难以管理了。因而,就需要限制串行化过程900了。在框1032中表示了用于限制串行化过程的实施例,且可有选择地执行之。有若干用于精选等级树的实施例。在一实施例中,可设定指定等级树预定深度的政策。例如,如果预定深度设定为2,当创建了从属性包引用的一个或多个子属性包之后,串行化过程的递归式本性中止。串行化过程900不会对在子属性包中的对象进行任何进一步分解。因而,这些子属性包被串行化为属性包,并被包括在串行化对象中。
在另一实施例中,在串行化之前,远程代理通过剥离未指定属性的“精选”过程运行对象。示例性语法如下:>Rcmd machine:RemoteServer Get/DB | PickName,Birthdate。然后,在串行化期间,指定属性(例如,Name和Birthdate)变成了所需属性,且如上所述进行串行化。精选过程可能是每个系统上可用的另一cmdlet。用精选过程来显式指定属性的一个缺点是为了选择它们,每次都必须指定该精选列表且必须已知道所需属性。
在又一实施例中,框832可使用属性设定机制。属性设定机制使得能对一组属性定义名字。然后管理器为了获取所需的属性组可指定属性组名字以及cmdlet。可用各种方法来定义属性组。在一方法中,可输入诸如“?”的预定参数作为cmdlet的输入参数。识别预定参数之后操作环境可列出对象的所有属性。列表可以是使管理器能检查(例如“click on”)所需属性并命名属性组的GUI。然后把属性组信息存储在经扩展的元数据中。例如,可命名属性组为“performance”(性能)。然后每个对象将标识应当将其属性的哪些包括在该performance属性组中。因此,管理器不需要知道属性的名字,而相反只需要知道所需属性组的名字。可对指定所需属性的命名为“default”(缺省)的属性组进行定义的串行化对象。然后当必需串行化时管理器能指定缺省属性。
限制属性包级别树的另一方法是通过仅支持某些类型,并强迫源自某些类型的类型遵照该类型。在一实施例中,通过在每个对象上进行反射以标识其父来精简(walk down)对象等级结构。对于某些对象,如果它源自基本类型,该对象将被强迫成为其父类型。例如,散列表格对象是Idictionary对象,它是源自基本对象的IEnumberable对象。串行化过程可视该散列表格对象为IEnumberable对象。这样,串行化过程完全支持对象等级结构中某些等级上的对象,但强迫对象等级结构中其它类型的对象遵照该选定类型。实际上,尽管未传送原始对象类型,一旦在接收计算机上获取信息,如果需要接收计算机能在其上执行处理(诸如创建一关键)以获取原始对象。
一旦完成了串行化过程900,串行化对象以及其它信息进行组合以形成传送给请求实体的请求包。
属性包和子属性包可具有在串行化过程期间设定的附加域,诸如IsType域1208、WasType域1210、或者TreatAs域1212。这些类型在解串过程910期间使用。IsType域1208标识对象的类型。然而,当对象被串行化时,对象的IsType域1208变成了“NULL”(空)。WasType域1210标识变化前的属性类型。从该信息,解串过程910能标识对象源自哪里,但不能知道对象当前具有多少属性。例如,如果当串行化对象时使用了属性组或精选过程,则仅串行化了特定属性而不是全部属性。TreatAs域1210标识类型并确保关联于该类型的属性可用。例如,使用以上的属性组示例,能把新对象类型定义为“SQLInfoPersonal”。该新类型确保关联于该对象的经指定属性可用,诸如家庭地址、家庭电话等等。如果指定了足够的属性以包括所有需要具备作为TreatAs资格的属性,串行化过程900将在TreatAs域1210下输入正确的类型。
图11是示出用于解串对象的示例性过程的逻辑流程图,该过程适于在处理图8所示cmdlet中使用。一般而言,解串经传送对象执行与串行化过程相反的操作。处理在框1102开始,其中在经传送数据中标识属性包标记。在一实施例中,标记可以是XML文件中的元素。处理在框1104继续。
在框1104,创建将用经传送数据中包含的信息填充的属性包对象。
在框1106,设定属性包对象的类型属性。类型属性通知经扩展的类型管理器,从而经扩展类型管理器能按需处理该属性包。
在框1108,处理在经传送数据中标识并关联于属性包的每个元素。在框1110,创建属性包中的条目。在框1112,填充属性包中的域。处理在判定框1114继续。
在判定框1114,确定是否在经传送数据中定义了另一属性包。如果有另一属性包定义在经传送数据中,处理在框1102-1108循环直到经传送数据不再包含任何更多的属性包。
然而,一旦不再有更多属性包,处理在框1120-1140继续。一旦已创建了属性包的等级树,就要查看每个属性包以作进一步处理。
在框1120,如果属性包的类型属性是基本类型之一,解串过程例示经标识类型的对象(框1122)并填充对象的属性(框1124)。
在框1130,如果属性包的TreatAs属性指定了一类型,就例示经指定类型的对象(框1132)并填充对象的属性(框1134)。在TreatAs属性中指定的类型是基本类型之一。
在框1140,对于每个剩下的不是基本类型的属性包,例示(框1142)并填充(框1144)属性包中标识的每个对象。
因而,可见如果在远程计算机上创建的原始对象是基本类型,经传送数据包括最少的信息。这对应于仅有一个级别的等级树。经传送数据会包括属性的名字/值对但不会包含任何可执行代码。然而,一旦请求计算机接收了经传送数据并识别了类型,该类型的对象将被例示并会具备由原始对象提供的方法和功能。这样,有害代码不会传送到请求计算机并由其执行。相反,关于该对象的无害信息被传送给请求计算机。
图13是示出用于谈判协议的示例性过程的逻辑流程图,该协议适于结合如图9所示的用于串行化对象的过程使用。即使限制了用以串行化的特定参数或指定了等级树的深度,对于某些对象要在两台计算机间传送的信息量仍然很大。因而,提供了限制必需传送信息量的附加谈判机制。如上所述,等级树的复杂性取决于经谈判基本类型的数量。当大量经谈判基本类型为已知时,等级树就变得不太复杂了,这最终导致传送给请求计算机的信息量变小。对于属性包中指定基本类型的任一条目,为了在请求计算机上创建“原始对象”仅传送最少信息。因而,可以想像为了容纳越来越多的对象,在基本类型的列表中指定的基本类型数量也增加了。然而,本方法仍然没有为了使用该方法而对软件开发者有人为的限制或要求。例如,在某些现有环境中,为了正常操作不得不把两台计算机更新为同一版本。在该现有环境中,为了使通信发生,一计算机指示哪些计算机可与之通信并迫使其它计算机一致。相反,传送对象的本方法提供了一种协议谈判方法,它使得计算机能彼此无关地进行更新,而且仍能彼此通信。
协议谈判过程1300从框1302开始。在框1302,收到客户机版本号。客户机版本号标识了客户机(例如请求计算机)可能使用的基本类型列表的最近版本。处理在判定框1304继续。
在判定框1304,客户机版本号与远程版本号进行比较以确定远程版本号是否更加新。远程版本号标识了远程服务器可能使用的基本类型列表的最新近版本。如果远程版本号更家新,处理在框1306继续。
在框13006,关联于客户机版本号的基本类型列表被用于串行化过程。因而,客户机版本变成了在串行化过程中使用的经谈判列表。
另一方面,如果远程版本号没有客户机版本号新,过程在框1308继续。在框1308,在远程计算机上可用的基本类型最新列表被用于串行化过程。因而,远程版本变成了在串行化过程使用的经谈判列表。
在谈判过程的另一实施例中,请求计算机可向远程计算机发送其支持的基本类型。然后通过接受或拒绝表格中的项目,远程计算机可精简表格并判定所支持的类型。然后被接受的类型形成经谈判列表。
在谈判过程的另一实施例中,请求计算机可发送一组指针。该组指针可指定文件名。因而,经指定文件名的任一对象类型将得到支持并且是经谈判基本类型之一。
尽管特定实现和实施例的细节已如上作了描述,这样的细节旨在满足法律声明义务而不是限制以下权利要求的范围。因而,以上所述的系统和方法由权利要求书进行定义而不受以上所述的特定特征的限制。相反,根据等效法令的适当解释,本系统和方法以所附权利要求书适当范围内的任何形式或者变体进行权利要求的声明。
Claims (28)
1.至少一种具有计算机可执行指令的计算机可读介质,所述指令提供用于跨越远程边界传送计算机可读对象的方法,其特征在于,所述方法包括:
基于已知对象类型的列表把第一类型的对象分解成至少一个子组件的分级结构,每个子组件包括关联于所述已知对象类型的已知对象;
把所述已知对象串行化为串行化包;以及
向远程实体传送所述串行化包。
2.如权利要求1所述的计算机可读介质,其特征在于,所述列表把所述第一类型标识为所述已知对象类型之一。
3.如权利要求1所述的计算机可读介质,其特征在于,至少一个子组件包括具有未在所述列表中标识类型的未知对象。
4.如权利要求3所述的计算机可读介质,其特征在于,分解一对象还包括基于所述列表把所述未知对象分解成另一级别的子组件。
5.如权利要求1所述的计算机可读介质,其特征在于,系统上的第一过程传送所述串行化包,且所述远程实体包括所述系统上的另一过程。
6.如权利要求1所述的计算机可读介质,其特征在于,系统上的第一过程传送所述串行化包,且所述远程实体包括另一系统上的另一过程。
7.如权利要求1所述的计算机可读介质,其特征在于,在过程中执行的第一应用域传送所述串行化包,且所述远程实体包括所述过程中的另一应用域。
8.如权利要求1所述的计算机可读介质,其特征在于,所述分级结构包括属性包。
9.如权利要求8所述的计算机可读介质,其特征在于,所述属性包包括散列表格。
10.如权利要求9所述的计算机可读介质,其特征在于,所述散列表格中每个条目的关键包括关联于所述条目的所述子组件的名字。
11.如权利要求8所述的计算机可读介质,其特征在于,所述属性包包括多个条目,每个条目与所述子组件之一相关联,且具有用于存储关联于所述子组件的名字的第一域、用于存储关联于所述子组件的值的第二域、以及用于存储关联于所述子组件的类型的第三域。
12.如权利要求1所述的计算机可读介质,其特征在于,还包括通过接收第一过程可用的第一列表的版本号、把所述版本号与所述远程实体可用的第二列表的另一版本号进行比较、并基于所述比较确定所述列表商定列表中标识的已知对象类型。
13.如权利要求1所述的计算机可读介质,其特征在于,还包括通过接受接收自第一过程的多个对象类型来谈判所述列表,所述被接收的对象类型变成来自所述列表中标识的已知对象类型。
14.如权利要求1所述的计算机可读介质,其特征在于,还包括通过接收文件的标识符并使列表包括在所述文件中标识的对象类型来谈判所述列表。
15.如权利要求1所述的计算机可读介质,其特征在于,还包括通过指定所述分级结构的预定深度来限制子组件的所述分级结构,其中分解所述对象包括把所述对象分解到所述预定深度。
16.如权利要求1所述的计算机可读介质,其特征在于,还包括通过定义标识所所述对象的各单个属性的属性组来限制子组件的所述分级结构,其中分解所述对象包括分解所述对象的所述经标识的各单个属性。
17.如权利要求1所述的计算机可读介质,其特征在于,还包括通过标识所述对象中的指定属性来限制子组件的所述分级结构,其中分解所述对象包括分解所述指定属性。
18.如权利要求1所述的计算机可读介质,其特征在于,还包括通过指定限制所述已知对象的预定数量来限制子组件的所述分级结构,其中所述已知对象按所述数量被串行化成所述串行化包。
19.至少一种具有计算机可执行指令的计算机可读介质,所述指令提供用于接收代表跨越远程边界传送的计算机可读对象的包的方法,其特征在于,所述方法包括:
从远程实体接收串行化包;
标识子组件的分级结构,所述分级结构表示第一类型的对象;
对于每个子组件:
标识关联于所述子组件的类型;
如果所述类型在已知对象类型的列表中标识,例示所述类型的对象并用
获自所述串行化包的信息来填充所述对象的至少一个属性。
20.如权利要求19所述的计算机可读介质,其特征在于,所述列表包括作为所述已知对象类型之一的所述第一类型。
21.如权利要求19所述的计算机可读介质,其特征在于,至少一个子组件包括具有未在所述列表中标识类型的未知对象。
22.如权利要求19所述的计算机可读介质,其特征在于,系统上的第一过程接收所述串行化包,且所述远程实体包括所述系统上的另一过程。
23.如权利要求19所述的计算机可读介质,其特征在于,系统上的第一过程接收所述串行化包,且所述远程实体包括另一系统上的另一过程。
24.如权利要求19所述的计算机可读介质,其特征在于,在过程中执行的第一应用域传送所述串行化包,且所述远程实体包括所述过程中的另一应用域。
25.如权利要求19所述的计算机可读介质,其特征在于,所述串行化包包括XML文档。
26.一种跨越远程边界传送对象的系统,其特征在于,包括:
一处理器;
一存储器,所述存储器被分配给多个载入所述存储器由所述处理器执行的计算机可执行指令,所述计算机可执行指令提供用于跨越所述远程边界传送对象的方法,所述方法包括:
基于已知对象类型列表把第一类型的对象分解成至少一个子组件的分级结构,每个子组件包括关联于所述已知对象类型的已知对象;
把所述已知对象串行化为串行化包;以及
向远程实体传送所述串行化包。
27.如权利要求26所述的系统,其特征在于,系统上的第一过程传送所述串行化包,且所述远程实体包括所述系统上的另一过程。
28.如权利要求26所述的系统,其特征在于,还包括:
从所述远程实体接收所述串行化包;
标识子组件的所述分级结构,所述分级结构表示第一类型的对象;
对于每个标识的子组件:
标识关联于所述子组件的类型;
如果所述类型在已知对象类型的列表中标识,则例示所述类型的对象并
用获自所述串行化包的信息来填充所述对象的至少一个属性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/759,737 | 2004-01-16 | ||
US10/759,737 US7770181B2 (en) | 2004-01-16 | 2004-01-16 | System and method for transferring computer-readable objects across a remote boundary |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101137959A true CN101137959A (zh) | 2008-03-05 |
Family
ID=34807520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800012499A Pending CN101137959A (zh) | 2004-01-16 | 2004-07-23 | 用于跨越远程边界传送计算机可读对象的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7770181B2 (zh) |
EP (1) | EP1631888A4 (zh) |
JP (2) | JP5346154B2 (zh) |
KR (1) | KR101098603B1 (zh) |
CN (1) | CN101137959A (zh) |
WO (1) | WO2005074409A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661391B (zh) * | 2009-09-24 | 2013-08-28 | 金蝶软件(中国)有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7698383B2 (en) * | 2004-02-27 | 2010-04-13 | Research In Motion Limited | System and method for building component applications using metadata defined mapping between message and data domains |
US7933986B2 (en) * | 2006-02-16 | 2011-04-26 | Microsoft Corporation | Transferring command-lines as a message |
US7933964B2 (en) * | 2006-02-16 | 2011-04-26 | Microsoft Corporation | Shell sessions |
CN101398831B (zh) * | 2007-09-27 | 2013-08-21 | 日电(中国)有限公司 | 本体数据导入/导出方法及装置 |
US8626720B2 (en) * | 2008-02-11 | 2014-01-07 | International Business Machines Corporation | System and method of reconstructing complex custom objects |
US9384054B2 (en) | 2010-09-22 | 2016-07-05 | Nokia Technologies Oy | Process allocation to applications executing on a mobile device |
US8527609B2 (en) * | 2010-11-04 | 2013-09-03 | Microsoft Corporation | Serializing document editing commands |
US9339691B2 (en) | 2012-01-05 | 2016-05-17 | Icon Health & Fitness, Inc. | System and method for controlling an exercise device |
EP2969058B1 (en) | 2013-03-14 | 2020-05-13 | Icon Health & Fitness, Inc. | Strength training apparatus with flywheel and related methods |
US9400826B2 (en) * | 2013-06-25 | 2016-07-26 | Outside Intelligence, Inc. | Method and system for aggregate content modeling |
EP3974036A1 (en) | 2013-12-26 | 2022-03-30 | iFIT Inc. | Magnetic resistance mechanism in a cable machine |
WO2015138339A1 (en) | 2014-03-10 | 2015-09-17 | Icon Health & Fitness, Inc. | Pressure sensor to quantify work |
JP2015215653A (ja) * | 2014-05-08 | 2015-12-03 | コニカミノルタ株式会社 | プリンタドライバ及びプリンタドライバの禁則処理制御方法 |
WO2015191445A1 (en) | 2014-06-09 | 2015-12-17 | Icon Health & Fitness, Inc. | Cable system incorporated into a treadmill |
WO2015195965A1 (en) | 2014-06-20 | 2015-12-23 | Icon Health & Fitness, Inc. | Post workout massage device |
US9542298B2 (en) | 2014-07-08 | 2017-01-10 | International Business Machines Corporation | Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization |
US10391361B2 (en) | 2015-02-27 | 2019-08-27 | Icon Health & Fitness, Inc. | Simulating real-world terrain on an exercise device |
US10625137B2 (en) | 2016-03-18 | 2020-04-21 | Icon Health & Fitness, Inc. | Coordinated displays in an exercise device |
US10493349B2 (en) | 2016-03-18 | 2019-12-03 | Icon Health & Fitness, Inc. | Display on exercise device |
US10272317B2 (en) | 2016-03-18 | 2019-04-30 | Icon Health & Fitness, Inc. | Lighted pace feature in a treadmill |
WO2018039792A1 (en) | 2016-08-31 | 2018-03-08 | Wedge Networks Inc. | Apparatus and methods for network-based line-rate detection of unknown malware |
US10671705B2 (en) | 2016-09-28 | 2020-06-02 | Icon Health & Fitness, Inc. | Customizing recipe recommendations |
US11533292B2 (en) * | 2020-01-07 | 2022-12-20 | Palantir Technologies Inc. | Automated syncing of data between security domains |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69031295T2 (de) * | 1989-06-19 | 1998-04-02 | Digital Equipment Corp | Anordnung zur Integration von Anwendungsprogrammen in einem digitalen Datenverarbeitungssystem |
US5680548A (en) | 1994-12-02 | 1997-10-21 | Xcellenet, Inc. | Systems and methods for work assignment and distribution from a server to remote/mobile nodes |
US6808472B1 (en) | 1995-12-14 | 2004-10-26 | Paul L. Hickman | Method and apparatus for remote interactive exercise and health equipment |
US5946463A (en) * | 1996-07-22 | 1999-08-31 | International Business Machines Corporation | Method and system for automatically performing an operation on multiple computer systems within a cluster |
US5923756A (en) * | 1997-02-12 | 1999-07-13 | Gte Laboratories Incorporated | Method for providing secure remote command execution over an insecure computer network |
US6477701B1 (en) * | 1999-09-30 | 2002-11-05 | Seiko Epson Corporation | Version-adaptive serialization and deserialization of program objects in an object-oriented environment |
US6675193B1 (en) | 1999-10-29 | 2004-01-06 | Invensys Software Systems | Method and system for remote control of a local system |
US7140025B1 (en) * | 1999-11-16 | 2006-11-21 | Mci, Llc | Method and apparatus for providing a real-time message routing communications manager |
GB2357226B (en) | 1999-12-08 | 2003-07-16 | Hewlett Packard Co | Security protocol |
US7039724B1 (en) * | 2000-03-09 | 2006-05-02 | Nortel Networks Limited | Programmable command-line interface API for managing operation of a network device |
EP1380941A2 (en) * | 2000-05-09 | 2004-01-14 | Sun Microsystems, Inc. | Tranformation of objects between a computer programming language and data representation language |
US20020019844A1 (en) * | 2000-07-06 | 2002-02-14 | Kurowski Scott J. | Method and system for network-distributed computing |
US7027975B1 (en) | 2000-08-08 | 2006-04-11 | Object Services And Consulting, Inc. | Guided natural language interface system and method |
US6686932B2 (en) * | 2001-03-28 | 2004-02-03 | International Business Machines Corporation | System and method for sharing data across frames using environment variables |
US20030177187A1 (en) * | 2000-11-27 | 2003-09-18 | Butterfly.Net. Inc. | Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications |
US7103656B2 (en) * | 2001-02-20 | 2006-09-05 | Research In Motion Limited | System and method for administrating a wireless communication network |
US7036127B2 (en) * | 2001-10-11 | 2006-04-25 | International Business Machines Corporation | Legacy CORBA name space integration using web application servers |
EP1347394B1 (en) * | 2002-03-21 | 2011-07-13 | CoreMedia AG | Schema-oriented content management system |
US7159224B2 (en) * | 2002-04-09 | 2007-01-02 | Sun Microsystems, Inc. | Method, system, and articles of manufacture for providing a servlet container based web service endpoint |
US7246358B2 (en) * | 2002-04-09 | 2007-07-17 | Sun Microsystems, Inc. | Methods, system and articles of manufacture for providing an extensible serialization framework for an XML based RPC computing environment |
US7150004B2 (en) * | 2002-08-21 | 2006-12-12 | International Business Machines Corporation | Programmatically serializing complex objects using self-healing techniques |
US20040078341A1 (en) * | 2002-10-15 | 2004-04-22 | Steichen Terril John | System and method for selling digital information online |
US20040139305A1 (en) * | 2003-01-09 | 2004-07-15 | International Business Machines Corporation | Hardware-enabled instruction tracing |
CA2419311A1 (en) * | 2003-02-20 | 2004-08-20 | Ibm Canada Limited - Ibm Canada Limitee | Mapping between native data type instances |
US20050154978A1 (en) * | 2004-01-09 | 2005-07-14 | International Business Machines Corporation | Programmatic creation and access of XML documents |
US7698359B2 (en) * | 2004-01-16 | 2010-04-13 | Microsoft Corporation | Remote system administration using command line environment |
-
2004
- 2004-01-16 US US10/759,737 patent/US7770181B2/en not_active Expired - Fee Related
- 2004-07-23 EP EP04779140A patent/EP1631888A4/en not_active Withdrawn
- 2004-07-23 CN CNA2004800012499A patent/CN101137959A/zh active Pending
- 2004-07-23 WO PCT/US2004/023935 patent/WO2005074409A2/en not_active Application Discontinuation
- 2004-07-23 JP JP2006549229A patent/JP5346154B2/ja not_active Expired - Fee Related
- 2004-07-23 KR KR1020057009452A patent/KR101098603B1/ko not_active IP Right Cessation
-
2012
- 2012-04-02 JP JP2012084296A patent/JP2012128888A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661391B (zh) * | 2009-09-24 | 2013-08-28 | 金蝶软件(中国)有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP5346154B2 (ja) | 2013-11-20 |
US7770181B2 (en) | 2010-08-03 |
KR101098603B1 (ko) | 2011-12-23 |
KR20060132433A (ko) | 2006-12-21 |
JP2007518187A (ja) | 2007-07-05 |
WO2005074409A3 (en) | 2007-01-25 |
EP1631888A4 (en) | 2011-08-03 |
WO2005074409A2 (en) | 2005-08-18 |
JP2012128888A (ja) | 2012-07-05 |
US20050172300A1 (en) | 2005-08-04 |
EP1631888A2 (en) | 2006-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jendrock et al. | Java EE 7 Tutorial, The, Volume 1 | |
CN101137959A (zh) | 用于跨越远程边界传送计算机可读对象的系统和方法 | |
US8626803B2 (en) | Method and apparatus for automatically providing network services | |
CN100592256C (zh) | 无缝地比较对象的系统和方法 | |
US7886041B2 (en) | Design time validation of systems | |
US5418957A (en) | Network data dictionary | |
US7818277B2 (en) | Methods and apparatus for business rules authoring and operation employing a customizable vocabulary | |
Marino et al. | Understanding sca (service component architecture) | |
US20030078960A1 (en) | Architecture and process for creating software applications for multiple domains | |
US7346921B2 (en) | Definition of low-level security rules in terms of high-level security concepts | |
US20070288508A1 (en) | Computer software development methods and systems | |
US20020049603A1 (en) | Method and apparatus for a business applications server | |
JP2004280820A (ja) | ビジネスソフトウェアアプリケーションをサポートするフレームワーク | |
CN101091160A (zh) | 管理工具环境 | |
JP2004280821A (ja) | ソフトウェアビジネスプロセスモデル | |
Varanasi et al. | Spring Rest | |
EP1498813A2 (en) | Design time validation of systems | |
Fay | An Architecture for Distributed Applications on the Internet: Overview of Microsoft? s. NET Platform | |
Jendrock et al. | The Java EE 6 tutorial: advanced topics | |
EP1712995B1 (en) | System and method for supporting packaging, publishing and republishing of wireless component applications | |
Srinivasmurthy et al. | Web2exchange: A model-based service transformation and integration environment | |
Wakefield | VB. net Developer’s Guide | |
Mykkänen et al. | Component and Service Technology Families | |
Akbay et al. | Design and implementation of an enterprise information system utilizing a component based three-tier client/server database system | |
Gordon | The. NET and COM Interoperability Handbook |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20080305 |