欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用內(nèi)的帶外框架庫的制作方法

文檔序號:9493654閱讀:262來源:國知局
應(yīng)用內(nèi)的帶外框架庫的制作方法【專利說明】應(yīng)用內(nèi)的帶外框架庫[0001]背景[0002]-些設(shè)備不包含軟件,而一些設(shè)備僅包含在安裝之后極少(即便有)修改的簡單的嵌入式軟件。但是如今使用的許多不同設(shè)備一一諸如僅舉數(shù)例:智能電話、平板計算機、膝上型計算機、以及當(dāng)代汽車一一包含復(fù)雜的軟件,所述軟件包括由一個或多個應(yīng)用使用的獨立的可更新庫。在一些軟件開發(fā)環(huán)境中,這些軟件庫中的一些或全部是框架的一部分。一些商業(yè)上可用的軟件框架包括Java?和JavaScript?框架(Oracle美國公司的商標(biāo))、Oracle⑩應(yīng)用開發(fā)框架(Oracle美國公司的商標(biāo))、各種模型-視圖-控制器(MVC)框架、各種web應(yīng)用框架、以及廣泛使用的Microsoft?.NET?框架(微軟公司的商標(biāo))。[0003]使用可分開更新的庫提升了代碼重用,幫助限制改變源代碼時需要的重編譯,并且?guī)椭凑帐勾笮统绦蚋子陂_發(fā)和維護的方式組織大型程序。但是在應(yīng)用被調(diào)用時遇到庫的不同版本的可能性也增加了挑戰(zhàn)。由于作為組來更新框架庫的已建立實踐、以及由于在一應(yīng)用中使用的不同庫通常由不同供應(yīng)商提供以及更新的事實,這些挑戰(zhàn)被復(fù)雜化。[0004]概沭[0005]計算領(lǐng)域的技術(shù)人員將理解,本文描述的實施例中的一些涉及在選擇要加載的軟件庫的版本以支持給定操作上下文內(nèi)的應(yīng)用時提供靈活性和確定性兩者的技術(shù)問題。還要理解,一些實施例涉及高效且準(zhǔn)確地確定已知對安全漏洞脆弱的庫版本是否已在給定操作上下文中加載的技術(shù)問題。在仔細審閱本文檔之后,本領(lǐng)域技術(shù)人員將知道,本文描述的實施例旨在且被約束為作為一個或多個計算系統(tǒng)內(nèi)的計算組件(即,通過執(zhí)行軟件指令)而存在并操作。相應(yīng)地,各實施例不能被非計算項實際取代,所述非計算項諸如人類的腦力過程,如僅僅是抽象或者如所傳播的信號本身。[0006]在計算系統(tǒng)中,當(dāng)應(yīng)用程序引用軟件庫時,綁定器選擇要加載的庫的版本以支持該應(yīng)用。本文描述的一些實施例提供了包括隱式覆蓋(override)部分的綁定器。隱式覆蓋在本文中有時被稱為"applocal(應(yīng)用本地)"、"application-local(應(yīng)用本地)"或"AppLocal"。[0007]在一些實施例中,存儲器與處理器可操作地通信,且駐留于存儲器中的綁定器由隱式覆蓋代碼增強。綁定器被配置成與處理器和存儲器交互來確定所引用的匯編件的哪個版本將向加載器標(biāo)識以加載以支持應(yīng)用的執(zhí)行。術(shù)語"庫"和"匯編件"在本文中可互換地使用以描述可個體地版本化的計算組件。具有一版本的給定匯編件可包括具有其自己的相應(yīng)版本的其他匯編件和/或以其他方式依賴于所述其他匯編件。[0008]在一些實施例中,隱式覆蓋代碼包括用于搜索至少一個因匯編件而異的位置中的"隱式版本(implicitjersion)"的代碼、用于在找到該隱式版本之后將該隱式版本與某個其他版本進行比較的代碼、以及用于在該隱式版本大于所述其他版本時用該隱式版本有條件地覆蓋所述其他版本的代碼。版本號通常隨時間增大,所以在匯編件的版本X比該匯編件的另一版本Y新時,版本X通常"大于"版本Y。[0009]在一些實施例中,在隱式覆蓋期間搜索的該一個或多個因匯編件而異的位置包括以下的至少一項:具有與該匯編件共用的名稱以及位于該應(yīng)用的目錄內(nèi)的文件、該應(yīng)用的由搜索約定指定的子目錄、在目錄路徑列表中指定的位置,該列表位于該應(yīng)用的目錄中、在文件名列表中指定的位置(該列表位于該應(yīng)用的目錄中)。[0010]在一些實施例中,綁定器包括框架統(tǒng)一部分,該框架統(tǒng)一部分被饋送到隱式覆蓋部分中??蚣芙y(tǒng)一本身對于計算領(lǐng)域技術(shù)人員而言很熟悉??蚣芙y(tǒng)一例如與Microsoft?.NET?框架(微軟公司的商標(biāo))一起使用以幫助確保相互一致的匯編件集合被加載。框架中的匯編件通常作為集合被版本化并發(fā)布。[0011]在本上下文中,一些實施例提供了具有隱式覆蓋代碼并且還包括框架統(tǒng)一代碼的綁定器。利用框架統(tǒng)一代碼,綁定器被配置成檢查匯編件是否在耦合到受管運行時的匯編件的預(yù)定義框架中??蚣芙y(tǒng)一代碼包括用于將所請求版本(requested_version)與統(tǒng)一版本(unification_version)進行比較并且在統(tǒng)一版本大于所請求版本且該匯編件位于該預(yù)定義框架中時用統(tǒng)一版本有條件地覆蓋所請求版本。經(jīng)增強的綁定器被配置成調(diào)用框架統(tǒng)一代碼來獲得統(tǒng)一階段結(jié)果,并隨后用該統(tǒng)一階段結(jié)果調(diào)用該隱式覆蓋代碼來獲得隱式覆蓋階段結(jié)果。[0012]在一些實施例中,綁定器包括綁定重定向部分,該綁定重定向部分由該隱式覆蓋部分饋送。綁定重定向本身對于計算領(lǐng)域技術(shù)人員而言很熟悉。XML綁定重定向命令以及發(fā)布者策略語句形式的綁定重定向可在例如使用Microsoft?;.NET?框架(微軟公司的商標(biāo))的計算環(huán)境中找到。在熟悉的用途中,綁定重定向被用來修改框架統(tǒng)一的(一個或多個)結(jié)果。然而,在本文描述的一些實施例中,綁定重定向修改(一個或多個)隱式覆蓋結(jié)果。即,在一些實施例中,隱式覆蓋計算被注入到框架統(tǒng)一階段和綁定重定向階段之間。[0013]在一些實施例中,用隱式覆蓋代碼增強的綁定器還包括被配置成檢查綁定重定向命令的綁定重定向代碼。綁定重定向代碼包括用于響應(yīng)于綁定重定向命令來覆蓋隱式版本的代碼,且綁定器被配置成在調(diào)用隱式覆蓋代碼之后調(diào)用綁定重定向代碼。在一些實施例中,用隱式覆蓋代碼增強的綁定器還包括框架統(tǒng)一代碼和隱式覆蓋代碼兩者。[0014]-些實施例的特征在于隱式覆蓋階段和綁定重定向階段之間的一個或多個差別。在一些實施例中,隱式版本不引述顯式范圍,而綁定重定向則引述:如果當(dāng)前選擇的版本在范圍X-Y中,則轉(zhuǎn)而使用版本Z。在一些實施例中,隱式版本在該應(yīng)用的配置文件之外被找至IJ,但是綁定重定向在該配置文件內(nèi)被指定。在一些實施例中,隱式版本由該匯編件隱式地指定而無需XML聲明,而綁定重定向由XML聲明指定。[0015]-些實施例的特征在于隱式覆蓋階段和框架統(tǒng)一階段之間的差別。具體而言,隱式版本隨著個體匯編件被更新,而統(tǒng)一版本隨著匯編件的框架被更新。使匯編件成為帶外匯編件(不限于隨框架更新的匯編件)允許該匯編件的更頻繁的更新??蚣芨峦员葌€體匯編件的開發(fā)者有時偏好的間隔明顯更長的間隔發(fā)生,但是這種不方便性被框架成員的益處(諸如框架匯編件的廣泛兼容性測試)蓋過。[0016]上面標(biāo)識的增強的綁定器變種幫助在選擇要加載的軟件庫的版本以支持給定操作上下文中的應(yīng)用時提供靈活性和確定性。該綁定器對操作上下文的各方面做出響應(yīng),諸如操作上下文的表示框架統(tǒng)一水平的統(tǒng)一版本,操作上下文的匯編件應(yīng)當(dāng)被當(dāng)作關(guān)于框架在帶外來對待的applocal指示,以及操作上下文的在應(yīng)用的配置文件、機器配置、和/或發(fā)布者策略中的"最終字"綁定命令。[0017]選擇要加載哪個匯編件版本的綁定器通常與定位和加載所選擇的版本的匯編器代碼的加載器一起緊密工作。具體而言,加載器可確定該綁定器所選擇的匯編件版本不應(yīng)當(dāng)被加載,因為該版本的匯編件代碼具有已知安全漏洞。知道所關(guān)心的匯編件版本是否已經(jīng)被審查可能是有用的。一些實施例使用一匯編件版本先前已在給定操作上下文中被加載的事實作為該匯編件版本不具有已知安全漏洞并且因此可被再次安全加載的指示一一其已經(jīng)被審查過了。給定操作上下文包括配置有軟件和其他數(shù)據(jù)的給定機器或給定機器集合。[0018]在一些實施例中,帶外元數(shù)據(jù)條目被更新服務(wù)用來確定匯編件的脆弱版本是否曾經(jīng)在該操作上下文中被加載。該帶外元數(shù)據(jù)條目在本文中有時被非正式稱為"面包肩"。該元數(shù)據(jù)條目可被實現(xiàn)為注冊表鍵、文件系統(tǒng)日志條目或其他日志條目、樹或列表中的元素,和/或通過使用適用于本文描述的用途的其他熟悉的機制。[0019]具有app-local-enhanced(應(yīng)用-本地-增強)的綁定器的一些實施例在匯編件被加載時放置將該匯編件標(biāo)識為帶外匯編件的面包肩。面包肩放置可基于例如已知帶外匯編件的列表,或者匯編件的帶外服務(wù)屬性。在一些情況下,服務(wù)庫放置面包肩。在一些情況下,應(yīng)用安裝包放置面包肩。在一些實施例中,脆弱匯編件列表和帶外匯編件列表中的一個或兩個可通過服務(wù)(servicing)來打補丁。[0020]更正式地,一些實施例包括先前已在給定操作上下文中加載至少一次的匯編件。帶外元數(shù)據(jù)的集合駐留于存儲器中。該帶外元數(shù)據(jù)集合包括針對先前加載的匯編件的條目。存儲器還包括以下各項中的至少一者:(a)被配置成響應(yīng)于在匯編件先前被加載時該匯編件至少部分匹配已知帶外匯編件的列表而將該條目放置在該集合中的帶外匯編件代碼,(b)該先前加載的匯編件的帶外服務(wù)屬性。在一些實施例中,該存儲器包括服務(wù)庫,該服務(wù)庫包括被配置成將該條目放置在該集合中的代碼。[0021]從規(guī)程角度,或從被配置的存儲介質(zhì)(如上所述,其不是所傳播的信號本身)的角度,一些實施例導(dǎo)致用于確定所請求匯編件的哪個版本將向加載器標(biāo)識以加載以支持應(yīng)用的執(zhí)行的技術(shù)過程的計算執(zhí)行。在一些實施例中,該過程包括尋找在因匯編件而異的位置中的隱式版本,在找到隱式版本之后將該隱式版本與另一版本進行比較,以及在該隱式版本大于該另一版本時用該隱式版本來覆蓋該另一版本。[0022]在一些實施例中,該過程進一步包括執(zhí)行所請求的匯編件的框架統(tǒng)一,且該框架統(tǒng)一產(chǎn)生要與該隱式版本進行比較的該另一版本。在一些實施例中,該過程進一步包括執(zhí)行所請求的匯編件的綁定重定向,且該綁定重定向覆蓋該隱式版本。一些實施例包括框架統(tǒng)一、隱式覆蓋、以及綁定重定向。[0023]-些實施例執(zhí)行一個或多個步驟來放置帶外元數(shù)據(jù)條目。條目放置包括創(chuàng)建、復(fù)制、或更新數(shù)據(jù)并將該數(shù)據(jù)放在該帶外元數(shù)據(jù)集合中。在一些實施例中,即使在匯編件被列入對安全漏洞脆弱的黑名單中時,針對一匯編件版本的帶外元數(shù)據(jù)條目也被放置。針對一匯編件版本的該帶外元數(shù)據(jù)條目被針對正被加載的版本放置,即,在所有綁定階段完成之后版本才被選擇。[0024]該帶外元數(shù)據(jù)條目放置響應(yīng)于該匯編件為帶外匯編件的識別而進行。該識別可按各種方式來實現(xiàn),諸如(a)將該匯編件與已知帶外匯編件的列表至少部分匹配,并且作為響應(yīng)將針對該匯編件的條目放置在該計算機系統(tǒng)上的元數(shù)據(jù)集合中;(b)在該匯編件中定位帶外服務(wù)屬性,并且作為響應(yīng)將針對該匯編件的條目放置在該計算機系統(tǒng)上的元數(shù)據(jù)集合中;和/或(c)向該計算機系統(tǒng)提供服務(wù)包,且作為應(yīng)用該服務(wù)包的一部分將針對該匯編件的條目放置在該計算機系統(tǒng)上的元數(shù)據(jù)集合中。[0025]在一些實施例中,加載器將咨詢脆弱匯編件身份的排除名單,并且如果所加載的匯編件匹配該排除名單中的條目,則該加載將被強行失敗。更正式地,在一些實施例中,加載器過程沒有找到該匯編件先前在給定機器上被加載的指示,確定該匯編件對安全漏洞是脆弱的,并且響應(yīng)于該確定而使加載該匯編件失敗。在沒有有意迫使加載失敗的情況下,加載正常情況下將已經(jīng)成功。[0026]所給出的示例只是說明性的。本概述并不旨在標(biāo)識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。相反地,提供本【
發(fā)明內(nèi)容】是為了以簡化的形式介紹將在以下【具體實施方式】中進一步描述的一些技術(shù)概念。本發(fā)明由權(quán)利要求書限定,在本【
發(fā)明內(nèi)容】與權(quán)利要求書有沖突的情況下,應(yīng)該以權(quán)利要求書為準(zhǔn)。[0027]附圖簡沐[0028]將參考附圖給出更具體的描述。這些附圖只示出了選定的方面,且因此不完全確定覆蓋或范圍。[0029]圖1是示出具有至少一個處理器和至少一個存儲器的計算機系統(tǒng)并且還示出經(jīng)配置的存儲介質(zhì)(而不僅僅是信號)實施例的框圖,該至少一個處理器和至少一個存儲器在用于綁定和加載應(yīng)用程序的匯編件和操作環(huán)境中可能存在于多個網(wǎng)絡(luò)節(jié)點上的其他項的軟件的控制下彼此交互;[0030]圖2是示出在示例架構(gòu)中的增強的綁定和帶外匯編件管理的各方面的框圖;[0031]圖3是示出一些過程的步驟和經(jīng)配置的存儲介質(zhì)實施例的流程圖;[0032]圖4是進一步示出某一過程的步驟和經(jīng)配置的存儲介質(zhì)實施例的流程圖,其集中于綁定;以及[0033]圖5是進一步示出某一過程的步驟和經(jīng)配置的存儲介質(zhì)實施例的流程圖,其集中于帶外匯編件管理。[0034]詳細描沐[0035]概覽[0036]在一些當(dāng)前軟件分發(fā)模型(諸如當(dāng)前的Microsoft?.NET?分發(fā)模型(微軟公司的商標(biāo))),框架庫被集中式安裝并在機器范圍內(nèi)共享。匯編件綁定器遵從一策略來從中心位置,諸如全球匯編件高速緩存(GAC),定位這些框架匯編件。盡管此分發(fā)模型具有優(yōu)點且被廣泛使用,然而它也提出一些挑戰(zhàn)。個體框架組件被迫等待中央發(fā)貨工具(例如,重分發(fā)件(redistributables)、平臺更當(dāng)前第1頁1 2 3 4 5 6 
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大连市| 依兰县| 池州市| 利辛县| 胶南市| 焉耆| 深水埗区| 泽库县| 西华县| 南溪县| 临泽县| 辉南县| 松溪县| 兴义市| 黄陵县| 阿拉善右旗| 盈江县| 嘉峪关市| 古蔺县| 孟连| 泰安市| 三河市| 万全县| 鄂尔多斯市| 辽中县| 凤庆县| 云浮市| 韶关市| 偃师市| 岳阳市| 普定县| 白山市| 朝阳区| 息烽县| 额尔古纳市| 古浪县| 勃利县| 永宁县| 区。| 池州市| 万宁市|