TWI577539B - 用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統 - Google Patents

用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統 Download PDF

Info

Publication number
TWI577539B
TWI577539B TW104140190A TW104140190A TWI577539B TW I577539 B TWI577539 B TW I577539B TW 104140190 A TW104140190 A TW 104140190A TW 104140190 A TW104140190 A TW 104140190A TW I577539 B TWI577539 B TW I577539B
Authority
TW
Taiwan
Prior art keywords
interface
type
computer
abstract
language
Prior art date
Application number
TW104140190A
Other languages
English (en)
Other versions
TW201609366A (zh
Inventor
瑞科特布倫特E
歐米亞艾略特H
多尼奈茲傑瑞J
拉維爾馬丁S
侯列可艾列斯
派克歷亞馬赫什
羅威史蒂芬C
斯普林菲爾德詹姆斯F
克洛斯諾爾R
巴蜀塔沙杜H
都薩德派翠克H
克里斯納斯瓦米拉嘉
路可史蒂芬愛德華
Original Assignee
微軟技術授權有限責任公司
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 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201609366A publication Critical patent/TW201609366A/zh
Application granted granted Critical
Publication of TWI577539B publication Critical patent/TWI577539B/zh

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Description

用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶 體及系統
本發明係關於運行時間系統。
今日之電腦常常包含作業系統以管理對硬體及軟體資源之存取。接著,作業系統能包含各種類型之介面(例如,應用程式介面;Application Programming Interface(API))以致使程式設計師及/或應用程式能存取該等資源。在一些情況下,考量到使用特定程式語言來編程介面。當客戶端應用程式是以特定程式語言撰寫而成時,客戶端應用程式能以原生特定程式語言之方式來存取介面。然而,使用與編程介面不同之程式語言所撰寫之客戶端應用程式為了呼叫介面,該等客戶端應用程式有時最終可利用額外之程式碼及/或包裝函數。
通常,於作業系統外部文檔紀錄介面。為了成功呼叫介面及撰寫包裝函數,程式設計師諮詢外部文件以決定可用之介面及決定相關之呼叫參數等。新版作業系統 可包含新介面、針對舊介面之修改及針對廢棄介面之移除。因此,為了維持API當下之設定,程式設計師必須諮詢每個新版本作業系統上之外部文件。該諮詢動作有時能導致作業系統中釋放介面之動作及程式中包含介面之動作間的延遲。
在此提供之摘要是為了以一種簡單的形式來介紹概念之選擇,該簡單形式將下面以詳細的例子作進一步描述。本摘要並非想指出所請求標的之主要特徵或重要特徵,亦不是想使用本摘要來限制所請求標的之範圍。
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。或者,可配置與特定程式語言相關之編譯器以映射獨立介面描述至特定程式語言。在一些實施例中,可配置應用程式以程式化決定一或更多個作業系統之介面。
一些實施例能以物件導向方式來模組化一或更多個作業系統之介面,該物件導向方式係使用抽象型態系統。在一些實施例中,延伸介面定義語言(extended Interface Definition Language(IDL))可包含語法以描述在一或更多個介面間之關係。在一些實施例中,二進位契約(binary contract)可經配置以顯露與抽象型態系統相關連之行為。
100‧‧‧環境
102‧‧‧計算裝置
104‧‧‧處理器
106‧‧‧電腦可讀取儲存媒體
108‧‧‧作業系統
110‧‧‧作業系統介面
112‧‧‧描述語言檔案
114‧‧‧編輯器/編譯器模組
116‧‧‧二進位中繼資料檔案
118‧‧‧原始碼檔案
200‧‧‧架構
202‧‧‧作業系統
204‧‧‧作業系統元件
206‧‧‧新API家族
208‧‧‧以COM為主之API家族
210‧‧‧以扁平式匯出為主之API家族
212‧‧‧中繼資料
214‧‧‧中繼資料
216‧‧‧中繼資料
218‧‧‧應用程式二進位介面
220‧‧‧應用程式
222‧‧‧已產生之語言投射模組
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
308‧‧‧步驟
402‧‧‧延伸IDL檔案
404‧‧‧編譯器
406‧‧‧中繼資料檔案
408‧‧‧應用程式
500‧‧‧計算裝置
502‧‧‧處理器/處理單元
504‧‧‧記憶體/儲存裝置
506‧‧‧輸入/輸出裝置
508‧‧‧匯流排
各種圖式中之相同元件符號指示相同特徵。
第1圖圖示作業環境,在該作業環境中,可依照一或更多個實施例來使用本說明書中所描述之各種原則。
第2圖圖示依照一或更多個實施例之架構。
第3圖為流程圖,該流程圖依照一或更多個實施例來描述方法中之步驟。
第4圖圖示依照一或更多個實施例之關係圖。
第5圖圖示示例性系統,該示例性系統可經使用以實施一或更多個實施例。
概要
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。可配置抽象型態系統與介面定義語言(Interface Definition Language(IDL))之組合以描述及/或定義介面。在一些實施例中,可用物件導向方式來描述介面。或者,可配置與特定程式語言相關之編譯器以映射獨立於語言之介面描述至特定程式語言中之適當建構。或者,可配置程式語言應用程式運行時間環境以動態(例如,在運行時間執行期間)映射獨立於語言之介面描述至特定運行時間環境中之適當建構。在一些實施例中,可配置應用程式以程式化決定獨立介面描述。 在一些情況下,可用機器可讀取格式來儲存獨立介面描述。
在後面的討論中,提供了名為「作業環境」之一節,及描述可使用一或更多個實施例之環境。在該名為「作業環境」之一節後,名為「作業系統元件存取」之一節描述架構,該架構致使多個程式語言以可程式化方式存取系統元件。接著,名為「使用抽象型態系統以模組化物件導向語言」之一節描述如何使用抽象型態系統與延伸IDL之結合來以物件導向之方式描述作業系統介面。最後,名為「示例性系統」之一節描述示例性系統,該示例性系統可經使用以實施一或更多個實施例。
現已提供各種實施例之概要,該等實施例將在下面描述,現在思考示例性作業環境,在該示例性作業環境中可實施一或更多個實施例。
作業環境
第1圖依照一或更多個實施例而圖示作業環境,一般而言位於100處。環境100包含計算裝置102,該計算裝置102具有一或更多個處理器104及一或更多個電腦可讀取儲存媒體106。舉例而言但不加以限制,電腦可讀取儲存媒體可包含所有形式之揮發性及非揮發性記憶體及/或儲存媒體,該揮發性及非揮發性記憶體及/或儲存媒體通常與計算裝置相關。此類媒體可包含唯讀記憶體(ROM)、隨機存取記憶體(RAM)、快取記憶體、硬 碟、可移除式媒體等等。計算裝置之一特定實例如以下第5圖所圖示及描述。
此外,計算裝置102包含作業系統(OS)108及相關作業系統介面110。如第1圖圖示之不同模組,我們將可體會及瞭解,可實施作業系統108及作業系統介面110為相異模組、結合式模組或不背離所請求標的範圍之任何相異模組與結合式模組之結合。作業系統108代表功能性,該功能性經配置以管理計算裝置102之軟體及/或硬體資源。作業系統介面110代表可程式化存取服務及/或作業系統108所提供之功能性(例如,記憶體管理、檔案管理、服務、函數、資源管理、周邊裝置管理等等)。
計算裝置102亦包含一或更多個描述語言檔案112,該描述語言檔案112代表一或更多個檔案,該檔案經配置以描述一或更多個介面。在一些實施例中,介面可與作業系統相關(例如,作業系統介面110)。描述語言檔案可使用任何適當之描述、標示語言及/或語法(例如,使用介面定義語言(IDL))、可延伸標示語言(XML)等等來描述介面。
此外,計算裝置102亦包含一或更多個編輯器/編譯器模組114。在一些實施例中,基於檔案112,編輯器/編譯器模組114代表功能性,該功能性為讀取及/或解譯描述語言檔案112及產生輸出(例如,一或更多個二進位中繼資料檔案116)。二進位中繼資料(metadata)檔案116代表一或更多個機器可讀取檔案,該機器可讀取 檔案包含與作業系統介面110及/或作業系統108相關之資訊(例如,輸入參數型態、參數呼叫順序、介面間之關係等等)。
或者,編輯器/編譯器模組114代表讀取及/或解密一或更多個原始碼檔案118之功能性。原始碼檔案118相當於一或更多個檔案,該檔案包含程式敘述,該程式敘述與至少一個程式語言相關。在一些情況下,原始碼檔案118可包含呼叫一或更多個作業系統介面之敘述。基於原始碼檔案,編輯器/編譯器模組114解譯原始碼檔案118,而且編輯器/編譯器模組114產生機器可讀取程式碼。
舉例而言但不加以限制,計算裝置102可具體實施為任何適當計算裝置(例如,桌上型電腦、可攜式電腦、筆記型電腦、手持式電腦(例如,個人數位助理(PDA))、手機等等)。
現已描述示例性作業環境,現在思考可程式化顯露作業系統元件至一或更多個程式語言之討論。
作業系統元件存取
在計算裝置上執行之應用程式常常利用作業系統提供之特徵,該作業系統在計算裝置上執行。作業系統可賦能簡化存取計算裝置上之相關資源,且作業系統亦可提供服務。有時,以可程式化方式存取該等特徵、服務及/或資源。然而,若作業系統以一種程式語言格式來顯 露該等功能,該程式語言格式異於撰寫應用程式之程式語言,則程式設計師通常將撰寫包裝函數以協助在不同程式語言間之轉換。舉例而言,思考介面,該介面已撰寫完成及/或顯露為扁平式、匯出之「C」函數。為了賦能C#或Visual Basic程式設計師之程式語言能成功地呼叫該「C」函數,欲使用該「C」函數之C#或Visual Basic程式設計師可包含特定敘述及/或額外程式碼。結果,利用與顯露之介面相異之程式語言來撰寫之應用程式無法存取該等顯露之介面直至已撰寫額外敘述及/或包裝函數。
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。描述獨立於程式語言之介面賦能多個程式語言容易存取介面。當程式語言學習如何解譯介面之獨立於語言之描述時,可應用該解譯語言之知識於現存及未來之介面,該等現存及未來之介面使用獨立於語言之描述。在一些實施例中,可使用抽象型態系統以描述介面。接著,特定程式語言或相關之程式語言編譯器可映射抽象型態系統至該抽象型態系統之相關型態系統以解譯及/或存取介面。
思考第2圖,該第2圖依照一或更多個實施例而圖示架構200。架構200包含作業系統202,該作業系統202可經配置以在計算裝置上執行。為了簡潔描述的緣故,我們應理解,將不圖示作業系統202之所有系統元件。作業系統202包含一或更多個作業系統元件204,該 作業系統元件204經配置以管理與計算裝置相關之資源。在一些實施例中,作業系統元件204可提供可程式化存取資源,且作業系統元件204亦可提供一或更多個服務及/或與管理資源相關之特徵。作業系統元件204亦能包含與作業系統202相關之基本元件,且作業系統元件204亦可包含以基本元件建立之複雜元件。
在一些實施例中,可藉由一或更多個介面(例如,應用程式介面(API))來顯露作業系統元件204。在此實例中,作業系統202包含新API家族206、以COM為主之API家族208及以扁平式匯出為主之API家族210。新API家族206代表一或更多個相關API,在該相關API中使用抽象型態系統來直接描述功能性(亦即,類別、介面、方法、屬性、事件等等),該新API家族206之詳細內容將在後面作進一步描述。以COM為主之API家族208代表一或更多個API,在該等API中使用元件物件模型(Component Object Model;COM)之型態系統來描述功能性。以扁平式匯出為主之API家族210代表一或更多個API,在該等API中使用方法簽章(signature)(亦即包含方法名稱、呼叫協定、方法參數之個數及型態之方法簽章)來描述功能性。以扁平式匯出為主之API進一步代表API,該等API僅可藉由該等API之名稱來識別該等API,而且將不安排該等API為類別及/或物件導向方式。欲決定可用API之程式設計師可手動及/或以可程式化方式存取每個API之描述。舉例而言, 程式設計師可存取相關中繼資料212以決定新API家族206存在於什麼介面及決定如何呼叫該等介面。當以COM為主之API家族208及以扁平式匯出為主之API家族210分別具有在中繼資料214中與在中繼資料216中之相關且獨立於語言之型態系統描述時,程式設計師會先撰寫包裝程式碼以映射獨立於語言之型態系統描述至以COM為主及/或以扁平式匯出為主之API。
可配置中繼資料212、214及216以包含資訊,該資訊描述相關介面之各種態樣(例如,版本資訊、可使用之方法、介面使用之參數、參數之資料型態、傳遞參數之順序等)。在一些實施例中,中繼資料可包含與介面相關之階層式資訊(例如,描述介面間關係及/或以物件導向方式描述介面之資訊)。中繼資料可經配置以包含類別描述、相關方法及類別之參數等等。在一些情況下,一或更多IDL檔案可經延伸以包含該等描述中之一些描述,且一或更多IDL檔案可經使用於產生一或更多中繼資料檔案。在一些情況下,中繼資料可為部份基於一或更多IDL檔案,該中繼資料之詳細內容將在後面作進一步描述。
作業系統202亦包含應用程式二進位介面(application binary interface;ABI)218。ABI在機器層次描述用以呼叫函數、方法、API等等之二進位契約。二進位契約可包含與函數相關之識別或名稱、可用以呼叫函數之簽章、傳遞進函數之參數順序及/或與參數 相關之資料型態等。另外,二進位契約可包含定義及/或規則,該規則用以顯露與型態系統之至少一個型態相關之行為。通常並未改變與二進位契約相關之行為及/或用二進位契約定義之行為。舉例而言,若二進位契約之簽章及/或識別維持不變,則該二進位契約之相關行為亦維持不變。
應用程式二進位介面218代表經由二進位顯露之功能性,該二進位可被其他應用程式可靠地引動。在該實例中,應用程式二進位介面218包含介面、基本型態及與作業系統元件204相關之基本樣式。作業系統202外部之一或更多個應用程式(例如,應用程式220)能經由一或更多個應用程式二進位介面218來存取作業系統元件204。
應用程式220能包含一或更多個應用程式,該應用程式係由一或更多個程式語言(例如,HTML、JavaScript、Visual Basic、C#、C++等等)所產生。在一些實施例中,應用程式220包含一或更多個作業系統元件之呼叫。在一些情況下,應用程式220可經配置以事先以可程式化方式決定可用之介面,然後應用程式220呼叫一或更多個已決定可用之介面。在一些情況下,應用程式220借助來自一或更多個已產生之語言投射模組222及經由應用程式二進位介面218來存取介面,該存取介面之詳細內容將在後面作進一步描述。
在一或更多個實施例中,已產生之語言投射模組222映射抽象型態系統定義至特定程式語言。可映射任何適當之程式語言,該映射動作之實例如上所述。在一些實施例中,已產生之語言投射模組針對每一程式語言可為唯一。在其他實施例中,已產生之語言投射模組可為多用途,且已產生之語言投射模組可為多個程式語言所用。映射致使使用抽象型態系統描述之當下及未來介面無須額外程式敘述(亦即,包裝函數)即能存取特定程式語言。映射進一步允許特定程式語言以一種原生特定程式語言之方式來呼叫介面。可映射任何適當型態之資訊(例如,類別、資料型態、函數指標、結構等等)。
思考當程式設計師欲存取作業系統元件之實例。當程式設計師撰寫應用程式(例如,應用程式220)時,該程式設計師在編輯器/編譯器中產生原始碼,該編輯器/編譯器與至少一個特定程式語言相關。為了獲得與介面之資訊及/或可用作業系統相關之API之資訊,編輯器/編譯器可經配置以存取中繼資料檔案。舉例而言,在一些實施例中,當程式設計師撰寫包含呼叫類別之一行程式碼時,該類別經實作為作業系統元件之一部份,編譯器/編輯器可查詢與類別相關之中繼資料,且編譯器/編輯器可傳回與類別相關之方法、屬性等等之清單給程式設計師。該清單可包含任何種類之資訊、與類別相關之方法及/或類別之屬性。或者,該清單可包含可用類別之清單。在一些實施例中,可提供資訊為自動完成特徵之一部份, 該自動完成特徵經配置以在視覺上呈現類別之相關方法、屬性等以供使用者選擇。在方法及/或屬性的選擇上,為了更有效率及更精確的產生程式碼,編譯器/編輯器可插入對應語法至原始碼中。
在一些實施例中,程式設計師可撰寫原始碼,該原始碼可經配置以實例化作業系統元件之類別物件。當在運行時間呼叫作業系統時,該作業系統動態建立類別之實例以傳回至呼叫碼。然而,傳回至呼叫碼之實例可為「抽象物件」,或該傳回至呼叫碼之實例可為與作業系統元件相關之抽象型態系統中所描述之物件,該傳回至呼叫碼之實例如以下之進一步描述。為了連結抽象物件型態及與呼叫碼相關且為具體資料型態之程式語言,編譯器可經配置以轉化抽象物件為該編輯器相關之程式語言中之可比較型態,及/或編譯器可經配置以映射抽象物件至該編輯器相關之程式語言中之可比較型態(例如,經由已產生之語言投射模組222)。在一些情況下,可使用代理器以連結呼叫作業系統元件之抽象物件與呼叫程式語言相關之具體物件。
思考經配置以模擬作業系統元件類別之行為之代理器。在一些情況下,可建立代理器,該代理器包含類別之相關型態之虛設常式(stub)、類別之方法、類別之屬性、類別之事件及類別之介面等。可用呼叫碼之程式語言來建構代理器,然後致使該呼叫之程式碼以一種原生呼叫程式碼之方式來存取代理器。虛設常式可包含適當 知識及/或程式碼以轉化及/或映射該等呼叫至(及來自)作業系統。舉例而言,在一些實施例中,代理器可與應用程式二進位介面218溝通。
在一些實施例中,程式語言如上所述可插入包裝函數及/或代理器以映射抽象型態至原生程式語言之型態。程式語言編輯器/編譯器可經配置以讀取中繼資料(例如,中繼資料檔案212、214及216);程式語言編輯器/編譯器可經配置以決定正經使用之抽象型態;程式語言編輯器/編譯器可經配置以映射抽象型態至相關程式語言中之一或更多個可比較型態;及程式語言編輯器/編譯器可經配置以撰寫相關包裝函數及/或代理器至與作業系統元件相關之抽象型態。一旦針對每一型態之映射存在於程式語言及抽象型態系統之間,藉由抽象型態系統定義之任何當下或未來介面可在無須借助來自程式設計師之額外編程的情況下自動化供程式語言存取。
舉例而言,思考第3圖,該第3圖依照一或更多個實施例而圖示流程圖,該流程圖係以一種方法中之步驟來描述。可藉由任何適當硬體、軟體、韌體來執行該方法,或可藉由任何適當硬體、軟體、韌體之結合物來執行該方法。在至少一些實施例中,利用軟體(例如,編輯器/編譯器模組114)來執行該方法之態樣,該軟體在計算裝置102上執行。
步驟302接收針對資訊之請求,該資訊與可用作業系統介面相關。舉例而言,該請求可經配置以請求可 用之介面及/或與可用介面相關之其他資訊。該請求之動作可用任何適當方式達成。在一些實施例中,該請求可藉由原始碼編輯器自動化產生,在該原始碼編輯器內正進行開發原始碼。該原始碼編輯器可識別作業系統介面及/或元件之呼叫,且該原始碼編輯器一旦識別該呼叫,則該原始碼編輯器送出針對與作業系統介面相關之可用方法、屬性等等之請求。在一些實施例中,該請求可藉由上下拉選單、選擇鈕等等選擇而手動產生。該請求可經配置以請求與所有可用作業系統介面、一些可用作業系統介面、個別作業系統介面相關之資訊,或該請求可經配置以請求與所有可用作業系統介面、一些可用作業系統介面、個別作業系統介面之任何組合相關之資訊。在一些實施例中,可經運行應用程式(例如,第2圖之應用程式220)產生請求。
步驟304獲得與一或更多個作業系統介面相關之資訊。舉例而言,在一些實施例中,可查詢作業系統以獲得資訊。或者,可包含資訊在一或更多個中繼資料檔案中,且可藉由查詢及/或讀取中繼資料檔案來獲得資訊。如上文及下文中所述,中繼資料檔案可為機器可讀取格式,且中繼資料檔案可包含階層式資訊(例如,與介面相關之物件關係資訊)。
回應於獲得資訊,步驟306決定一或更多個抽象型態,該抽象型態與一或更多個作業系統介面相關。如同上面所描述的,在一些實施例中,可經由使用抽象型態系統及使用獨立於特定程式語言之方式來描述作業系統 介面。回應於決定與一或更多個作業系統介面相關之一或更多個抽象型態,步驟308映射一或更多個抽象型態之每一抽象型態至與特定程式語言相關之型態。
思考介面描述語言之實例,該介面描述語言將ABI寫至OpenPicker運行時間類別。包含在OpenPicker運行時間類別內的是PickMultipleItems方法,該PickMultipleItems方法經配置以回傳FileItem物件之收集。在此特定實例中,FileItem類別包含GetProperties方法,該GetProperties方法經配置以回傳包含名稱數值之FileItemProperties物件。
在一些實施例中,C#語言編譯器可映射描述至C#語言建構。藉由映射描述至特定語言的建構,可用一種原生C#程式語言之方式來存取作業系統介面,如以下說明:
在另一實例中,可映射結構至JavaScript物件,該結構係由一種獨立於語言之方式定義。思考已定義之FrameRate結構之實例,該FrameRate結構使用: FrameRate結構包含兩個UINIT32體(fields):Numerator及Denominator。因為FrameRate結構係由使用獨立於語言之項定義,因此當使用適當映射時,可藉由各種特定語言程式來存取架構(例如,經由JavaScript來存取架構)。然而,JavaScript未包括包含欄位之結構的概念,或無正負號之32位元整數之概念。作為替代的,JavaScript包含具有屬性之物件之概念及Number之概念。在此實例中,上述結構定義可為具有兩屬性之物件,該兩屬性名為Numerator與Denominator,型態Number之兩者為: 已思考可程式化顯露作業系統元件至一或更多個程式語言,現在思考模組化物件導向語言之討論,該模組化物件導向語言依照一或更多個實施例而具有抽象型態系統。
用抽象型態系統來模組化物件導向語言
當已使用特定程式語言來定義作業系統介面時,與介面相關之參數具有特定程式語言之資料型態之特徵。接著,介面之呼叫遵守特定程式語言定義資料型態之規則。針對以特定程式語言撰寫程式為介面,因為該等程式具有相同資料型態定義,因此符合該等資料型態之介面變得不重要。並非用特定程式語言撰寫但又呼叫介面之程式為了符合資料型態,該等程式有時可減少該等程式之能力。舉例而言,呼叫以不同程式語言編程之介面之程式設計師可增加程式碼以轉換不同程式語言及/或資料型態;及/或呼叫來自不同程式語言之介面之程式設計師可增加程式碼以連結不同程式語言及/或資料型態。結果,資料型態間之連結處理可常常減少呼叫程式語言之資料型態特有之功能性。此外,該轉換有時可以是複雜的,及在一些情況下,若不同程式語言具有異於物件導向之概念,則該轉換是不存在的。
各種實施例能以物件導向方式來模組化一或更多個作業系統之介面,該作業系統利用抽象型態系統。在一些實施例中,延伸IDL可包含語法以描述介於一或更多個介面間之關係。或者,延伸IDL可包含規則,該等規則管理如何描述介面,及/或該等規則管理如何定義介面。在一些實施例中,二進位契約可經配置以顯露與抽象型態系統相關之行為,且該二進位契約進一步可經配置以包含與聚合資料型態相關之資訊。
物件導向模組描述使用類別階層之物件,此處之類別可包含方法、屬性、繼承等。通常但並非必要地,物件導向類別包含一或更多個建構子。建構子是類別函數,當該類別函數經呼叫時,建立記憶體中之類別之實例/物件以供使用。類別之一些建構子包含額外程式碼,該程式碼準備已建立之實例/物件以供使用。舉例而言,該額外程式碼可初始化類別之成員變數;該額外程式碼可執行類別之相關啟動常式等。預設建構子不具有輸入參數,而非預設建構子具有一或更多個輸入參數。
在一些實施例中,可限制作業系統元件之一或更多個建構子以遵守特定的實施及/或設計。藉由遵守特定實施,建構子之呼叫可依靠該建構子及/或該組合物件之運作。舉例而言,可限制作業系統元件之預設建構子;及/或映射作業系統元件之預設建構子至類別工廠物件(class factory object)之IActivationFactory介面之ActivateInstance方法之預設建構子。類別工廠物件是一種設計樣式,該設計樣式可經模組化而無須指定已創立之物件之完全相同類別即可建立物件。藉由使用類別工廠模組,預設建構子可維持充分程度之抽象化。亦可限制置放作業系統元件之非預設建構子於一或更多個特定之設計介面(例如,類別工廠之可供選擇介面)之上。
一種指定介面描述之方法是經由描述語言檔案(例如,類似IDL之延伸描述語言及/或XML)之使用。在一些實施例中,延伸描述語言可經配置以致使描述及/ 或設計作業系統元件之一或更多個建構子介面。舉例而言,思考如下述之Compressor類別。在此實例中,Compressor類別宣告該Compressor類別之ICompressorFactory介面包含與類別相關之非預設建構子方法之至少一個定義。
可包含該等描述於一或更多個檔案中;及使用該等描述以連結至少一個編譯器來產生一或更多個介面描述,該介面描述係為機器可讀取格式,詳細內容將在後面作進一步描述。
物件導向類別可經配置以包含至少一個靜態方法、至少一個靜態屬性、至少一個靜態事件;或物件導向類別可經配置以包含至少一個靜態方法、至少一個靜態屬性、至少一個靜態事件之任何結合。類似限制建構子之定義,靜態方法、靜態屬性及/或靜態事件可經設計以符合一或更多個特定設計介面。思考CallControl類別之實例,該CallControl類別宣告靜態方法、屬性及事件。在此實例中,定義靜態方法、屬性及事件於ICallControlStatics介面:
物件導向類別可經配置以包含至少一個實例方法、至少一個實例屬性、至少一個實例事件;或物件導向類別可經配置以包含至少一個實例方法、至少一個實例屬性、至少一個實例事件之任何結合。實例成員(方法、屬性及事件)操作於類別之特定實例上,而類別之所有成員共享靜態成員。類別可經設計以符合一或更多個特定設計介面(例如,上述實例中,該CallControl類別宣告該CallControl類別之相關實例方法、屬性及事件經定義於ICallControl介面中)。在一些實施例中,一或更多個作業系統元件可在類別工廠設計樣式之後模組化/實作 該等介面;及一或更多個作業系統元件可在類別工廠設計樣式上模組化/實作該等介面。
特定程式語言是否呼叫特定語言建構子、靜態成員或實例成員、語言投射模組(例如,第2圖之已產生之語言投射模組222)能映射特定程式語言呼叫至適當方法及/或介面,該介面與適當類別工廠物件或實例相關。在一些實施例中,類別工廠物件與作業系統元件及/或執行時間類別相關。舉例而言,程式碼之方法簽章可經配對至類別工廠物件之適當建構子介面方法,該程式碼導引編譯器以建立運行時間類別之實例。在另一實例中,語言投射模組可經配置以配對特定語言方法簽章至與作業系統元件相關之靜態介面上之適當配對介面方法,該特定語言方法簽章導引編譯器以呼叫靜態方法。在另一實例中,語言投射模組可經配置以配對特定語言方法簽章至與作業系統元件之特定實例相關之介面上之適當配對介面方法,該特定語言方法簽章導引編譯器以呼叫實例方法。
在一些實施例中,IDL編譯器可經配置以讀取與至少一個作業系統元件介面描述相關之一或更多個延伸IDL檔案,且IDL編譯器可經配置以產生相關機器可讀取檔案。可在延伸IDL檔案中包含任何適當型態之資訊(例如,資訊,該資訊描述型態、方法、屬性、事件及相關作業系統元件之介面)。在一些情況下,編譯器可產生機器可讀取中繼資料檔案。一或更多個應用程式可經配置以讀取相關機器可讀取檔案以可程式化方式決定可用之 介面、相關敘述及/或介面之宣告、介面之參數之資料型態等。可用任何適當程式語言撰寫一或更多個應用程式,該可用任何適當程式語言撰寫一或更多個應用程式之實例如上所提供。
在一些實施例中,IDL編譯器可產生一或更多個通訊代理器及/或程式碼虛設常式,該一或更多個通訊代理器及/或程式碼虛設常式與型態、方法、屬性、事件及/或介面相關。該等通訊代理器及/或程式碼虛設常式可額外經配置以供作業系統元件存取。
思考第4圖,該第4圖依照一或更多個實施例而圖示介於延伸IDL檔案402、編譯器404及中繼資料檔案406間之關係。在此,藉由編譯器404接收延伸IDL檔案402及處理延伸IDL檔案402以產生中繼資料檔案406。在至少一些實施例中,可實施關係中之已圖示模組為軟體、硬體;或可實施關係中之已圖示模組為軟體、硬體之任何組合(例如,編輯器/編譯器模組114,該編輯器/編譯器模組在計算裝置102上執行)。
在已圖示及已敘述之實施例中,延伸IDL檔案402可包含一或更多個檔案,該一或更多個檔案定義一或更多個作業系統元件介面(例如,作業系統API)。可描述任何適當型態之作業系統元件(例如,檔案物件/檔案類別、字串物件/字串類別、圖形物件/圖形類別、文化物件/文化類別等等)。每一物件可包含可與物件導向類別相關之方法、屬性、繼承資訊等。延伸IDL可包含語法以致使 描述介於一或更多個介面間之該等型態之關係。或者,延伸IDL可描述抽象型態系統。
在一些實施例中,抽象型態系統可經配置以支持及/或描述各種資料型態。舉例而言,可定義方法介面以映射所有介面在物件之實例上操作之實體需求。在另一實施例中,可使用抽象型態系統以定義函數指標,該函數指標可經呼叫以跨越程式語言及元件界限。第一元件可引起函數指標或委派,該委派受限於方法。然後可傳送委派以跨過二進位編譯界限至任意程式語言撰寫成之第二元件,且引動該委派。各種實施例致使延伸IDL定義及/或描述該等資料型態;各種實施例致使延伸IDL定義組成基本資料型態之規則;且各種實施例亦致使延伸IDL定義合成資料型態為聚合型態之規則。
在已圖示及已描述之實施例中,編譯器404接受一或更多個輸入檔案(例如,延伸IDL檔案402),且編譯器404產生一或更多個中繼資料檔案406。中繼資料檔案406可經配置以供自動化存取。舉例而言,可用機器可讀取格式來儲存中繼資料檔案。在一些實施例中,中繼資料檔案406與一或更多個作業系統元件相關。或者,如上所述,編譯器404可在通訊代理器外產生虛設常式。
應用程式408可動態決定可用之API(例如,經由讀取中繼資料檔案406)。在一些實施例中,應用程式408可經配置為第1圖之編輯器/編譯器114。經由中繼資料檔案406,應用程式可決定是否具有後續版本之功能 性;應用程式可決定API使用什麼參數;應用程式亦可在運行時間通知使用者API具有彼等功能性。因此,藉由包含具有機器可讀取格式之API描述,亦藉由敘述具有抽象型態系統之API,應用程式及/或語言能容易地且幾乎不需藉助程式設計師幫忙來存取API,該等應用程式及/或語言支持介於抽象型態系統及特定程式語言間之映射。
我們已思考具有抽象型態系統之模組化物件導向語言,現在接著思考依照一或更多個實施例之示例性系統之討論。
示例性系統
第5圖圖示示例性計算裝置500,該計算裝置500能經使用以實施上述之各種實施例。舉例而言,計算裝置500可為第1圖之計算裝置102或任何其他適當之計算裝置。
計算裝置500包含一或更多個處理器或處理單元502、一或更多個記憶體及/或儲存裝置元件504、一或更多個輸入/輸出(I/O)裝置506及匯流排508,該匯流排508允許各種元件及裝置彼此間能互相溝通。匯流排508代表任何數種匯流排結構之一或更多個種,該等匯流排結構包含記憶體匯流排或記憶體控制器、周邊匯流排、加速繪圖埠口及處理器或使用任何各種匯流排架構之當地匯流排。匯流排508可包含有線及/或無線匯流排。
記憶體/儲存裝置元件504代表一或更多個電腦儲存媒體。元件504可包含揮發性媒體(例如,隨機存取記憶體(RAM))及/或非揮發性媒體(例如,唯讀記憶體(ROM))、快取記憶體、光碟、磁碟等等)。元件504可包含固定式媒體(例如,隨機存取記憶體、唯讀記憶體、固定式硬碟等),且元件504亦包含可移除式媒體(例如,快取記憶體裝置、可移除式硬碟、光碟等)。
一或更多個輸入/輸出裝置506允許使用者輸入指令及資訊至計算裝置500,且一或更多個輸入/輸出裝置506亦允許將資訊呈現至使用者及/或其他元件或裝置。輸入裝置之實例包含鍵盤、游標控制裝置(例如,滑鼠)、麥克風、掃描器等等。輸出裝置之實例包含顯示裝置(例如,螢幕或投影機)、揚聲器、印表機、網路卡等等。
可於軟體或程式模組之一般上下文中描述本說明書中之各種技術。一般而言,軟體包含常式、程式、物件、元件、資料結構等等,該常式、程式、物件、元件、資料結構等等執行個別作業,或該常式、程式、物件、元件、資料結構等等實施個別抽象資料型態。可儲存該等模組及技術之實施於一些形式之電腦可讀取媒體上,或傳送該等模組及技術之實施至一些形式之電腦可讀取媒體上。電腦可讀取媒體能為任何可用媒介或媒體,該媒介或媒體可為供計算裝置存取。舉例而言但不加以限制,電腦可讀取媒體可包含「電腦可讀取儲存媒體」。
「電腦可讀取儲存媒體」包含揮發性及非揮發性、可移除式及不可移除式媒體,該等揮發性及非揮發性、可移除式及不可移除式媒體係以任何方法或技術實施以供儲存資訊(例如,電腦可讀取指令、資料結構、程式模組或其他資料)。電腦可讀取儲存媒體包含但不限於隨機存取記憶體、唯讀記憶體、電子可擦拭記憶體(EEPROM)、快取記憶體或其他記憶體技術、唯讀光碟(CD-ROM)、數位光碟(DVD)或其他光學儲存裝置、磁卡、磁帶、磁碟儲存裝置或其他磁性儲存裝置或任何其他用以儲存所欲儲存資訊之媒介及可供電腦存取之媒介。
結論
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。或者,可配置與特定程式語言相關之編譯器以映射獨立介面描述至適當且特定於程式語言之建構。在一些實施例中,可配置應用程式以程式化決定一或更多個作業系統之介面。
雖然已用特定於結構特徵及/或方法行為之語言來描述所請求標的,但我們要瞭解,已定義於附加申請專利範圍之所請求標的並不限於上述之特定特徵或行為。當然,上述特定特徵及行為被揭示為實施申請專利範圍之示例性形式。
100‧‧‧環境
102‧‧‧計算裝置
104‧‧‧處理器
106‧‧‧電腦可讀取儲存媒體
108‧‧‧作業系統
110‧‧‧作業系統介面
112‧‧‧描述語言檔案
114‧‧‧編輯器/編譯器模組
116‧‧‧二進位中繼資料檔案
118‧‧‧原始碼檔案

Claims (20)

  1. 一種電腦實施方法,包含下列步驟:利用包括機器層次定義的至少一二進位契約(binary contract),以程式化方式決定相關於一或更多可用軟體介面的一或更多抽象型態,各軟體介面是利用相關於該一或更多抽象型態的一抽象型態系統來描述,該抽象型態系統經配置以使獨立於特定程式語言的介面描述為可行,以及其中一軟體介面的至少一描述包括呼叫參數型態描述,其中以程式化方式決定該一或更多抽象型態的步驟包含決定相關於該一或更多抽象型態的行為;及將個別的經決定抽象型態轉譯成個別的相應型態,該等相應型態相關於至少一特定程式語言。
  2. 如請求項1所述之電腦實施方法,進一步包含下列步驟:藉由存取一或更多中繼資料(metadata)檔案來獲得相關於識別出該一或更多可用軟體介面的資訊。
  3. 如請求項2所述之電腦實施方法,其中該資訊包含階層式資訊。
  4. 如請求項2所述之電腦實施方法,其中該資訊包含相關於該一或更多軟體介面中之至少一軟體介面的版本資訊、相關於該至少一介面之個別參數的資 料型態、以及相關於該至少一介面之該等個別參數的一呼叫順序。
  5. 如請求項2所述之電腦實施方法,其中獲得相關於該一或更多可用軟體介面的資訊的步驟進一步包含經由一原始碼編輯器程式來獲得該資訊。
  6. 如請求項1所述之電腦實施方法,其中該二進位契約包括一或更多函數簽章。
  7. 如請求項6所述之電腦實施方法,其中該二進位契約包括一或更多函數名稱。
  8. 一種電腦可讀取儲存記憶體,該電腦可讀取儲存記憶體上包括有:一或更多中繼資料(metadata)檔案,該一或更多中繼資料檔案相關於一或更多應用程式介面(API)模組,該一或更多中繼資料檔案經配置包括一或更多API的至少一描述,該一或更多API被包括在該一或更多API模組中,該至少一描述利用一抽象型態系統來描述對該一或更多API的程式化存取,該至少一描述獨立於特定程式語言,該一或更多中繼資料檔案包括相關於該等API的呼叫參數型態描述;一或更多應用程式二進位介面(Application Binary Interface,ABI)模組,該一或更多ABI模組經配置包括用於呼叫該一或更多API的一或更多 機器層次定義;及一或更多已產生語言投射模組,該一或更多已產生語言投射模組經配置將該抽象型態系統之至少一型態轉譯成一或更多特定程式語言的至少一型態。
  9. 如請求項8所述之電腦可讀取儲存記憶體,進一步包括有處理器可執行指令,該等指令回應於由至少一處理器的執行而實施至少一應用程式,該至少一應用程式經配置以運用該一或更多中繼資料檔案,來以程式化方式決定該一或更多API模組中所包括的至少一介面。
  10. 如請求項8所述之電腦可讀取儲存記憶體,其中該已產生語言投射模組包含至少一代理器,該至少一代理器經配置以一種原生於該一或更多特定程式語言的方式來模擬該抽象型態系統的至少一型態。
  11. 如請求項8所述之電腦可讀取儲存記憶體,其中用於呼叫該一或更多API的該二進位契約包含至少一行為定義,該至少一行為定義相關於該抽象型態系統之至少一型態。
  12. 如請求項8所述之電腦可讀取儲存記憶體,其中該一或更多中繼資料檔案經配置以一種物件導向方式來描述一物件導向類別,該物件導向類別被 包括在該一或更多API模組中。
  13. 如請求項12所述之電腦可讀取儲存記憶體,其中該物件導向類別包含一檔案類別。
  14. 如請求項8所述之電腦可讀取儲存記憶體,其中該一或更多中繼資料檔案經配置以包括資訊,該資訊包含相關於該一或更多API中之至少一API的版本資訊、相關於該一或更多API中之至少一API之各參數的資料型態、以及相關於該一或更多API中之至少一API之各參數的一呼叫順序。
  15. 一種系統,包含:至少一處理器;及一或更多電腦可讀取儲存記憶體,該一或更多電腦可讀取儲存記憶體包括有處理器可執行指令,該等指令回應於被該至少一處理器執行而經配置以進行下列步驟:利用一抽象型態系統及一描述語言來描述一或更多軟體介面,該抽象型態系統經配置以致使獨立於特定程式語言的描述,其中該至少一描述包括相關於該一或更多軟體介面的呼叫參數型態描述;至少部分地基於該抽象型態系統及描述語言,來產生該一或更多軟體介面的一或更多機器可讀取描述;定義相關於該抽象型態系統的一或更多二進位契約 (binary contract),該一或更多二進位契約經配置以包括一或更多規則,該一或更多規則描述相關於該抽象型態系統之至少一型態的行為,該一或更多二進位契約包含機器層次定義;及至少部分地基於該一或更多二進位契約,將該抽象型態系統轉譯成一或更多特定程式語言。
  16. 如請求項15所述之系統,其中該等機器可讀取描述包含至少一中繼資料(metadata)檔案。
  17. 如請求項15所述之系統,其中該抽象型態系統的該至少一型態包含一函數指標。
  18. 如請求項15所述之系統,其中該一或更多軟體介面包含至少一物件導向介面。
  19. 如請求項15所述之系統,其中該一或更多電腦可讀取儲存記憶體進一步包含指令,該等指令可經執行以產生相關於該一或更多介面的至少一通訊代理器。
  20. 如請求項15所述之系統,其中該一或更多特徵至少部分地經限制於一種遵守一類別工廠設計樣式的實施方式來以軟體實施。
TW104140190A 2011-08-11 2011-10-07 用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統 TWI577539B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/207,806 US8776094B2 (en) 2011-08-11 2011-08-11 Runtime system

Publications (2)

Publication Number Publication Date
TW201609366A TW201609366A (zh) 2016-03-16
TWI577539B true TWI577539B (zh) 2017-04-11

Family

ID=47668756

Family Applications (2)

Application Number Title Priority Date Filing Date
TW100136563A TWI533217B (zh) 2011-08-11 2011-10-07 用於運行時間系統的電腦實施方法及電腦可讀取儲存記憶體
TW104140190A TWI577539B (zh) 2011-08-11 2011-10-07 用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW100136563A TWI533217B (zh) 2011-08-11 2011-10-07 用於運行時間系統的電腦實施方法及電腦可讀取儲存記憶體

Country Status (13)

Country Link
US (2) US8776094B2 (zh)
EP (1) EP2742420B1 (zh)
JP (1) JP5933002B2 (zh)
KR (1) KR101795844B1 (zh)
CN (1) CN103718155B (zh)
AU (2) AU2011374897B2 (zh)
BR (1) BR112014003123B1 (zh)
CA (1) CA2844492C (zh)
IN (1) IN2014CN00797A (zh)
MX (1) MX336195B (zh)
RU (1) RU2601198C2 (zh)
TW (2) TWI533217B (zh)
WO (1) WO2013022465A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US20140237368A1 (en) * 2013-02-19 2014-08-21 Microsoft Corporation Proxying non-interactive controls to enable narration
US9442700B2 (en) * 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US10228920B2 (en) * 2014-05-13 2019-03-12 Oracle International Corporation Automatic selection of an abstract data type
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US10120655B2 (en) * 2016-06-03 2018-11-06 Microsoft Technology Licensing, Llc. Seamless high performance interoperability between different type graphs that share a garbage collector
US11050607B2 (en) * 2017-06-21 2021-06-29 Red Hat, Inc. Proxy with a function as a service (FAAS) support
US11343352B1 (en) * 2017-06-21 2022-05-24 Amazon Technologies, Inc. Customer-facing service for service coordination
CN109814861A (zh) * 2017-11-21 2019-05-28 海云数据 为终端用户提供能力的开放平台
US10635416B2 (en) * 2018-07-31 2020-04-28 Microsoft Technology Licensing, Llc Property filtering
CN111400162B (zh) * 2019-01-02 2023-04-25 阿里巴巴集团控股有限公司 一种测试方法及测试系统
DE112019006805A5 (de) * 2019-01-31 2021-11-04 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System
CN111857662B (zh) * 2020-07-15 2023-06-30 曹蕤 基于map和接口来描述对象特定构成的程序设计方法
CN111949253B (zh) * 2020-08-07 2023-12-01 抖音视界有限公司 组合idl文件的方法、装置、计算机设备和存储介质
US11036482B1 (en) 2020-12-22 2021-06-15 Temper Systems, Inc. Deriving many idiomatic programming language interfaces
US10963228B1 (en) 2020-12-22 2021-03-30 Temper Systems, Inc. Preventing garbage object accumulation on minimal runtimes
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories
CN117453708A (zh) * 2023-12-25 2024-01-26 成都深瑞同华科技有限公司 一种gis图形与cad图形的双向联动互转方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243605A1 (en) * 1997-03-19 2004-12-02 Microsoft Corporation Establishing relationships between objects based on object interfaces
US20050091671A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US20060004709A1 (en) * 2004-06-07 2006-01-05 Veritas Operating Corporation System and method for providing a programming-language-independent interface for querying file system content
US20060277194A1 (en) * 2005-06-07 2006-12-07 Britt Clinton D Method and system for interface configuration via device-side scripting
TW200805150A (en) * 2005-11-30 2008-01-16 Ibm Digital data processing apparatus having asymmetric hardware multithreading support for different threads

Family Cites Families (151)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097533A (en) 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
JPH0540682A (ja) 1990-06-08 1993-02-19 Internatl Business Mach Corp <Ibm> アトミシテイを有する記憶装置の高可用性耐故障再配置
US5339422A (en) 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
US5964835A (en) 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5594863A (en) 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
US5910180A (en) 1995-11-21 1999-06-08 Diamond Multimedia Systems, Inc. Context virtualizing device driver architecture
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
CA2199675C (en) 1996-05-08 2002-03-26 John C. Goodwin, Iii System and method for managing electronic price label overlays
US6026238A (en) 1997-08-18 2000-02-15 Microsoft Corporatrion Interface conversion modules based upon generalized templates for multiple platform computer systems
US6269431B1 (en) 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6920537B2 (en) 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US20050182828A1 (en) 1999-04-21 2005-08-18 Interactual Technologies, Inc. Platform specific execution
US6745385B1 (en) 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
EP1117033A1 (en) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Dynamic dispatch function
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
JP3562435B2 (ja) 2000-04-12 2004-09-08 日本電気株式会社 コンポーネントの自動生成装置
US7783720B1 (en) * 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6691302B1 (en) 2000-05-31 2004-02-10 Siemens Information & Communications Networks, Inc. Interfacing a service component to a native API
US6643672B1 (en) 2000-07-31 2003-11-04 Hewlett-Packard Development Company, Lp. Method and apparatus for asynchronous file writes in a distributed file system
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US6928555B1 (en) 2000-09-18 2005-08-09 Networks Associates Technology, Inc. Method and apparatus for minimizing file scanning by anti-virus programs
US7574346B2 (en) 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US7065742B1 (en) 2000-10-30 2006-06-20 Microsoft Corporation System and method for dynamically processing declarative language instance data
US7730213B2 (en) 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6993744B2 (en) 2000-12-19 2006-01-31 Tajen Corporation Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
US20020161596A1 (en) 2001-04-30 2002-10-31 Johnson Robert E. System and method for validation of storage device addresses
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
CA2349905A1 (en) 2001-06-07 2002-12-07 Ibm Canada Limited-Ibm Canada Limitee System and method of mapping between software objects and structured language element based documents
US6643612B1 (en) 2001-06-28 2003-11-04 Atrica Ireland Limited Mechanism and protocol for per connection based service level agreement measurement
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7631084B2 (en) 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20040201600A1 (en) 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US7330971B1 (en) 2002-01-11 2008-02-12 Microsoft Corporation Delegated administration of namespace management
US7072915B2 (en) 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
JP2003223350A (ja) 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20030188043A1 (en) 2002-03-27 2003-10-02 Woodall Thomas R. Two layer middleware architecture with an intermediate target independent interface
US7320123B2 (en) 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US7424717B2 (en) 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7219339B1 (en) 2002-10-29 2007-05-15 Cisco Technology, Inc. Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7546607B2 (en) 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7020746B2 (en) 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7197417B2 (en) 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7846023B2 (en) 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7322029B2 (en) 2003-05-08 2008-01-22 American Megatrends, Inc. Method and system for recovering program code in a computer system
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7380235B1 (en) 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US7519951B2 (en) 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US20050091271A1 (en) 2003-10-23 2005-04-28 Kasy Srinivas Systems and methods that schematize audio/video data
US7721254B2 (en) 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7493592B2 (en) 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US20050114832A1 (en) 2003-11-24 2005-05-26 Microsoft Corporation Automatically generating program code from a functional model of software
US7392527B2 (en) 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
GB2409735A (en) 2003-12-30 2005-07-06 Ibm Method and system for change management of interfaces in distributed computer systems
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7694315B2 (en) 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US20050216552A1 (en) 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7707583B2 (en) 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
WO2005114487A2 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Method and apparatus for updating a database using table staging and queued relocation and deletion
US20050268308A1 (en) 2004-05-28 2005-12-01 Nokia Corporation System and method for implementing a general application program interface
US7941402B2 (en) 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US8060856B2 (en) 2004-11-18 2011-11-15 Aol Inc. Native objects accessible by platform neutral API
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060129745A1 (en) 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
US20060161910A1 (en) 2005-01-14 2006-07-20 International Business Machines Corporation Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
US7519713B2 (en) 2005-02-04 2009-04-14 Microsoft Corporation Mapping between object oriented and service oriented representations of a distributed application
US7950023B2 (en) * 2005-02-04 2011-05-24 Microsoft Corporation Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7325007B2 (en) 2005-03-07 2008-01-29 Microsoft Corporation System and method for supporting non-native data types in a database API
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7716661B2 (en) 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
JP4591148B2 (ja) 2005-03-25 2010-12-01 富士ゼロックス株式会社 機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム
US20060287890A1 (en) 2005-06-15 2006-12-21 Vanderbilt University Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems
US7992140B2 (en) 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US20070039010A1 (en) 2005-08-15 2007-02-15 Microsoft Corporation Automatic generation of software code to facilitate interoperability
CN1936853B (zh) 2005-09-22 2010-05-05 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法
KR101198583B1 (ko) 2005-10-12 2012-11-06 한국과학기술원 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
US7716246B2 (en) 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
US7890659B2 (en) 2005-12-15 2011-02-15 Microsoft Corporation Conforming web services to an updated contract
CA2632935C (en) 2005-12-19 2014-02-04 Commvault Systems, Inc. Systems and methods for performing data replication
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8082555B2 (en) 2006-02-21 2011-12-20 Microsoft Corporation Routing calls via reflective interfaces and a proxy
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7620721B2 (en) 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US9081585B1 (en) 2006-03-31 2015-07-14 The Mathworks, Inc. Interfacing a device driver with an application using a virtual driver interface and a strategy
EP1845444B1 (en) 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
US7730351B2 (en) 2006-05-15 2010-06-01 Oracle America, Inc. Per file dirty region logging
JP2007316944A (ja) 2006-05-25 2007-12-06 Toshiba Corp データ処理装置、データ処理方法、およびデータ処理プログラム
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
DE602006019727D1 (de) 2006-09-11 2011-03-03 Software Ag System zur Verwaltung des Lebenszyklus einer dienstorientierten Architektur
US20080077590A1 (en) 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
GB0619147D0 (en) 2006-09-28 2006-11-08 Ibm A method, apparatus or software for managing software component version identifications in a componentised software system
KR101046304B1 (ko) 2006-10-20 2011-07-05 후지쯔 가부시끼가이샤 메모리 장치 및 리프레시 조정 방법
US7840752B2 (en) 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
US7971208B2 (en) 2006-12-01 2011-06-28 Microsoft Corporation Developing layered platform components
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US7956721B2 (en) 2007-01-09 2011-06-07 Homerun Holdings Corporation Power conserving mobile transmitter
CN101051324A (zh) 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
JP2008293218A (ja) 2007-05-23 2008-12-04 Nec Corp ファイル管理システム、ファイル管理方法、ファイル管理プログラム
US20090012932A1 (en) 2007-07-03 2009-01-08 Xeround Systems Ltd. Method and System For Data Storage And Management
US7720800B2 (en) 2007-07-06 2010-05-18 International Business Machines Corporation Method and approach to hosting versioned web services
JP2009020705A (ja) 2007-07-12 2009-01-29 Hitachi Ltd Guiアプリケーション開発支援装置及び開発支援方法
US20090024986A1 (en) 2007-07-19 2009-01-22 Microsoft Corporation Runtime code modification
US8667482B2 (en) 2007-08-10 2014-03-04 Microsoft Corporation Automated application modeling for application virtualization
KR100927442B1 (ko) 2007-08-16 2009-11-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법
US8364683B2 (en) 2007-08-30 2013-01-29 International Business Machines Corporation Importing and reconciling resources from disjoint name spaces to a common namespace
US20090132285A1 (en) 2007-10-31 2009-05-21 Mckesson Information Solutions Llc Methods, computer program products, apparatuses, and systems for interacting with medical data objects
KR101528853B1 (ko) 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8250524B2 (en) 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9058407B2 (en) 2008-01-22 2015-06-16 Oracle International Corporation Persistent multimedia content versioning
EP2088506A1 (en) 2008-02-06 2009-08-12 Software AG Method and system for calling services from a remote client
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5386111B2 (ja) 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
US8484204B2 (en) 2008-08-28 2013-07-09 Microsoft Corporation Dynamic metadata
US9639375B2 (en) 2008-08-28 2017-05-02 Red Hat, Inc. Generation of language bindings for libraries using data from compiler generated debug information
US8595714B1 (en) 2009-03-04 2013-11-26 Amazon Technologies, Inc. User controlled environment updates in server cluster
GB0907171D0 (en) 2009-04-27 2009-06-10 Springsource Ltd Method and apparatus for automatically generating source code files in a storage unit
WO2010135696A1 (en) 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US9075667B2 (en) 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
US8495621B2 (en) 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8539475B2 (en) 2009-09-29 2013-09-17 Oracle America, Inc. API backward compatibility checking
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8983982B2 (en) 2009-12-22 2015-03-17 Bmc Software, Inc. Mechanism for deprecating object oriented data
US8572591B2 (en) 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
US8224780B2 (en) 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9619779B2 (en) 2011-08-26 2017-04-11 Apple Inc. Client-side policy enforcement of developer API use
US20130055291A1 (en) 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US9262183B2 (en) 2012-04-23 2016-02-16 Microsoft Technology Licensing, Llc Self-service composed web APIs
US8954479B2 (en) 2012-06-13 2015-02-10 International Business Machines Corporation End-to-end interoperability and workflows from building architecture design to one or more simulations
US9444899B2 (en) 2012-12-26 2016-09-13 Microsoft Technology Licensing, Llc Use of internet information services logging to collect user information in an asynchronous manner
US8793359B1 (en) 2013-11-25 2014-07-29 Software Ag Systems and/or methods for intelligently detecting API key domains
US9110770B1 (en) 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243605A1 (en) * 1997-03-19 2004-12-02 Microsoft Corporation Establishing relationships between objects based on object interfaces
US20050091671A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US20060004709A1 (en) * 2004-06-07 2006-01-05 Veritas Operating Corporation System and method for providing a programming-language-independent interface for querying file system content
US20060277194A1 (en) * 2005-06-07 2006-12-07 Britt Clinton D Method and system for interface configuration via device-side scripting
TW200805150A (en) * 2005-11-30 2008-01-16 Ibm Digital data processing apparatus having asymmetric hardware multithreading support for different threads

Also Published As

Publication number Publication date
JP2014522063A (ja) 2014-08-28
KR101795844B1 (ko) 2017-11-08
CA2844492A1 (en) 2013-02-14
IN2014CN00797A (zh) 2015-04-03
EP2742420B1 (en) 2020-09-02
MX336195B (es) 2016-01-11
EP2742420A4 (en) 2015-02-11
EP2742420A1 (en) 2014-06-18
CA2844492C (en) 2018-11-20
RU2014104582A (ru) 2015-08-20
BR112014003123B1 (pt) 2021-07-20
WO2013022465A1 (en) 2013-02-14
TW201308209A (zh) 2013-02-16
KR20140057547A (ko) 2014-05-13
US20140325534A1 (en) 2014-10-30
AU2017200899B2 (en) 2017-12-07
AU2011374897B2 (en) 2016-11-10
MX2014001629A (es) 2014-05-28
RU2601198C2 (ru) 2016-10-27
BR112014003123A2 (pt) 2017-02-21
AU2011374897A1 (en) 2014-02-27
US20130042258A1 (en) 2013-02-14
AU2017200899A1 (en) 2017-03-02
CN103718155A (zh) 2014-04-09
TW201609366A (zh) 2016-03-16
US9563487B2 (en) 2017-02-07
CN103718155B (zh) 2017-09-26
US8776094B2 (en) 2014-07-08
JP5933002B2 (ja) 2016-06-08
TWI533217B (zh) 2016-05-11

Similar Documents

Publication Publication Date Title
TWI577539B (zh) 用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
US8201147B2 (en) Generic XAD processing model
US20090320007A1 (en) Local metadata for external components
US9141353B2 (en) Dynamically building locale objects at run-time
Bilgin Mastering Cross-Platform Development with Xamarin
US8661425B1 (en) Method, apparatus, and computer-readable medium for storing data associated with a firmware program
Trætteberg Integrating dialog modeling and domain modeling: the case of diamodl and the eclipse modeling framework
JP2022542007A (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
US7917893B2 (en) Using a system of annotations to generate views and adapters
US8135943B1 (en) Method, apparatus, and computer-readable medium for generating a dispatching function
Gast How to use objects: code and concepts
Ludin Learn BlackBerry 10 App Development: A Cascades-Driven Approach
Campbell Objective-C Recipes: A Problem-Solution Approach
Lavieri Mastering Java 11: Develop modular and secure Java applications using concurrency and advanced JDK libraries
US9792093B2 (en) Dynamically building subsections of locale objects at run-time
Ali iPhone SDK 3 programming: advanced mobile development for Apple iPhone and iPod touch
Lee et al. Runtime Architecture
Gonzalez Preparing to Get to Work

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees