新四季網

靈活的元數據組合的製作方法

2023-05-11 08:16:01

專利名稱:靈活的元數據組合的製作方法
靈活的元數據組合
背景技術:
計算裝置通常把運行作業系統作為管理計算裝置的硬體和/或軟體資源的一種方式。在一些情況下,作業系統可以提供對這些資源的簡化的編程訪問。例如,作業系統可以包含應用程式接口(API ),用以暴露各種組件。只要應用程式獲知與API相關的是什麼類型,應用程式就可以利用與API不同的程式語言和/或類型系統成功地調用API。例如,API可以包含一個或多個輸入和/或輸出參數。為了調用API,程式設計師不僅決定API的參數,而且決定與這些參數相關的是什麼數據類型。如上所述,可以用不同於調用程式語言類型系統的類型系統來描述API。為了連接不同的類型系統,程式設計師通常編寫包裝代碼,用以在各類型系統之間進行轉化。讓程式設計師將API訪問包含於程序中的一個方法是通過一個或多個文件和/或命名空間將API定義包含到原始碼中。為了成功地將文件和/或命名空間結合到原始碼,原始碼可以被配置成包含對文件/命名空間的特定位置的引用(例如,硬編碼的路徑、利用該路徑訪問註冊表項等)。如果該位置、文件名稱、和/或命名空間名稱發生變化,則連結被中斷,直到用適當的修改對代碼和/或軟體工具進行更新。

發明內容
提供這個發明內容部分來以簡化的形式介紹下面在具體實施方式
中進一步描述的概念的選擇。這個發明內容並不旨在識別所請求保護的主題的關鍵特徵或基本特徵,也不旨在用於限制所請求保護的主題的範圍。。各種實施例提供了在多個類型系統之間對類型解析進行抽象的能力。可以在一個或多個可編程訪問文件中對至少一個類型進行描述。在一些實施例中,在不了解類型描述的所在位置的情況下,使用不同類型系統的應用程式可以可編程地訪問並解析該類型系統的類型。可替代的或附加的,至少部分基於類型系統描述,可以對一個或多個可編程訪問文件中所包含的類型描述進行分析並重新構成一個或多個新的可編程訪問文件。


