動(dòng)態(tài)調(diào)用521是對(duì)于執(zhí)行包括API引用511的可執(zhí)行代碼的調(diào)用時(shí),屬性512可被訪問。屬性512可指示應(yīng)用作者想要減少對(duì)引用API (例如,API 513或API 518)的可見性。例如,屬性512可指示對(duì)引用API (例如,API 513或API 518)的動(dòng)態(tài)訪問將被阻止。由此,即使庫(kù)作者以其他方式許可對(duì)于一API的動(dòng)態(tài)訪問,應(yīng)用開發(fā)者可應(yīng)用屬性512來(lái)阻止對(duì)該API的動(dòng)態(tài)訪問。
[0080]方法600包括基于以下中的一個(gè)或多個(gè)來(lái)確定對(duì)應(yīng)用編程接口(API)的經(jīng)計(jì)算的可見性:對(duì)應(yīng)用編程接口(API)的運(yùn)行時(shí)默認(rèn)可見性、應(yīng)用到應(yīng)用編程接口(API)的任何屬性以及應(yīng)用到應(yīng)用代碼的引用應(yīng)用編程接口(API)的部分的任何屬性(606)。由此,可見性計(jì)算模塊501可基于針對(duì)API的類型的默認(rèn)可見性(如在默認(rèn)可見性規(guī)則502中定義的)、應(yīng)用到API的任何屬性以及應(yīng)用到引用該API的API引用的任何屬性來(lái)確定對(duì)該API的經(jīng)計(jì)算的可見性522。
[0081]方法600包括根據(jù)經(jīng)計(jì)算的可見性來(lái)向動(dòng)態(tài)調(diào)用提供對(duì)應(yīng)用編程接口(API)的可見性(607)。例如,消費(fèi)者531可被提供對(duì)可執(zhí)行代碼503中被動(dòng)態(tài)調(diào)用的API的可見性522。動(dòng)態(tài)調(diào)用521的結(jié)果524還可被返回到消費(fèi)者531。結(jié)果524可指示對(duì)于被動(dòng)態(tài)調(diào)用的API的動(dòng)態(tài)訪問不被許可。
[0082]在可執(zhí)行代碼503中,引用代碼和API的各種不同的組合是可能的。在一個(gè)實(shí)施例中,動(dòng)態(tài)調(diào)用521使用API引用511來(lái)調(diào)用API 513。在這個(gè)實(shí)施例中,從針對(duì)API類型514的默認(rèn)可見性(例如,如在默認(rèn)可見性規(guī)則502中定義的)、屬性512和屬性516中確定可見性522。在另一實(shí)施例中,動(dòng)態(tài)調(diào)用521使用API引用511來(lái)調(diào)用API 518。在這個(gè)實(shí)施例中,從針對(duì)API類型519的默認(rèn)可見性(例如,如在默認(rèn)可見性規(guī)則502中定義的)和屬性512中確定可見性522。
[0083]在進(jìn)一步實(shí)施例中,動(dòng)態(tài)調(diào)用521使用API引用517來(lái)調(diào)用API 513。在這個(gè)進(jìn)一步實(shí)施例中,從針對(duì)API類型514的默認(rèn)可見性(例如,如在默認(rèn)可見性規(guī)則502中定義的)和屬性516中確定可見性522。在附加的實(shí)施例中,動(dòng)態(tài)調(diào)用521使用API引用517來(lái)調(diào)用API 518。在這個(gè)進(jìn)一步實(shí)施例中,從針對(duì)API類型519的默認(rèn)可見性(例如,如在默認(rèn)可見性規(guī)則502中定義的)中確定可見性522。
[0084]本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在所有方面都應(yīng)被認(rèn)為僅是說(shuō)明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán)利要求書的范圍所涵蓋。
【主權(quán)項(xiàng)】
1.一種在計(jì)算機(jī)系統(tǒng)處用于控制對(duì)于應(yīng)用編程接口(API)的運(yùn)行時(shí)訪問的方法,所述計(jì)算機(jī)系統(tǒng)包括用于開發(fā)包括所述應(yīng)用編程接口(API)的可執(zhí)行代碼的開發(fā)環(huán)境,所述可執(zhí)行代碼用于運(yùn)行在能動(dòng)態(tài)地請(qǐng)求訪問所述應(yīng)用編程接口(API)的運(yùn)行時(shí)環(huán)境中,所述運(yùn)行時(shí)環(huán)境基于應(yīng)用編程接口(API)類型來(lái)向動(dòng)態(tài)訪問請(qǐng)求提供對(duì)應(yīng)用編程接口(API)的默認(rèn)可見性,所述方法包括: 訪問被組合在庫(kù)中的一組應(yīng)用編程接口(API),該組應(yīng)用編程接口(API)包括一個(gè)或多個(gè)公共應(yīng)用編程接口(API)以及一個(gè)或多個(gè)非公共應(yīng)用編程接口(API); 從該組應(yīng)用編程接口(API)中標(biāo)識(shí)針對(duì)其提供給動(dòng)態(tài)訪問請(qǐng)求的所述默認(rèn)可見性要被更改的應(yīng)用編程接口(API);以及 通過將屬性應(yīng)用到所述應(yīng)用編程接口(API)來(lái)將對(duì)所述應(yīng)用編程接口(API)的所述默認(rèn)可見性更改為經(jīng)更改的可見性,所述屬性在運(yùn)行時(shí)向所述運(yùn)行時(shí)環(huán)境指示動(dòng)態(tài)訪問請(qǐng)求要被提供對(duì)所述應(yīng)用編程接口(API)的所述經(jīng)更改的可見性。2.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)應(yīng)用編程接口(API)包括向所述應(yīng)用編程接口(API)的作者展示所述應(yīng)用編程接口(API);以及 其中更改所述應(yīng)用編程接口(API)的所述默認(rèn)可見性包括所述應(yīng)用編程接口(API)的所述作者更改所述應(yīng)用編程接口的所述默認(rèn)可見性。3.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)應(yīng)用編程接口(API)包括標(biāo)識(shí)非公共應(yīng)用編程接口(API),針對(duì)所述非公共應(yīng)用編程接口(API)的默認(rèn)可見性阻止對(duì)所述非公共應(yīng)用編程接口(API)的動(dòng)態(tài)訪問。4.如權(quán)利要求3所述的方法,其特征在于,更改所述應(yīng)用編程接口(API)的所述默認(rèn)可見性包括將一屬性應(yīng)用到所述非公共應(yīng)用編程接口(API),所述屬性更改所述非公共應(yīng)用編程接口(API)的所述默認(rèn)可見性以允許對(duì)所述非公共應(yīng)用編程接口(API)的動(dòng)態(tài)訪問。5.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)應(yīng)用編程接口(API)包括標(biāo)識(shí)公共應(yīng)用編程接口(API),針對(duì)所述公共應(yīng)用編程接口(API)的默認(rèn)可見性允許對(duì)所述公共應(yīng)用編程接口(API)的動(dòng)態(tài)訪問。6.如權(quán)利要求5所述的方法,其特征在于,更改所述應(yīng)用編程接口(API)的所述默認(rèn)可見性包括將屬性應(yīng)用到所述公共應(yīng)用編程接口(API),所述屬性更改所述公共應(yīng)用編程接口(API)的所述默認(rèn)可見性以阻止對(duì)所述公共應(yīng)用編程接口(API)的動(dòng)態(tài)訪問。7.—種在計(jì)算機(jī)系統(tǒng)處用于減少對(duì)可訪問的應(yīng)用編程接口(API)的默認(rèn)可見性的方法,所述計(jì)算機(jī)系統(tǒng)包括用于開發(fā)包括應(yīng)用編程接口(API)的可執(zhí)行代碼的開發(fā)環(huán)境,所述可執(zhí)行代碼用于運(yùn)行在能動(dòng)態(tài)地請(qǐng)求訪問應(yīng)用編程接口(API)的運(yùn)行時(shí)環(huán)境中,所述運(yùn)行時(shí)環(huán)境具有對(duì)所述可訪問的應(yīng)用編程接口(API)的默認(rèn)可見性,所述方法包括: 訪問一應(yīng)用的應(yīng)用代碼,所述應(yīng)用代碼引用被組合在庫(kù)中的一個(gè)或多個(gè)可訪問的應(yīng)用編程接口(API); 標(biāo)識(shí)在所述應(yīng)用代碼中被引用的可訪問的應(yīng)用編程接口(API),所述可訪問的應(yīng)用編程接口(API)選自所述一個(gè)或多個(gè)可訪問的應(yīng)用編程接口(API); 確定所述可訪問的應(yīng)用編程接口(API)在運(yùn)行時(shí)將不被動(dòng)態(tài)地訪問; 通過將一屬性應(yīng)用到所述應(yīng)用代碼的引用所述可訪問的應(yīng)用編程接口(API)的一部分來(lái)將對(duì)所述可訪問的應(yīng)用編程接口(API)的所述默認(rèn)可見性減少為經(jīng)減少的可見性,所述屬性在運(yùn)行時(shí)向所述運(yùn)行時(shí)環(huán)境指示動(dòng)態(tài)訪問請(qǐng)求要被提供對(duì)所述可訪問的應(yīng)用編程接口(API)的所述經(jīng)減少的可見性。8.如權(quán)利要求7所述的方法,其特征在于,將屬性應(yīng)用到所述應(yīng)用代碼的引用所述可訪問的應(yīng)用編程接口(API)的一部分包括所述應(yīng)用代碼的作者將屬性應(yīng)用到所述應(yīng)用代碼的引用所述可訪問的應(yīng)用編程接口(API)的一部分。9.如權(quán)利要求7所述的方法,其特征在于,將屬性應(yīng)用到所述應(yīng)用代碼的引用所述可訪問的應(yīng)用編程接口(API)的一部分包括將屬性應(yīng)用到以下之一:所述應(yīng)用代碼的引用公共API的一部分或所述應(yīng)用代碼的引用非公共API的一部分。10.—種在計(jì)算機(jī)系統(tǒng)處向消費(fèi)者提供對(duì)應(yīng)用編程接口(API)的指定可見性的方法,所述計(jì)算機(jī)系統(tǒng)包括能請(qǐng)求對(duì)應(yīng)用編程接口(API)的動(dòng)態(tài)訪問的運(yùn)行時(shí)環(huán)境,所述運(yùn)行時(shí)環(huán)境基于應(yīng)用編程接口(API)類型向動(dòng)態(tài)訪問請(qǐng)求提供對(duì)應(yīng)用編程接口(API)的默認(rèn)可見性,所述方法包括: 在所述運(yùn)行時(shí)環(huán)境中執(zhí)行可執(zhí)行代碼,所述可執(zhí)行代碼是從應(yīng)用代碼中導(dǎo)出的; 在所述可執(zhí)行代碼的執(zhí)行期間: 接收來(lái)自消費(fèi)者的對(duì)執(zhí)行所述可執(zhí)行代碼的一部分的動(dòng)態(tài)調(diào)用,所述可執(zhí)行代碼的該部分從所述應(yīng)用代碼的引用庫(kù)內(nèi)的應(yīng)用編程接口(API)的一部分中導(dǎo)出; 基于所述應(yīng)用編程接口(API)的類型來(lái)訪問對(duì)所述應(yīng)用編程接口(API)的運(yùn)行時(shí)默認(rèn)可見性; 訪問應(yīng)用到所述應(yīng)用編程接口(API)的任何屬性,應(yīng)用到所述應(yīng)用編程接口(API)的屬性指示應(yīng)用編程接口(API)的作者想要更改對(duì)所述應(yīng)用編程接口(API)的所述運(yùn)行時(shí)默認(rèn)可見性; 訪問應(yīng)用到所述應(yīng)用代碼的引用所述應(yīng)用編程接口(API)的該部分的任何屬性,應(yīng)用到所述應(yīng)用代碼的該部分的屬性指示所述應(yīng)用代碼的作者想要將對(duì)應(yīng)用編程接口(API)的可見性提供到比如被應(yīng)用到所述應(yīng)用編程接口(API)的任何屬性所更改的運(yùn)行時(shí)默認(rèn)可見性所指示的更輕的程度; 基于以下中的一個(gè)或多個(gè)來(lái)確定對(duì)所述應(yīng)用編程接口(API)的經(jīng)計(jì)算的可見性:對(duì)所述應(yīng)用編程接口(API)的運(yùn)行時(shí)默認(rèn)可見性、應(yīng)用到所述應(yīng)用編程接口(API)的任何屬性以及應(yīng)用到所述應(yīng)用代碼的引用所述應(yīng)用編程接口(API)的該部分的任何屬性;以及 根據(jù)所述經(jīng)計(jì)算的可見性來(lái)向所述動(dòng)態(tài)調(diào)用提供對(duì)所述應(yīng)用編程接口(API)的可見性。
【專利摘要】本發(fā)明涉及用于控制對(duì)應(yīng)用編程接口的運(yùn)行時(shí)訪問的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的實(shí)施例允許庫(kù)開發(fā)者更準(zhǔn)確且容易地控制他們的庫(kù)的API中的哪些可被動(dòng)態(tài)地調(diào)用。由此,他們進(jìn)行服務(wù)和版本化的負(fù)擔(dān)可被更適當(dāng)?shù)乜刂?。此外,?yīng)用開發(fā)者可控制這樣的API中的哪些進(jìn)一步從動(dòng)態(tài)調(diào)用場(chǎng)景中排除以最小化運(yùn)行時(shí)支持開銷(例如,阻止元數(shù)據(jù)的生成)。
【IPC分類】G06F9/44
【公開號(hào)】CN105229603
【申請(qǐng)?zhí)枴緾N201480022956
【發(fā)明人】M·特羅芬, P·杜斯德, R·馬丁, J·L·昂比, M·斯特雷霍斯基, D·C·賴頓, A·卡納莫里, F·M·哈納
【申請(qǐng)人】微軟技術(shù)許可有限責(zé)任公司
【公開日】2016年1月6日
【申請(qǐng)日】2014年4月21日
【公告號(hào)】CA2907904A1, EP2989539A1, US8990839, US20140317641, US20150169387, WO2014176137A1