在所有附圖中使用相同的數字來標記相同的特徵。圖1a示出了根據一個或多個實施例的、在其中可以應用本文中所描述的各種原理的操作環境。圖1b示出了根據一個或多個實施例的、在其中可以應用本文中所描述的各種原理的操作環境。圖2示出了根據一個或多個實施例的體系結構。圖3示出了根據一個或多個實施例的流程圖。圖4示出了根據一個或多個實施例的關係圖。圖5示出了根據一個或多個實施例的流程圖。圖6示出了可以用以實施一個或多個實施例的示例性系統。
具體實施例方式概述
各種實施例提供了在多個類型系統之間對類型解析進行抽象的能力。使用一個類型系統的應用程式可以調用到第二個類型系統,只要該應用程式已了解如何在各類型系統之間連接。例如,類型系統的特徵(例如數據類型、數據類型的行為、函數調用參數、事件等)可以在一個或多個可編程訪問文件中描述。應用程式可以訪問文件並且解析不同的類型系統。在一些實施例中,可以對類型解析進行抽象,使得在事先不了解訪問哪個文件和/或文件所在位置的情況下,應用程式可以訪問描述。在接下來的論述中,提供了標題為「操作環境」的章節並且描述了多個環境,在其中可以實施一個或多個實施例。在此之後,標題為「類型解析結構」的章節描述了可以進行可編程類型系統解析的體系結構。接下來,標題為「類型描述存儲」的段落描述了可以用於實現類型描述的靈活存儲的各種方法。最後,標題為「示例系統」的章節描述了一個可以用於實施一個或多個實施例的示例系統。前面已提供了對下文將要描述的各種實施例的概述,現在考慮示例操作環境,在其中可以實施一個或多個實施例。操作環境
圖1a和圖1b示出了根據一個或多個實施例的操作環境,通常在IOOa和IOOb顯示。圖1a示出了參照一個或多個元數據文件的生成而可以利用的示例操作環境,如下所述。圖1a的操作環境可以認為是「構建時」環境。圖1b示出了參考靈活類型系統解析而可以利用的示例操作環境。圖1b的操作環境可以看作是運行時環境。在一些實施例中,操作環境IOOa和IOOb具有至少一些類似的組件。因此,為簡潔起見,圖1a和圖1b將被一起描述。與圖1a相關的類似的組件將被標識為具有「 lXXa」的命名約定的組件,而與圖1b相關的組件將被標識為具有「lXXb」的命名約定的組件。類似地,特定於操作環境的組件將簡單地被標識為 「1XX」。環境IOOa和IOOb分別包括具有一個或多個處理器104a、104b,以及一個或多個計算機可讀存儲介質106a、106b的計算裝置102a、102b。通過示例而非限制,計算機可讀存儲介質可以包括與計算裝置典型地相關的所有形式的易失性及非易失性存儲器和/或存儲介質。此類介質可以包括R0M、RAM、閃速存儲器、硬碟、可移動介質等。下面在圖6中顯示並描述了計算裝置的一個具體示例。另外,計算裝置102a、102b包含一個或多個作業系統(OS) 108a、108b以及一個或多個應用程式110a、I IOb。作業系統108a、108b代表用於管理計算裝置102a、102b的一個或多個軟體和/或硬體資源的功能。這可以包括內存管理、文件管理、服務、功能、資源管理、外圍設備管理等。一個或多個應用程式110a、I IOb代表被配置來在計算裝置102a、102b中,通常在一個或多個作業系統108a、108b的協助下執行的軟體。一個或多個應用程式110a、IlOb可以在與一個或多個作業系統108a、108b相同和/或不同的類型系統中執行,如下面進一步的描述。計算裝置102a、102b也包括一個或多個軟體接口 112a、112b,這些軟體接口代表對由軟體和/或一個或多個應用程式所提供函數、服務、數據等的編程訪問。一個或多個軟體接口 112a、112b可以實現對一個或多個作業系統108a、108b和/或一個或多個應用程式IlOaUlOb的編程訪問。例如,一個或多個應用程式110a、IlOb可以通過調用一個或多個軟體接口 112a、112b來訪問由一個或多個作業系統108a、108b所提供的功能。在一些實施例中,使用不同於軟體接口的類型系統的類型系統的一個或多個應用程式112a、112可以可編程地解析類型差異,如下面進一步的描述。另外,計算裝置102a、102b還包含一個或多個元數據文件114a、114b,這些元數據文件代表一個或多個機器可讀文件,該機器可讀文件包含與一個或多個軟體接口 112a、112b,一個或多個作業系統108a、108b,和/或一個或多個應用程式110a、IIOb相關的信息,諸如輸入參數類型、參數調用順序、接口之間的關係等。可替代的或附加的,一個或多個軟體接口可以與連接到計算裝置102a、102b的外圍設備(諸如印表機、掃描儀、智慧型手機等)相關。在一些實施例中,一個或多個元數據文件114a、114b可以被配置成以任何合適的方式來描述一個或多個接口,如下面進一步的描述。計算裝置102a還包括一個或多個合併模塊116。一個或多個合併模塊116代表可以閱讀一個或多個元數據文件、對文件內容進行分析、以及輸出一個或多個包含重新構成的內容的新元數據文件的內容的功能。在一些實施例中,可以至少部分地基於類型描述對內容進行重新組織。計算裝置102b包括一個或多個類型解析模塊118。一個或多個類型解析模塊118代表配置來接收訪問相關的類型數據的請求的功能,並且定位類型解析信息。在一些實施例中,一個或多個類型解析模塊118可以在無用戶輸入的情況下,且獨立於信息變化位置而定位類型解析信息。例如,當信息已從第一文件移動到第二文件時,一個或多個類型解析模塊118可以在無用戶輸入的情況下定位接口描述信息,如下面進一步的描述。計算裝置102a、102b可以體現為任何合適的計算裝置,通過示例而非限制,諸如臺式計算機、可攜式計算機、筆記本計算機、手持式計算機(例如個人數碼助理(PDA))、行動電話等。上面已說明了示例操作環境,現在考慮對配置來實現獨立於位置文件名稱和/或位置的類型解析的類型解析結構加以論述。類型解析結構
隨著程式語言的技術進步,其能力也在進步。例如,用第一程式語言編寫的應用程式可以調用到用第二程式語言編寫的軟體。本質上,程式語言具有不同的類型系統。因此,為了成功地調用位於不同的類型系統中的軟體,第一程式語言利用多種技術來解析不同的類型。例如,程式設計師可以手動編寫用於在各類型之間轉換的包裝代碼。可替代地,類型系統定義可以保存在文件中,並且可以進行可編程訪問。以編程方式訪問一個包含類型定義的文件使應用程式能夠確定運行時的能力和描述。然而,訪問文件意味著不僅了解訪問哪個文件,而且了解文件的位置。如果文件的內容改變和/或文件的位置改變,訪問該文件的應用程式有可能會失敗,除非適當地更新。這有時會在一個或多個應用程式與一個或多個文件之間形成非故意的耦合。各種實施例提供了在多個類型系統之間對類型解析進行抽象的能力。與類型解析相關的信息可以保存在可編程訪問的文件中。在一些實施例中,採用一個類型系統的應用程式可以通過訪問該文件而動態地解析第二類型系統。可替代地或附加的,應用程式可以在不了解訪問哪個/哪些文件和/或該一個或多個文件所在位置的情況下訪問該文件。考慮圖2,該圖示出了根據一個或多個實施例的示例體系結構200。體系結構200包含可以配置成在計算裝置上執行的作業系統202。應當理解的是,為了簡潔起見,圖中未示出作業系統202的全部。作業系統202包括一個或多個作業系統組件204,作業系統組件204被配置來管理與計算裝置相關的資源。在一些實施例中,一個或多個作業系統組件204可以提供對這些資源的編程訪問、以及與管理這些資源相關的一個或多個服務和/或一個或多個特徵。一個或多個作業系統組件204還可以包括與作業系統202相關的基本元素、以及從基本元素構建的複雜元素。雖然此示例示出了暴露由作業系統202所提供功能的體系結構,但應當領會和理解的是在不背離請所要求保護的主題的精神的前提下,所述體系結構可以被應用於暴露由其它合適類型的應用程式所提供的功能。在一些實施例中,可以經由一個或多個接口(在這裡圖示為一個或多個作業系統接口 206)暴露一個或多個作業系統組件204。這可以是任何適當形式的接口,諸如應用程式接口(API)。應用程式可以通過調用和/或執行一個或多個作業系統接口 206以訪問由一個或多個作業系統組件204所提供的功能,如下面進一步的描述。在一些情況下,應用程式利用不同於用於描述一個或多個作業系統接口 206的類型系統的類型系統。在一些情況下,一個或多個作業系統接口 206可以包括一個或多個應用程式二進位接口(ABI)。ABI以機器級描述用於調用功能、方法、API等的二進位合同(binary contract)。二進位合同可以包括與功能相關的標識或名稱、可以用於調用函數的籤名、傳遞給與參數相關的函數和/或數據類型的參數順序,等。可替代地或附加地,二進位合同可以包括用於暴露與類型系統中的至少一種類型相關的行為的定義和/或規則。作業系統202還包含各種元數據208。元數據208可以包括類型解析信息,類型解析信息描述相關的一個或多個作業系統接口 206的各種方面,諸如版本信息、什麼方法是可用的、一個或多個接口採用什麼參數、參數的數據類型、傳遞參數的順序、數據類型行為和/或解析信息等。在一些實施例中,元數據可以包括與接口相關的層次信息,諸如描述一個或多個接口之間的關係的信息和/或以面向對象的方式描述該一個或多個接口的信息。元數據還可以包括類描述、類的相關的方法和參數等。在一些情況下,元數據可以對使用抽象類型系統(例如獨立於特定程式語言的類型系統)的接口進行描述。可替代地或附加地,元數據可以包含對特定類型系統(諸如該抽象類型系統)的描述。一個或多個特定的程式語言轉而可以把特定的類型系統(例如該抽象類型系統)的描述映射到該一個或多個特定的程式語言中。此外,想要確定哪些接口是可用的程式設計師可以手動地和/或可編程地訪問每個接口的描述。例如,為了確定一個或多個作業系統組件204存在哪些接口、接口在什麼類型系統中被描述、以及如何調用它們,程式設計師可以訪問相關的元數據208。體系結構200還包含一個或多個應用程式210。應用程式210可以包括由一個或多個程式語言(諸如HTML、JavaScript、Visual Basic、C#、C++等)所生成的一個或多個應用程式。在一些實施例中,應用程式210包含一個或多個對作業系統組件的調用。在一些情況下,應用程式210可以配置成首先可編程地確定哪個或哪些接口是可用的,然後調用一個或多個經確定的接口。在一些情況下,一個或多個應用程式210藉助於一個或多個所生成的語言映射模塊(language projection module) 212而訪問一個或多個接口,如下面進一步的描述。
在一個或多個實施例中,生成的一個或多個語言映射模塊212將抽象類型定義映射至特定的程式語言。可以映射任何合適的程式語言,上文給出了其示例。在一些實施例中,生成的語言映射模塊對於每種程式語言可以是唯一的。在其它實施例中,生成的語言映射模塊可以是多用途的並且被多種程式語言所利用。映射實現了在無需額外的程序設計語句(例如包裝功能)的情況下,特定程式語言能夠對使用抽象類型系統所描述的當前和將來的接口訪問。該映射進一步允許特定的程式語言能夠以由特定程式語言產生的方式調用接口。任何合適類型的信息(諸如類、數據類型、函數指針、結構等)可以被映射。一個或多個接口的描述可以用於描述應用程式應該如何調用接口、以及描述與接口相關的類型系統的行為。響應於正在被定位的描述,應用程式可以動態地決定如何調用接口以及解析應用程式與接口之間的類型系統差異。在一些實施例中,使用不同類型系統的應用程式可以在不了解類型描述所在位置的情況下,可編程地訪問並解析由接口所使用的類型。可替代地或附加地,如何對描述進行分組,可以使自動類型解析成為可能,如下面的進一步描述。考慮使用JavaScript編寫應用程式的程式設計師。雖然此示例描述了使用JavaScript的實施例,但應當領會和理解的是在不背離所要求保護的主題的精神的情況下可以使用任何程式語言。為了訪問外部功能,程式設計師可以在原始碼中包含被配置來識別與該功能相關的命名空間和 /或類型的語句。例如,在原始碼中可以包含和/或描述外部類型,如下
OperatingSystem. Foo. Bar. Typel
在這個具體示例中,Typel代表正在被訪問的功能。這可以是任何合適類型的功能,在上文和下文中給出了其例子。上述語法代表可遍歷地定位Typel的多級別命名空間層次。在最高級別中,Typel位於識別為「作業系統」的命名空間中。在「作業系統」內存在識別為「Foo」的命名空間。類似地,在「Foo」內存在識別為「Bar」的命名空間,Typel存在其中。因此,語法可以用於識別Typel的邏輯位置。然而,Typel的物理位置(例如,Typel信息存在於什麼文件中和/或文件存在於什麼目錄中)有時可以變化。過去,可以通過對應用程式內的路徑和文件名進行硬編碼以確定物理位置(直接地或間接地)。因此,如果改變Typel信息的文件名和/或路徑,那麼對應用程式所使用的文件名稱和/或路徑的任何直接或間接引用將會是錯誤的,直到被更新。此外,應用程式有可能不能正常運行,直到直接或間接的引用被更新。各種實施例提供對類型解析進行抽象的能力。例如,可以在不確切了解相關類型解析信息位置的情況下,由應用程式對類型進行可編程解析。在一些實施例中,可以在不更新應用程式的情況下,利用具有新位置信息的解析信息對類型解析信息進行重新定位。應用程式可以配置為對類型解析信息進行定位而不管該類型解析信息存在於哪個文件中。考慮圖3,其示出了根據一個或多個實施例的、描述方法中的步驟的流程圖。所述方法可以由任何合適的硬體、軟體、固件、或其組合執行。至少在一些實施例中,所述方法的各方面可以由在一個或多個計算裝置中執行的一個或多個適當配置的軟體模塊來實施,如圖1b的一個或多個類型解析模塊118。在一些實施例中,所述方法可以在無用戶介入的情況下執行。步驟302搜索具有與正在被解析的類型相匹配的文件名的文件。這可以包括搜索多個元數據文件,如上所述。參考上述語法說明,響應於應用程式訪問OperatingSystem.Foo. Bar. Typel,步驟 302 搜索具有名稱「OperatingSystem. Foo. Bar. Typel」的文件。任何合適類型的搜索可以被執行。例如,搜索可以被配置來尋找類型與文件名之間的精確匹配、類型與文件名之間的部分匹配等。可替代地或附加地,搜索可以被配置來在一個目錄、多個目錄和/或子目錄、或者其任意組合中進行搜索。步驟304確定該文件是否存在。響應於確定文件存在,步驟306發送表明該類型是命名空間的信息。響應於確定文件不存在,步驟308搜索和與正在被解析的類型相關的命名空間相匹配的文件名。在一些情況下,這可以包括操作字符串,該字符串包含用於確定在什麼命名空間中進行搜索的命名空間層次。在上述示例中,Typel被圖示為定位於命名空間層次中的向下的三個級別。字符串可以被操作以去除類型(例如Typel)並留下命名空間。這裡,步驟308將會搜索與命名空間層次「OperatingSystem. Foo. Bar」相關的名稱。與上述相類似,此搜索可以被配置來搜索精確匹配、部分匹配、在一個目錄中的搜索、在子目錄中搜索等。步驟310確定與該文件名相關的文件是否存在。響應於確定文件存在,步驟312通過對該文件進行處理以獲得與該類型相關的信息。步驟314確定與類型相關的信息是否位於文件內。響應於確定與類型相關的信息是在文件內,步驟316返回該信息。例如,可以把該信息返回至調用程序。然而,響應於確定與該類型相關的信息不在文件內,則過程前進至步驟318。步驟318搜索和較高級別的命名空間相匹配的文件名。這可以是響應於確定文件不存在,例如響應於步驟310,或者響應於在文件內未定位到與類型相關的信息,例如響應於步驟314。可以以任何合適的方式來確定較高級別的命名空間。例如,在上述示例中,字符串可以被進一步操作來反映命名空間層次中的上一個級別(例如「OperatingSystem.Foo」)。步驟318確定較高級別的命名空間並且搜索具有相關名稱的文件。步驟320確定與該文件名相關的文件是否存在。正如在步驟310的情況下,如果確定文件存在,過程前進至步驟312、314和/或316,其中對文件進行處理以獲知相關的類型信息。響應於確定該文件不存在,步驟322確定是否存在另一命名空間層次級別。這可以以任意合適的方式來確定。例如,可以對字符串進行搜索以獲得級別分隔符(levelseparator)0在上述實例中,「.」的語法在命名空間層次的級別之間區分。響應於確定另一命名空間層次級別存在,則過程重複,並且過程返回到步驟318以在新確定的命名空間內搜索文件。步驟318、320和322自身重複,直到找到適當文件或者已到達並搜索到命名空間層次的頂部。響應於確定另一命名空間層次級別不存在,步驟324返回錯誤。這可以包括拋出異常,顯示彈出對話框等。通過上述方法的使用,可以對多個文件和/或位置進行搜索以獲得類型解析信息。如圖所示,類型搜索可以至少部分地基於層次命名空間信息。圖3描述了類型搜索,該類型搜索開始於較低的命名空間層次級別(例如「OperatingSystem. Foo. Bar. Typel」)並且向上穿過每個命名空間級別,直到該類型被定位或者到達命名空間層次級別的頂部(例如「OperatingSystem」)。然而,可以按任意合適的順序來執行此搜索。在一些實施例中,類型搜索可以開始於較高的命名空間層次級別(例如「OperatingSystem」)並且向下穿過每個命名空間級別,直到該類型被定位或者到達命名空間層次級別的底部(例如「OperatingSystem. Foo. Bar. Typel」)。在命名空間層次中搜索可以對類型解析信息可以存在的位置進行抽象,並且還可以在不影響訪問類型解析信息的應用程式的情況下,進一步使類型解析信息能夠改變位置。上面已說明了被配置來實現獨立於位置文件名稱和/或位置的類型解析的類型解析體系結構,現在對根據一個或多個實施例的靈活的類型描述存儲進行論述。類型描述存儲
元數據文件可以用於描述軟體接口的各種方面。如上所述,元數據文件可以包括從類層次、抽象類型系統、相關方法、屬性和事件等方面來描述接口的信息。在一些情況下,相關信息可以存在於多個文件中。例如,不同的元數據文件可以包括從屬於相同命名空間的信息。雖然多個元數據文件可以給元數據文件的開發人員提供靈活性,但有時當進行搜索時卻會阻礙元數據文件的用戶。考慮這樣一個例子,其中每個命名空間具有其自己的相關元數據文件。從劃分的觀點來看,各命名空間的單獨文件可以將命名空間的改變與相關文件隔離開。然而,從搜索的觀點來看,當在運行時進行搜索時,必須在多個文件中搜索信息會降低性能。此外,從獲知的觀點來看,隨著文件數量增加,跟蹤什麼信息在什麼文件中會被複雜化(compound )。各種實施例允許在不事先了解文件名稱和類型解析信息所存在的文件位置的情況下進行類型解析。至少部分地基於組合規則,可以對一組輸入文件的內容進行分析和劃分。可以產生一組輸出文件,並且將輸出文件配置成包含經劃分的內容。輸出文件允許在不事先了解該內容所存在的位置的情況下定位該內容。作為示例,考慮圖4,圖中示出了一個或多個實施例的描述語言文件、元數據文件、及合併模塊之間的關係。在至少一些實施例中,關係圖中所示出的模塊可以作為軟體、硬體或者其任意組合而實施,例如圖1a的一個或多個合併模塊116。在圖示和描述的實施例中,Foo.1dl 402代表了被配置來描述一個或多個接口的描述語言文件。在一些實施例中,接口可以與作業系統和/或應用程式(諸如圖1的作業系統接口 108和/或應用程式110)相關。描述語言文件可以利用任何合適的描述、置標語言、和/或語法(諸如,利用接口定義語言(IDL)、可擴展標記語言(XML)等)來描述接口。在此具體示例中,Foo.1dl代表IDL文件。Foo.1dl 402 包括三種類型的描述Type Foo. Bar. Typel 404、Type Foo. Bar.Type2 406、和Type Foo. Bar. Type3 408。雖然用三個條目進行了說明,但應領會和理解的是在不背離所要求保護的主題的精神的情況下任何合適數量的描述、以及各類型的描述都可以包含在Foo.1dl 402中。例如,類型可以包括類、接口、方法、性質、事件等的描述。在此示例中,類型404、406和406被描述成包含在「Foo. Bar」的層次命名空間中。圖4還不出了第二描述語言文件,Bar.1dl 410。類似於Foo.1dl 402, Bar.1dl410代表描述語言文件,該描述語言文件包括三種類型Type Foo. Bar. Type4 412、TypeFoo. Quux. Typel 414、和 Type Foo. Quux. Type2 416。參照 Type412、414和 416 的語法,Bar.1dl 410在命名空間「Foo. Bar」中包含至少一個類型,在命名空間「Foo. Quux」中包含至少兩個類型。Foo. metadata 418代表至少部分地基於Foo.1dl 402的機器可讀的元數據文件。雖然未示出,但在一些實施例中,可以由編譯器從Foo.1dl 402中生成Foo. metadata 418。類似於Foo.1dl 402, Foo. metadata 418包括對採用由元數據文件產生的格式的類型Foo.Bar. Typel420>Foo. Bar. Type2 422、和 Foo. Bar. Type3 424 的描述。Bar. metadata 426 還代表機器可讀元數據文件,該機器可讀元數據文件至少部分地基於Bar.1dl 410。如Foo.metadata 418 的情況中,Bar. metadata 426 包括類型描述 Foo. Bar. Type4 428、Foo. Quux.Typel 430、和 Foo. Quux. Type3 432。圖4中包含的是合併模塊434。合併模塊434可以接收一個或多個輸入文件,並且轉而基於一組標準和/或規則生成一個或多個輸出文件。例如,可以把輸入命令和/或規則應用於合併模塊434,合併模塊434指定一個輸入目錄以在其中搜索輸入的文件、一個輸出目錄以在其中放置輸出文件、應用的驗證級別、在什麼級別的命名空間層次進行合併和/或劃分、如何命名輸出文件、生成輸出文件的數量、應生成什麼深度的元數據文件等。可以以任何合適的方式(諸如通過命令行和/或包含一個或多個規則的「生成文件」)向合併模塊434提供標準和/或規則。在此不例中,Foo. metadata 418和Bar. metadata 426是合併模塊434的輸入。合併模塊434解析輸入文件,並且按照指令生成一個或多個輸出文件。這裡,合併模塊434生成兩個輸出文件Foo. Bar. metadata 436 和 Foo. Quux. metadata 438。Foo. Bar. metadata436 包括從屬於 「Foo. Bar」 命名空間(例如 Foo. Bar. Typel 440、Foo. Bar. Type2 442、Foo.Bar. Type3 444 和 Foo. Bar. Type446)的類型。類似地,Foo. Quux. metadata 438 包括從屬於「Foo. Quux」 命名空間(例如,Foo. Quux. Typel 448>Foo. Quux. Type2 450)的類型。正如在上述情況下的,Foo. Bar. metadata 436和Foo. Quux. metadata 438代表機器可讀兀數據文件,該機器可讀元數據文件可能包含來自相關輸入文件的經重新組織和/或經重新分組的數據。因此,合併模塊434可以根據一組標準來分析來自多個文件的內容並重新構成該內容。在一些實施例中,文件命名約定可以被利用來實現抽象類型解析。例如,命名空間層次可以用作命名約定。在圖4中,文件Foo. Bar. metadata 436和Foo. Quux. metadata438在它們的文件名稱(例如分別「Foo. Bar」和「Foo. Quux」)中包括相關的命名空間層次。通過採用此命名約定,可以基於其相關的命名空間而不是特定的文件名來搜索類型信息。可替代地或附加地,輸出文件可以包含多個級別的命名空間層次數據。在圖4中,Foo. Bar.metadata 436被圖不為「Foo. Bar」命名空間中包含的數據。然而,Foo. Bar. metadata 436也可以配置成包含存在於「Foo. Bar.Ζ ^72·Ζ£^73」的命名空間層次級別中的類型信息。因此,命名約定表明可以包含在文件內的最高級別的命名空間。另外,可以利用搜索算法(例如圖3中所描述)來穿過不同級別的層次命名空間(及相關的文件),直到適當的類型被定位。通過使在相同命名空間層次級別中的所有類型信息存在於相同文件中,可以在不影響利用該信息的應用程式的情況下使與特定級別相關的信息在各文件之間移動。可以以任何合適的方式來劃分與命名空間層次相關的信息。例如,多個層次級別可以存在於相同文件(例如Foo. Bar、Foo. Bar. LevelU和Foo. Bar. Leve12,均存在於名為「Foo. Bar. metadada 」的文件中)中,或者每個文件可以具有其自己的相關的文件(例如,處於Foo. Bar級別的信息存在於「Foo. Bar. metadata」中,處於Foo. Bar. Levell的信息存在於「Foo. ^ar. Level1. metadada」文件中等)。如果信息是根據其相關的命名空間層次來放置的,則可以通過去除對特定文件名稱的相關性來對類型解析進行抽象。現在考慮圖5,圖中示出了描述根據一個或多個實施例的方法中的步驟的流程圖。該方法可以由任何合適的硬體、軟體、固件、或者其組合實施。至少在一些實施例中,該方法的各方面可以由在一個或多個計算裝置(如圖1a的合併模塊116)中執行的一個或多個適當配置的軟體模塊實施。步驟502接收與生成一個或多個輸出文件相關的一個或多個輸入標準。在一些實施例中,所述輸入標準可以包括規定如何把信息劃分成一個或多個輸出文件的一個或多個規則。例如,所述輸入標準可以指定一個或多個命名空間層次級別以一起組合到輸出文件中。可替代地或附加地,所述輸入標準可以描述在哪裡找到信息,比如通過規定從哪個文件
和/或目錄中獲得信息。響應於接收所述一個或多個輸入標準,步驟504接收包含與一個或多個軟體接口相關的信息的一個或多個輸入文件。所述信息可以是任何合適類型的信息,比如對使用抽象類型系統的軟體接口的描述、面向對象的聯繫、方法、性質、函數指針、輸入和/或輸出參數、類型系統信息等。在一些實施例中,類型信息可以包括命名空間層次信息。響應於接收一個或多個輸入文件,步驟506至少部分地基於該一個或多個輸入標準對信息進行分析。這可以包括對一個或多個輸入文件進行分析從而確定各文件內存在什麼命名空間層次類型信息。響應於對信息的分析,步驟508生成至少一個包含所述信息的輸出文件。在一些實施例中,所述輸出文件可以包含已被劃分成不同文件的信息,這些文件至少部分地基於該輸入標準。輸出文件可以以任何合適的方式配置,其示例提供如上。例如,一個或多個輸出文件可以被配置成以命名約定來命名的元數據文件,該命名約定基於包含在該元數據文件中的命名空間層次。可替代地或附加地,一個或多個輸出文件可以被配置成包含多個級別的命名空間層次。通過把命名空間層次信息一同分組到輸出文件,應用程式可以基於命名空間層次級別而不是特定的文件名來搜索信息。這使得在不影響應用程式的情況下對信息進行靈活劃分成為可能。只要應用程式了解特定的類型存在於哪個命名空間層次級別中,相關的類型信息就可以被置於輸出文件中,而不管如何對命名空間層次級別進行分組。上面已說明了靈活的類型描述存儲,現在對根據一個或多個實施例的示例系統進行論述。示例系統
圖6示出了可以用於實施上述各種實施例的示例計算裝置600。例如,計算裝置600可以是圖1a和圖1b的計算裝置102a和/或102b或者任何其它合適的計算裝置。計算裝置600包括一個或多個處理器或處理單元602、一個或多個存儲器和/或存儲組件604、一個或多個輸入/輸出(I/O)裝置606、和使各種組件和裝置相互通信的總線608。總線608代表若干類型的總線結構中任一類型的一個或多個,其包括內存總線或內存控制器、外圍總線、圖形加速埠、以及處理器、或者採用多種總線結構中的任何總線結構的局部總線。總線608可以包括有線總線和/或無線總線。存儲器/存儲組件604代表一個或多個計算機硬體存儲介質。組件604可以包括易失性介質(諸如,隨機存取存儲器(RAM))和/或非易失性介質(諸如只讀存儲器(ROM)、閃速存儲器、光碟、磁碟等等)。組件604可以包括固定介質(諸如,RAM、ROM、固定硬碟驅動器等)以及可移動介質(例如,閃速存儲器驅動器、移動硬碟驅動器、光碟等等)。一個或多個輸入/輸出裝置606允許用戶把命令和信息輸入至計算裝置600,並且還允許將信息提供給該用戶和/或其它組件或裝置。輸入裝置的例子包括鍵盤、光標控制裝置(例如,滑鼠)、傳聲器、掃描儀等等。輸出裝置的示例包括顯示裝置(例如,監視器或投影儀)、揚聲器、印表機、網卡,等等。可以在軟體或程序模塊的一般上下文中描述本文各種技術。一般來說,軟體包括執行特定任務或者實施特定抽象數據類型的例行程序、程序、對象、組件、數據結構等等。這些模塊和技術的實施方式可以存儲在某種形式的計算機可讀介質中或者通過其傳輸。計算機可讀介質可以是可以被計算裝置訪問的任何可用的媒介或介質。通過示例而並非限制,計算機可讀介質可以包括「計算機可讀存儲介質」。「計算機可讀存儲介質」包括以用於信息存儲的任何方法或技術實施的易失性和非易失性、可移動和不可移動硬體介質,諸如計算機可讀指令、數據結構、程序模塊、或其它數據。計算機可讀硬體存儲介質包括但不限於RAM、ROM、EEPR0M、閃速存儲器或者其它存儲技術、CD-ROM、數字多用途光碟(DVD)或其它光存儲器、磁帶盒、磁帶、磁碟存儲器或其它磁存儲裝置、或者可以用於存儲期望的信息並且可以被計算機訪問的任何其它介質。結論
各種實施例提供在多個類型系統之間對類型解析進行抽象的能力。至少一個類型可以在一個或多個可編程訪問文件中描述。在一些實施例中,採用不同類型系統的應用程式可以在不了解類型的描述所在位置的情況下可編程地訪問並且解析至少一個類型系統的類型。可替代地或附加地,至少部分地基於所述類型描述,可以對包含於一個或多個可編程訪問文件中的類型描述進行分析並且重新構成一個或多個新的可編程訪問的文件。儘管已以特定於結構特徵和/或方法學操作的語言描述該主題,但要理解的是所附權利要求中所定義的主題不必局限於上述具體特徵或操作。相反,上述具體特徵和操作是以實施權利要求的實例形式而公開的。
權利要求
1.一種計算機實施的方法,包括 在多個文件中搜索(302)與正在被解析的類型相關的第一文件; 響應於確定所述第一文件存在,發送(306)表明所述類型是命名空間的信息; 響應於確定所述第一文件不存在,在所述多個文件中搜索(308)和與所述類型相關的第一命名空間級別層次相匹配的文件名; 響應於確定和與所述類型相關的第一命名空間級別層次相匹配的文件名存在,處理(312)與所述文件名相關的文件以獲得與所述類型相關的信息; 響應於確定和與所述類型相關的所述第一命名空間級別層次相匹配的所述文件名不存在,確定(322)是否存在另一個與所述類型相關的命名空間層次級別;以及 響應於確定另一個命名空間層次級別存在,在所述多個文件中搜索(318)與所述另一個命名空間層次級別相關的文件名。
2.如權利要求1所述的計算機實施的方法,其中,在多個文件中搜索第一文件進一步包括在所述多個文件搜索具有和與所述類型相關的名稱相匹配的文件名的文件。
3.如權利要求2所述的計算機實施的方法,其中,在多個文件中搜索第一文件進一步包括在不了解所述類型所在位置的情況下,搜索所述第一文件。
4.如權利要求1所述的計算機實施的方法,其中,該方法是在無用戶介入的情況下執行。
5.如權利要求1所述的計算機實施的方法,其中,所述多個文件包含元數據文件,其中單獨的元數據文件包含與作業系統軟體接口相關的描述。
6.如權利要求5所述的計算機實施的方法,其中,所述元數據文件被配置成對獨立於特定的程式語言的所述類型的描述。
7.一種計算機實施的方法,包括 在一個或多個元數據文件中搜索具有和與類型系統相關的類型的命名空間相匹配的文件名的文件; 響應於確定所述文件存在,處理所述文件以獲得與所述類型相關的信息; 響應於確定所述文件不存在,執行至少一次 確定是否存在另一個與所述類型相關的命名空間層次級別以及響應於確定另一個命名空間層次級別存在,在所述一個或多個元數據文件中搜索具有和所述另一個命名空間層次級別相匹配的文件名的文件; 所述至少一次的執行響應於如下情況終止 確定具有和所述另一個命名空間層次級別相匹配的文件名的所述文件存在;或者 確定另一個命名空間層次級別不存在。
8.如權利要求7所述的計算機實施的方法,其中,在所述一個或多個元數據文件中搜索具有和所述另一個命名空間層次級別相匹配的文件名的文件包括搜索和所述命名空間層次級別相匹配的部分文件名。
9.如權利要求7所述的計算機實施的方法,其中,與類型系統相關的所述類型包括與作業系統相關的應用程式接口(API)。
10.如權利要求7所述的計算機實施的方法,其中,在所述一個或多個元數據文件中搜索具有和與類型系統相關的類型的命名空間相匹配的文件名的文件進一步包括在不了解所述類型所存在位置的情況下進行搜索。
11.一種或多種其上存儲計算機可執行指令的計算機可讀存儲媒體,所述指令當由計算設備執行時,使得所述計算設備實現如權利要求1 一 10中的任一個所述的方法。
全文摘要
各種實施例提供了在多個類型系統之間對類型解析進行抽象的能力。至少一種類型可以在一個或多個可編程訪問文件中描述。在一些實施例中,使用不同類型系統的應用程式可以在不了解類型的描述所在位置的情況下,可編程地訪問並解析至少一個類型系統的類型。可替代地或附加地,至少部分地基於所述類型描述,可以對包含在一個或多個可編程訪問文件中的類型描述進行分析,並且將其重新構成一個或多個新的可編程訪問文件。
文檔編號G06F9/45GK103049299SQ20121033165
公開日2013年4月17日 申請日期2012年9月10日 優先權日2011年9月10日
發明者L.W.奧斯特曼, H.L.皮爾森, E.H.奧米亞, M.S.洛弗爾, M.普拉克裡亞, S.C.羅維, T.H.巴蘇, R.A.弗羅達茨克, 曾煒, N.N.沃瓦, S.I.索爾卡, M.阿克西安金 申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