專利名稱:用于計算機平臺的編程接口的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件以及此類軟件的開發(fā),尤其涉及一種方便應(yīng)用程序和計算機硬件使用軟件平臺的編程接口。
背景技術(shù):
在很久以前,計算機軟件被分類成“操作系統(tǒng)”軟件或“應(yīng)用”軟件。廣泛而言,應(yīng)用是要為計算機用戶執(zhí)行具體任務(wù)的軟件,任務(wù)如解數(shù)學(xué)方程或支持文字處理。操作系統(tǒng)是管理并控制計算機硬件的軟件。操作系統(tǒng)的目標(biāo)是令計算機資源對應(yīng)用編程者可用,而同時隱藏實際控制硬件所必需的復(fù)雜性。
操作系統(tǒng)通過統(tǒng)稱為應(yīng)用程序接口或API的函數(shù)令資源可用。術(shù)語API也參考這些函數(shù)的單獨一個來使用。這些函數(shù)通常被按照它們向應(yīng)用編程者提供哪種資源或服務(wù)來分組。應(yīng)用軟件通過調(diào)用個別的API函數(shù)來請求資源。API函數(shù)也作為一種手段使操作系統(tǒng)所提供的消息和信息中繼轉(zhuǎn)回應(yīng)用程序軟件。
除硬件中的變化之外,推動操作系統(tǒng)軟件發(fā)展的另一因素是簡化并加快應(yīng)用軟件開發(fā)的期望。應(yīng)用軟件開發(fā)可能是一個令人沮喪的任務(wù),它有時候需要幾年的開發(fā)時間使用上百萬行代碼來創(chuàng)建復(fù)雜的程序。對于諸如Microsoft Windows操作系統(tǒng)的各種版本等流行的操作系統(tǒng),應(yīng)用軟件開發(fā)者每年書寫使用該操作系統(tǒng)的上千種不同的應(yīng)用。需要一種一致且可用的操作系統(tǒng)基礎(chǔ)來支持如此多的不同應(yīng)用開發(fā)者。
通??梢酝ㄟ^令操作系統(tǒng)更復(fù)雜來將應(yīng)用軟件的開發(fā)變得更簡單。即,如果一個函數(shù)對若干不同的應(yīng)用程序有用,則一次性書寫這一函數(shù)包括在操作系統(tǒng)中要比讓許多軟件開發(fā)者多次書寫它包括在許多不同的應(yīng)用中更好。以這一方式,如果操作系統(tǒng)支持許多應(yīng)用所需要的較大范圍的公用功能,則可以達到應(yīng)用軟件開發(fā)成本和時間的顯著節(jié)省。
無論在操作系統(tǒng)和應(yīng)用軟件之間如何劃線,很清楚,對于有用的操作系統(tǒng)而言,操作系統(tǒng)和計算機硬件以及應(yīng)用軟件之間的API就像操作系統(tǒng)本身的有效內(nèi)部操作一樣重要。
當(dāng)開發(fā)應(yīng)用程序時,開發(fā)者使用各種工具來生成圖形項目和其它內(nèi)容。有另外的工具可用來排列要顯示或呈現(xiàn)的圖形項目和其它數(shù)據(jù)。這些工具通常由不同的實體或不同的工具開發(fā)者創(chuàng)建。結(jié)果,這些工具不提供一致的編程環(huán)境。由此,使用這些不同工具的開發(fā)者需要學(xué)習(xí)如何使用每一工具并嘗試令它們相互通信。這些活動可能是乏味且耗時的,從手頭上的實際開發(fā)任務(wù)中奪走了時間。
在過去的幾年中,因特網(wǎng)的全球使用以及一般性的網(wǎng)絡(luò)技術(shù)已經(jīng)改變了計算機軟件開發(fā)者的前景。傳統(tǒng)地,軟件開發(fā)者把注意力集中在用于獨立臺式計算機或通過局域網(wǎng)(LAN)連接至有限數(shù)量的其它計算機的基于LAN的計算機的單點軟件(single-site)應(yīng)用。這類軟件應(yīng)用通常被稱為“收縮包裝(shrink wrapped)”產(chǎn)品,因為這些軟件以收縮包裝包交易且銷售。應(yīng)用使用較定義好了的API來訪問計算機的底層操作系統(tǒng)。
隨著因特網(wǎng)的發(fā)展并獲得普遍接受,業(yè)界開始認(rèn)識到在萬維網(wǎng)(或簡稱web)的各種站點上主存(hosting)應(yīng)用程序的威力。在網(wǎng)絡(luò)化世界中,來自任何地方的客戶機能夠向主存于不同位置的基于服務(wù)器的應(yīng)用提交請求,并在零點幾秒內(nèi)接收到響應(yīng)。然而,這些web應(yīng)用通常使用最初為獨立的計算機器或本地網(wǎng)絡(luò)化的計算機開發(fā)的同一操作系統(tǒng)平臺來開發(fā)。不幸的是,在一些情況下,這些應(yīng)用不能充分地轉(zhuǎn)移到分布式計算模式。其基礎(chǔ)平臺的構(gòu)建完全不是在支持無限數(shù)量的相互連接的計算機的觀念上進行的。
為了適應(yīng)向由因特網(wǎng)引進的分布式計算環(huán)境的轉(zhuǎn)移,微軟公司開發(fā)了一種網(wǎng)絡(luò)軟件平臺,稱為“.NET”框架(讀作“點Net”)。Microsoft.NET是用于連接人、信息、系統(tǒng)和設(shè)備的軟件。該平臺允許開發(fā)者創(chuàng)建在因特網(wǎng)上執(zhí)行的web服務(wù)。這一動態(tài)轉(zhuǎn)移被伴之以微軟的.NETTM框架的一組API函數(shù)。
由于.NETTM框架的使用變得越來越普遍,確定了提高平臺的效率和/或性能的方法。發(fā)明人開發(fā)了一組獨特的編程接口函數(shù)來允許這些提高的效率和/或性能。
發(fā)明內(nèi)容
一種編程接口,如API,提供了用于生成應(yīng)用、文檔、媒體演示和其它內(nèi)容的函數(shù)。這些函數(shù)允許開發(fā)者從操作系統(tǒng)、對象模型服務(wù)或其它系統(tǒng)或服務(wù)獲取服務(wù)。在一個實施例中,該函數(shù)允許開發(fā)者生成圖形用戶界面。
貫穿附圖,相同的標(biāo)號標(biāo)識相同的特征。
圖1示出了在其中客戶機使用常規(guī)協(xié)議通過因特網(wǎng)訪問web服務(wù)的網(wǎng)絡(luò)體系結(jié)構(gòu)。
圖2是一種包括應(yīng)用程序接口(API)的用于網(wǎng)絡(luò)平臺的軟件體系結(jié)構(gòu)的框圖。
圖3是該API支持的演示子系統(tǒng)以及各種API函數(shù)的函數(shù)類的框圖。
圖4是可執(zhí)行該軟件體系結(jié)構(gòu)的所有或部分的示例性計算機的框圖。
圖5、6、7、8、9、10、11、12、13、14、15和16示出了編程接口的各種示例實現(xiàn)。
具體實施例方式
本揭示著眼于用于開發(fā)者可在其上構(gòu)建web應(yīng)用和服務(wù)的網(wǎng)絡(luò)平臺的編程接口,如應(yīng)用程序接口(API)。更具體地,描述了用于使用諸如由微軟公司創(chuàng)建的.NETTM框架等網(wǎng)絡(luò)平臺的操作系統(tǒng)的示例性API。.NETTM框架是用于在分布式計算環(huán)境中實現(xiàn)的web服務(wù)和web應(yīng)用的軟件平臺。它代表下一代因特網(wǎng)計算,使用開放通信標(biāo)準(zhǔn)以在協(xié)作執(zhí)行具體任務(wù)的松耦合web服務(wù)中進行通信。
在描述的實現(xiàn)中,網(wǎng)絡(luò)平臺使用XML(可擴充標(biāo)記語言),它是一種描述數(shù)據(jù)的開放標(biāo)準(zhǔn)。XML由萬維網(wǎng)聯(lián)盟(W3C)管理。XML用于定義web頁和商業(yè)對商業(yè)文檔中的數(shù)據(jù)元素。XML使用一種與HTML類似的標(biāo)簽結(jié)構(gòu);然而,HTML定義了如何顯示元素,而XML定義了那些元素包含什么。HTML使用預(yù)定義的標(biāo)簽,而XML允許由頁面的開發(fā)者定義標(biāo)簽。由此,實際上可以標(biāo)識任意的數(shù)據(jù)項,允許web頁起到與數(shù)據(jù)庫記錄一樣的作用。通過使用XML和其它開放協(xié)議,如簡單對象訪問協(xié)議(SOAP),網(wǎng)絡(luò)平臺允許集成可針對用戶的需求量身定做的大范圍的服務(wù)。盡管結(jié)合XML和其它開放標(biāo)準(zhǔn)描述了本發(fā)明的實施例,這對本發(fā)明的操作不是必需的。其它等效可行的技術(shù)足以實現(xiàn)此處所描述的本發(fā)明。
如本發(fā)明所使用的,短語“應(yīng)用程序接口”或API包括采用方法或函數(shù)調(diào)用以及遠程調(diào)用(如,代理、存根關(guān)系)和SOAP/XML調(diào)用的傳統(tǒng)接口。
示例性網(wǎng)絡(luò)環(huán)境圖1示出了可以在其中實現(xiàn)諸如.NETTM框架等網(wǎng)絡(luò)平臺的網(wǎng)絡(luò)環(huán)境100。網(wǎng)絡(luò)環(huán)境100包括代表性web服務(wù)102(1),…,102(N),它們提供了可通過網(wǎng)絡(luò)104(如因特網(wǎng))訪問的服務(wù)。web服務(wù),一般引用為102,是可再使用且可在網(wǎng)絡(luò)104上在程序上交互的可編程應(yīng)用組件,一般通過業(yè)界標(biāo)準(zhǔn)web協(xié)議,如XML、SOAP、WAP(無線應(yīng)用協(xié)議)、HTTP(超文本傳輸協(xié)議)以及SMTP(簡單郵件傳輸協(xié)議)來實現(xiàn),盡管可以也使用通過網(wǎng)絡(luò)與web服務(wù)進行交互的其它手段,如遠程過程調(diào)用(RPC)或?qū)ο蟠沓绦蝾愋图夹g(shù)。web服務(wù)可以是自描述性的,并通常按照消息的格式和排序來定義。
web服務(wù)102可由其它服務(wù)(如由通信鏈路106所表示的)或軟件應(yīng)用,如web應(yīng)用110(如由通信鏈路112和114所表示的)直接訪問。所示每一web服務(wù)102包括執(zhí)行軟件來處理對具體服務(wù)的請求的一個或多個服務(wù)器。這類服務(wù)通常維護儲存著要向請求者供回的信息的數(shù)據(jù)庫。web服務(wù)可以被配置成執(zhí)行各種不同的服務(wù)的任一種。web服務(wù)的示例包括登錄核實、通知、數(shù)據(jù)庫存儲、股票報價、位置目錄、映射、音樂、電子錢包、日歷/日程安排、電話清單、新聞和信息、游戲、票務(wù)等等。web服務(wù)可以彼此組合,并可與其它應(yīng)用組合來構(gòu)建智能交互式體驗。
網(wǎng)絡(luò)環(huán)境100也包括代表性客戶機裝置120(1)、120(2)、120(3)、120(4)、…、120(M),它們使用web服務(wù)102(如由通信鏈路122所表示的)和/或web應(yīng)用110(如由通信鏈路124、126和128所表示的)??蛻魴C也可使用標(biāo)準(zhǔn)協(xié)議相互通信,如由客戶機120(3)和120(4)之間的示例性XML鏈接130所表示的。
客戶機裝置,通常被引用為標(biāo)號120,可以以許多不同的方式來實現(xiàn)??赡艿目蛻魴C實現(xiàn)的示例包括但不限于,便攜式計算機、固定計算機、圖形輸入板PC、電視機/機頂盒、無線通信裝置、個人數(shù)字助理、游戲控制臺、打印機、復(fù)印機以及其它智能裝置。
web應(yīng)用110是設(shè)計成在網(wǎng)絡(luò)平臺上運行且當(dāng)處理并服務(wù)來自客戶機120的請求時可使用web服務(wù)102的應(yīng)用。web應(yīng)用110包括運行在編程框架132之上的一個或多個軟件應(yīng)用130,在一個或多個服務(wù)器134或其它計算機系統(tǒng)上執(zhí)行。注意,web應(yīng)用110的一部分可實際上駐留在一個或多個客戶機120上。可選地,web應(yīng)用110可與客戶機120上的其它軟件協(xié)調(diào)以實際完成其任務(wù)。
編程框架132是支持由應(yīng)用開發(fā)者開發(fā)的應(yīng)用和服務(wù)的結(jié)構(gòu)。它通過支持多語言而準(zhǔn)許多語言開發(fā)和無縫集成。它支持開放協(xié)議,如SOAP,并封裝了底層操作系統(tǒng)和對象模型服務(wù)。該框架為多編程語言提供了一種健壯且安全的執(zhí)行環(huán)境,并提供安全、集成的類庫。
框架132是一種多層體系結(jié)構(gòu),它包括應(yīng)用程序接口(API)層142、公共語言運行時(CLR)層144以及操作系統(tǒng)/服務(wù)層146。這一分層體系結(jié)構(gòu)允許在不影響該框架的其它部分的情況下對各層作出更新和修改。公共語言規(guī)范(CLS)140允許各種語言的設(shè)計者書寫能夠訪問底層庫功能的代碼。規(guī)范140起到語言設(shè)計者和庫設(shè)計者之間的約定的作用,它可以用來提升語言的互操作性。通過遵守CLS,以一種語言書寫的庫可以對以其它語言書寫的代碼模塊直接可訪問,以實現(xiàn)以一種語言書寫的代碼模塊和以另一種語言書寫的代碼模塊之間的無縫集成。CLS的一種示例性詳細實現(xiàn)在由ECMA TC39/TG3的參與者創(chuàng)建的ECMA標(biāo)準(zhǔn)中有描述。請讀者訪問ECMA web網(wǎng)站www.ecma.ch。
API層142呈現(xiàn)應(yīng)用130可調(diào)用來訪問由層146提供的資源和服務(wù)的函數(shù)組。通過展現(xiàn)用于網(wǎng)絡(luò)平臺的API函數(shù),應(yīng)用開發(fā)者能夠為分布式計算系統(tǒng)創(chuàng)建充分利用網(wǎng)絡(luò)資源和其它web服務(wù)的web應(yīng)用,而不需要理解這些網(wǎng)絡(luò)資源實際上如何操作或變?yōu)榭捎玫膹?fù)雜的相互作用。此外,web應(yīng)用可以以任意數(shù)量的編程語言來書寫,并被翻譯成由公共語言運行時144所支持的中間語言,并作為公共語言規(guī)范140的一部分包括在內(nèi)。以這一方式,API層142可為廣泛且不同的各種應(yīng)用提供方法。
另外,框架132可以被配置成支持由遠離主存該框架的服務(wù)器134執(zhí)行的遠程應(yīng)用所放置的API調(diào)用。代表性應(yīng)用148(1)和148(2)分別駐留在客戶機120(3)和120(M)上,它們可通過經(jīng)網(wǎng)絡(luò)104直接或間接向API層142作出調(diào)用來使用API函數(shù)。
也可以在客戶機裝置120上實現(xiàn)該框架??蛻魴C120(3)表示框架150在客戶機上實現(xiàn)的情況。該框架可與基于服務(wù)器的框架132相同,或為客戶機目的而修改。可選地,在客戶機是有限或?qū)S霉δ苎b置,如蜂窩電話、個人數(shù)字助理、手持式計算機或其它通信/計算裝置的情況下,可以濃縮基于客戶機的框架。
開發(fā)者的編程框架圖2更詳細地示出了編程框架132。公共語言規(guī)范(CLS)層140支持以各種語言130(1)、130(2)、130(3)、130(4)、…、130(K)書寫的應(yīng)用。這些應(yīng)用語言包括Visual Basic、C++、C#、COBOL、Jscript、Perl、Eiffel、Python等等。公共語言規(guī)范140指定了特征的一個子集或關(guān)于特征的規(guī)則,如果遵循這些規(guī)則,則允許各種語言進行通信。例如,某些語言不支持給定類型(如,“int*”類型),而這些類型可由公共語言運行時144支持。在這一情況下,公共語言規(guī)范140不包括該類型。另一方面,由所有或大多數(shù)語言支持的類型(如“int[]”類型)包括在公共語言規(guī)范140中,使得庫開發(fā)者可以自由地使用這一類型,并且確保該語言能夠處理該類型。這一通信能力產(chǎn)生了以一種語言書寫的代碼模塊和以另一種語言書寫的代碼模塊之間的無縫集成。由于不同語言特別適合于特定的任務(wù),語言之間的無縫集成允許開發(fā)者為代碼模塊選擇特定的語言而卻能夠與以不同語言書寫的代碼模塊一起來使用該代碼模塊。公共語言運行時144允許具有跨語言繼承性的無縫多語言開發(fā),并為多編程語言提供了一種健壯且安全的執(zhí)行環(huán)境。關(guān)于公共語言規(guī)范140和公共語言運行時144的更多信息,請讀者閱讀2000年6月21日提交的名為“編譯多語言的方法和系統(tǒng)(Method and System for Compiling Mutiple Languages)”(序列號09/598,105)以及2000年7月10日提交的“統(tǒng)一數(shù)據(jù)類型系統(tǒng)和方法(UnifiedData Type System and Method)”(序列號09/613,289)的共同待批的申請,該等申請通過引用結(jié)合于此。
框架132封裝了操作系統(tǒng)146(1)(如,Windows操作系統(tǒng))和對象模型服務(wù)146(2)(如組件對象模型(COM)或分布式COM)。操作系統(tǒng)146(1)提供了常規(guī)的功能,如文件管理、通知、事件處理、用戶界面(如,開窗口、菜單、對話框等)、安全、驗證、核實、進程和線程、內(nèi)存管理等等。對象模型服務(wù)146(2)提供了與其它對象的接口來執(zhí)行各種任務(wù)。向API層142作出的調(diào)用被交付給公共語言運行時層144,用于由操作系統(tǒng)146(1)和/或?qū)ο竽P头?wù)146(2)本地執(zhí)行。
API 142將API函數(shù)分組成多個名字空間。名字空間本質(zhì)上定義了類、接口、委托、枚舉和結(jié)構(gòu)的集合,統(tǒng)稱為“類型”,該集合提供了一組具體的相關(guān)功能?!邦悺北硎揪哂袇⒖假x值語義的管理堆已分配數(shù)據(jù)。“委托”是面向?qū)ο蟮暮瘮?shù)指針?!懊杜e”是表示命名內(nèi)容的一種特殊的值類型。“結(jié)構(gòu)”表示具有值賦值語義的靜態(tài)已分配數(shù)據(jù)?!敖涌凇倍x了其它類型可實現(xiàn)的約定。
通過使用名字空間,設(shè)計者能夠?qū)⒁唤M類型組織成一個分層名字空間。設(shè)計者能夠從該組類型創(chuàng)建多個組,每一組包含展現(xiàn)邏輯上相關(guān)功能的至少一個類型。在示例性實現(xiàn)中,對應(yīng)用142進行組織來包括三個根名字空間。應(yīng)當(dāng)注意,盡管在圖2中僅示出了三個根名字空間,在API 142中也可以包括另外的根名字空間。API 142中示出的三個根名字空間是用于演示子系統(tǒng)的第一名字空間200(包括用于用戶界面外殼的名字空間202)、用于web服務(wù)的第二名字空間204以及用于文件系統(tǒng)的第三名字空間206。然后可以向每一組分配一個名字。例如,可以向演示子系統(tǒng)名字空間200中的類型分配名字“Windows”、向文件系統(tǒng)名字空間206中的類型分配名字“Storage”??梢栽谟糜谙到y(tǒng)層API的單個“全局根”名字空間,如總體系統(tǒng)(System)名字空間下組織命名的組。通過選擇并頂層標(biāo)識符并將其作為前綴,每一組中的類型可以由包括作為包含該類型的組的名字的前綴的所選擇的頂層標(biāo)識符容易地引用。例如,文件系統(tǒng)名字空間206中的類型可以使用分層名字“System.Storage”來引用。以這一方式,個別的名字空間200、204和206變?yōu)閺南到y(tǒng)名字空間分支的主要部分,并可具有該個別名字空間在何處以指示符,如“System.”前綴作為前綴的指定。
演示子系統(tǒng)名字空間200屬于編程和內(nèi)容開發(fā)。它提供允許生成應(yīng)用、文檔、媒體演示和其它內(nèi)容的類型。例如,演示子系統(tǒng)名字空間200提供一種允許開發(fā)者從操作系統(tǒng)146(1)和/或?qū)ο竽P头?wù)146(2)獲取服務(wù)的編程模型。
外殼名字空間202屬于用戶界面功能。它提供了允許開發(fā)者在其應(yīng)用中嵌入用戶界面功能的類型,并還允許開發(fā)者擴充用戶界面功能。
web服務(wù)名字空間204屬于用于啟用各種各樣web應(yīng)用的創(chuàng)建的基礎(chǔ)結(jié)構(gòu),web應(yīng)用如與在內(nèi)聯(lián)網(wǎng)上兩個對等體之間操作的聊天應(yīng)用一樣簡單的應(yīng)用,和/或與用于上百萬個用戶的可伸縮web服務(wù)一樣復(fù)雜的應(yīng)用。描述的基礎(chǔ)結(jié)構(gòu)是有利地高度可變的,一個人只需要使用適合具體解決方案的復(fù)雜性的那些部分。該基礎(chǔ)結(jié)構(gòu)為構(gòu)建不同規(guī)模和復(fù)雜性的基于消息的應(yīng)用提供了基礎(chǔ)。該基礎(chǔ)結(jié)構(gòu)或框架為基本消息通信、安全消息通信、可靠消息通信和事務(wù)消息通信提供了API。在下文所描述的實施例中,關(guān)聯(lián)的API被以仔細制作來平衡適用性、可用性、可擴充性和可定版本性的方式分解成名字空間的層次。
文件系統(tǒng)名字空間206涉及存儲。它提供了允許信息存儲和檢索的類型。
除框架132之外,提供了編程工具220來協(xié)助開發(fā)者構(gòu)建web服務(wù)和/或應(yīng)用。編程工具220的一個示例是Visual StudioTM,它是由微軟公司提供的一套多語言編程工具。
根API名字空間圖3更詳細地示出了演示子系統(tǒng)200的一部分。在一個實施例中,依照分層命名約定來標(biāo)識名字空間,其中名字串用句點來連接。例如,演示子系統(tǒng)名字空間200由根名字“System.Windows”來標(biāo)識。在“System.Windows”名字空間內(nèi)的是用于各種控制的另一名字空間,它被標(biāo)識為“System.Windows.Controls”,它還標(biāo)識了用于原語的另一名字空間(未示出),稱為“System.Windows.Controls.Primitives”。當(dāng)了解了這一命名約定,以下提供了API 142的所選擇的名字空間的綜述,盡管可以適用其它命名約定來達到相等的效果。
如圖3所示,演示子系統(tǒng)200包括多個名字空間。圖3所示的名字空間標(biāo)識演示子系統(tǒng)200的一個具體實施例。演示子系統(tǒng)200的其它實施例可包括一個或多個另外的名字空間,或者可省略圖3所示的一個或多個名字空間。
演示子系統(tǒng)200是API 142的演示功能的大多數(shù)的根名字空間??刂泼挚臻g310包括用于構(gòu)建諸如用戶界面等信息顯示的控制,以及允許用戶與應(yīng)用交互的類。示例控制包括在顯示屏上創(chuàng)建按鈕的“按鈕(Button)”、在顯示屏上生成小圓形風(fēng)格按鈕的“單選按鈕(RadioButton)”、在顯示屏上創(chuàng)建菜單的“菜單(Menu)”、在顯示屏上創(chuàng)建工具條的“工具條(ToolBar)”、在顯示屏上創(chuàng)建圖像的“圖像(Image)”以及創(chuàng)建信息的分層視圖的“樹形視圖(TreeView)”。
通過嵌套并排列多個元素來創(chuàng)建某些控制??刂凭哂须[藏用于創(chuàng)建該控制的元素的邏輯模型,由此簡化的編程模型。控制可以由開發(fā)者或用戶來設(shè)計或定主題(如,通過定制外觀和用戶界面按鈕的行為)。一些控制具有允許個人調(diào)節(jié)個別控制的風(fēng)格的可尋址組件。另外,可由應(yīng)用開發(fā)者和組件開發(fā)者細分并擴充控制。使用矢量圖形呈現(xiàn)控制,使得可以重新調(diào)節(jié)它們的大小以適合具體的界面或其它顯示屏的需求。例如,控制能夠使用動畫來增強用戶界面的交互式感覺并顯示行動和反應(yīng)。
控制名字空間310包括一個或多個面板,它們是測量并排列其子面板(如嵌套元素)的控制。例如,“放置面板(DockPanel)”面板通過將每一子面板放置到顯示屏的上、左、下或右側(cè)來排列其子面板,并使用其它數(shù)據(jù)來填充剩余的空間。特定的面板可將菜單和工具條放置到顯示屏的頂部,將狀態(tài)條放置到顯示屏的底部,將文件夾列表放置到顯示屏的左側(cè)并以消息列表填充空間的剩余部分。
如上所述,System.Windows.Controls.Primitives是包括多個控制的名字空間,這些控制是通常由System.Windows.Controls名字空間中的控制的開發(fā)者和創(chuàng)建其自己的控制的開發(fā)者使用的組件。這些組件的示例包括“滾動桿拇指和重復(fù)按鈕(Thumb and RepeatButton)”。另一組件“滾動條(ScrollBar)”使用四個重復(fù)按鈕(一個用于“向上換行”、一個用于“向下?lián)Q行”、一個用于“向上翻頁”、一個用于“向下翻頁”)和用于將當(dāng)前視圖拖至文檔中的另一位置的“滾動桿拇指”來創(chuàng)建。在另一示例中,“滾動察看器(ScrollViewer)”是使用兩個“滾動條”和一個“滾動區(qū)域(ScrollArea)”創(chuàng)建的提供可滾動區(qū)域的控制。
以下列表包含由System.Windows.Controls名字空間展現(xiàn)的示例類。這些類允許用戶例如通過各種輸入和輸出能力以及另外的顯示能力與應(yīng)用進行交互。
·AccessKey-AccessKey(訪問按鍵)是包裝字符的框架元素(FrameworkElement)元素,指示要接收表示該字符為鍵盤記憶的鍵盤提示修飾。默認(rèn)地,鍵盤提示修飾是下劃線。
·Audio-音頻元素。
·Border-在另一元素周圍畫邊框、背景或兩者。
·Button-表示固有地對點擊(Click)事件做出反應(yīng)的標(biāo)準(zhǔn)按鈕組件。
·Canvas-定義在其中用戶可以通過與畫布(Canvas)區(qū)域有關(guān)的坐標(biāo)顯式地放置子元素的區(qū)域。
·CheckBox-使用復(fù)選框(CheekBox)給予用戶選項,如真/假。復(fù)選框允許用戶從選項的列表中選擇。復(fù)選框控制使用戶選取選項的組合。
·CheckedChangedEventArgs-該CheckedChangedEventArgs類包含關(guān)于復(fù)選改變事件(CheckedChangedEvent)事件的另外的信息。
·CheckStateChangedEventArgs-該CheckStateChangedEventArgs類包含關(guān)于復(fù)選狀態(tài)改變事件(CheckStateChangedEvent)事件的另外的信息。
·ClickEventArgs-包含關(guān)于點擊事件的信息。
·ColumnStyle-表示可改變列風(fēng)格(ColumnStyle)對象。
·ColumnStyles-可改變式樣IList對象,是可改變元素的集合。
·ComboBox-組合框(ComboBox)控制。
·ComboBoxItem-在組合框內(nèi)實現(xiàn)可選擇項目的控制。
·ContactPickerDialog-允許用戶選擇一個或多個聯(lián)系人。
·ContactPropertyRequest-允許應(yīng)用通過聯(lián)系人選取對話框(ContactPickerDialog)請求關(guān)于聯(lián)系人性質(zhì)的信息。該類不能被繼承。
·ContactPropertyRequestCollection-表示聯(lián)系人性質(zhì)請求(ContactPropertyRequest)對象的集合。
·ContactSelection-關(guān)于來自代號為“WinFS”或Microsoft Active Directory的MicrosoftWindows文件系統(tǒng)的所選擇聯(lián)系人的信息。
·ContactSelectionCollection-表示聯(lián)系人選擇(ContactSelection)對象的集合。
·ContactTextBox-支持選取聯(lián)系人或聯(lián)系人性質(zhì)的編輯控制。
·ContactTextBoxSelectionChangedEventARgs-用于聯(lián)系人文本框選擇改變(ContactTextBoxSelectionChanged)事件的自變量。
·ContactTextBoxTextChangedEventArgs-用于聯(lián)系人文本框文本改變(ContactTextBoxTextChanged)事件的自變量。
·ContactTextBoxTextResolvedEventArgs-用于文本解析為聯(lián)系人(TextResolvedToContact)事件的自變量。
·ContentChangedEventArgs-用于內(nèi)容改變事件(ContentChangedEvent)的事件自變量。
·ContentControl-用于內(nèi)容的單個片斷的所有控制的基類。
·ContectPresenter-ContentPresenter在內(nèi)容控制的風(fēng)格內(nèi)用于表示控制的可視樹(金屬框模板)內(nèi)要添加內(nèi)容之處。
·ContextMenu-定義用戶調(diào)用的選項的菜單的控制。
·ContextMenuEventArgs-在上下文菜單事件(ContextMenuEvent)上發(fā)送的數(shù)據(jù)。
·Control-表示所有用戶交互元素的基類。該類為其子類提供了基本性質(zhì)組。
·Decorator-在諸如邊框(Border)等單個子元素上或周圍應(yīng)用效果的元素的基類。
·DockPanel-定義在其中可以水平或垂直相對彼此地排列子元素的區(qū)域。
·DragDeltaEventArgs-該DragDeltaEventArgs類包含關(guān)于拖曳增量事件(DragDeltaEvent)事件的另外的信息。
·FixedPanel-FixedPanel是在固定格式文檔中用于包含分頁的固定頁的根元素。FixedPanel每次在一頁上顯示分頁內(nèi)容,或?qū)⒎猪搩?nèi)容顯示為頁的可滾動棧。
·FlowPanel-FlowPanel用于斷開、包裝并對齊超出單行的長度的內(nèi)容。FlowPanel提供了行斷開和對齊性質(zhì),它們可以在載體的內(nèi)容,如文本(Text)的流動可能超出單行的長度時使用。
·Frame-可加載另一標(biāo)記樹的內(nèi)容的區(qū)域。
·Generator-Generator是生成代表項目控制(ItemsControl)的UI(用戶界面)的對象,在生成器工廠(GeneratorFactory)的監(jiān)督下運行。
·GeneratorFactory-GeneratorFactory負(fù)責(zé)生成代表項目控制(ItemsControl)的UI。它維護控制的項目集合(ItemsCollection)(拉伸視圖)中的項目和對應(yīng)的用戶界面元素(UIElements)之間的關(guān)聯(lián)。控制的項目載體可向工廠要求生成器(Generator),生成器執(zhí)行UI的實際生成。
·GridPanel-定義包括列和行的柵格區(qū)域。
·HeaderItemsControl-用于包含多個項目且具有頭部的所有控制的基類。
·HorizontalSerollBar-水平滾動條類。
·HorizontalSlider-水平滑動條類。
·HyperLink-HyperLink類實現(xiàn)導(dǎo)航控制。默認(rèn)呈現(xiàn)器是文本呈現(xiàn)器(TextPresenter)。
·Image-提供在文檔或應(yīng)用中包括圖像的簡單方式。
·IncludeContactEventArgs-傳遞ContactPickerDialog.IncludeContact事件的處理器的自變量。
·ItemCollection-維護控制內(nèi)的離散項目的集合。提供了允許改變集合內(nèi)容并獲取關(guān)于該內(nèi)容的數(shù)據(jù)的方法和性質(zhì)。
·ItemsChangedEventArgs-項目改變(ItemsChanged)事件由生成器工廠引發(fā)來向布局通知項目集合已改變。
·Itemscontrol-具有多個子控制的所有控制的基類。
·ItemsView-ItemsView提供了項目集合(ItemCollection)的拉伸視圖。
·KeyboardNavigation-KeyboardNavigation類提供了用于可聚焦控制之間的邏輯(跳格)和方向(箭頭)導(dǎo)航的方法。
·ListBox-實現(xiàn)所選擇的項目的列表的控制。
·ListItem-實現(xiàn)列表框(ListBox)內(nèi)所選擇的項目的控制。
·Menu-定義用戶調(diào)用的選項的菜單的控制。
·MenuItem-菜單(Menu)的子項目??蛇x擇菜單項目(MenuItems)來調(diào)用命令。菜單項目可以是分隔符。菜單項目可以是子菜單的頭部。菜單項目可以被復(fù)選或未復(fù)選。
·PageViewer-表示包含分頁控制、工具條和頁條控制的文檔視圖復(fù)合控制。
·PaginationCompleteEventArgs-分頁完成事件(PaginationCompleteEvent)的事件自變量。
·PaginationProgressEventArgs-分頁進行事件(PaginationProgressEvent)的事件自變量。
·Pane-提供了不裝入新窗口在標(biāo)記語言(如,“XAML”)中定義窗口性質(zhì)的方法。
·Panel-提供了所有Panel(面板)元素的基類。為例示Panel元素,使用衍生的具體類。
·RadioButton-RadioButton(單選按鈕)實現(xiàn)具有兩種狀態(tài)真或假的選項按鈕。
·RadioButtonList-該控制起單選按鈕的分組控制的作用,并且是處理單選按鈕相互排他性的片斷。RadioButtonList從選擇器(Selector)繼承。RadioButtonList本質(zhì)上是單選模式選擇器,并且(來自選擇器的)選擇的概念從其分組的單選按鈕的所復(fù)選的性質(zhì)中切除。
·RowStyle-可改變式樣的可改變元素。
·RowSytles-可改變式樣的IList對象,它是可改變元素的集合。
·ScrollChangeEventArgs-ScrollChangeEventsArgs描述了滾動狀態(tài)中的變化。
·ScrollViewer-·SelectedItemsCollection-選擇器(Selector)中所選擇的項目的載體。
·SelectionChangedEventArgs-到選擇改變事件處理器的輸入。
·SimpleText-SimpleText是期望在用戶界面(UI)情形中使用的輕量、多行、但格式文本元素。SimpleText將若干同樣的格式化性質(zhì)展現(xiàn)為文本(Text),并通常可以用于以某一多功能性的成本獲得的性能。
·SytleSelector-StyleSelector允許應(yīng)用書寫者提供自定義風(fēng)格選擇邏輯。例如,使用類Bug作為內(nèi)容,對Pri1程序錯誤使用特定的風(fēng)格并對Pri2程序錯誤使用不同的風(fēng)格。應(yīng)用書寫者可忽略衍生的選擇器類中的SelectStyle(選擇風(fēng)格)方法,并向ContentPresenter類上的StyleSelector(風(fēng)格選擇器)性質(zhì)分配該類的實例。
·Text-表示允許呈現(xiàn)文本的多種格式的文本控制。文本最佳地在應(yīng)用UI內(nèi)使用;更高級的文本情形從文本面板(TextPanel)的另外的特征組獲益。在大多數(shù)需要相對簡單文本支持的情況下,由于其輕量特性和特征范圍,文本是較佳的元素。
·TextBox-表示提供接受文本輸入的可編輯區(qū)域的控制。
·TextChangedEventArgs-TextChangedEventArgs類表示與由TextRange.SetText()引發(fā)的事件有關(guān)的路由事件自變量(RoutedEventArgs)類型。
·TextPanel-對文本格式化、定大小并繪制。TextPanel支持多行文本和多文本格式。
·ToolTip-當(dāng)用戶覆蓋在控制上時顯示信息的控制。
·ToolTipEventArgs-在工具提示事件(ToolTipEvent)上發(fā)送的數(shù)據(jù)。
·TransformDecorator-TransformDecorator包含一個子元素并向其應(yīng)用指定的變換。TransformDecorator實現(xiàn)在其本地(預(yù)變換)坐標(biāo)中測量和排列子元素的邏輯,使得在變化之后,該子元素緊密地在該修飾器的空間中合適并使用最大區(qū)域。因此,該子元素不需要具有變換向其應(yīng)用的知識。
·UIElementCollection-UIElementCollection是UI元素(UIElement)的排序集合。
·ValueChangedEventArgs-該ValueChangedEventARgs類包含關(guān)于值改變事件(ValueChangedEvent)事件的另外的信息。
·VerticalScrollBar-垂直滾動條類。
·VerticalSlider-垂直滑動條類。
·Video-在當(dāng)前用戶坐標(biāo)系統(tǒng)內(nèi)指定的矩形內(nèi)播放流視頻或音頻文件。
·VisibleChangedEventArgs-VisibleChangedEventArgs類包含關(guān)于可視改變事件(VisibleChangedEvent)事件的另外的信息。
System.Windows.Controls名字空間也包含各種枚舉。以下列表包含與System.Windows.Controls名字空間關(guān)聯(lián)的示例枚舉。
·CharacterCase-當(dāng)鍵入文本時指定文本框(TextBox)控制中的字符的大小寫。
·CheckState-指定可以被復(fù)選、取消復(fù)選或設(shè)為中間狀態(tài)的諸如復(fù)選框等控制的狀態(tài)。
·ClickMode-指定應(yīng)當(dāng)何時激活點擊(Click)事件。
·ContactControlPropertyPosition-控制聯(lián)系人性質(zhì)的位置和顯示。
·ContactPickerDialogLayout-指定聯(lián)系人選取對話框(ContactPickerDialog)應(yīng)當(dāng)如何顯示選擇的性質(zhì)。
·ContactPropertyCategory-在一個性質(zhì)具有多個用戶可從中選擇的值的情況下指定使用哪一值作為默認(rèn)。例如,如果指定“Work(工作)”為當(dāng)向聯(lián)系人選取對話框請求電話號碼性質(zhì)時的較佳類別,并且用戶選擇了既有工作電話號碼又有家庭電話號碼的聯(lián)系人,則工作電話號碼出現(xiàn)為默認(rèn)選擇。用戶然后可以使用UI來替代地選擇家庭電話號碼·ContactPropertyType-指定聯(lián)系人選取對話框可向用戶要求的聯(lián)系人的性質(zhì)。
·ContactType-指定在聯(lián)系人選取對話框中顯示哪一聯(lián)系人類型。
·Direction-該枚舉由生成器工廠(GeneratorFactory)和生成器(Generator)用于指定生成器生成UI的方向。
·Dock-指定放置面板(DockPanel)中子元素的放置位置。
·GeneratorStatus-該枚舉由生成器工廠(GeneratorFactory)用于指示其狀態(tài)。
·KeyNavigationMode-TabNavigation性質(zhì)類型指定當(dāng)出現(xiàn)跳格導(dǎo)航時載體如何移動焦點。
·MenuItemBehavior-定義菜單項目能夠具有的不同行為。
·MenuItemType-定義菜單項目的不同布置類型。
·Orientation-滑動條定向類型。
·PageViewerFit-選擇頁應(yīng)當(dāng)如何適合頁察看器(PageViewer)的客戶區(qū)域。
·PageViewerMode-選擇模式下拉中反應(yīng)的當(dāng)前頁察看器模式。
·ScrollerVisibility-可視性(Visibility)定義了滾動條的可視行為。
·SelectionMode-指定了列表框(ListBox)的所選擇的行為。
“Position(位置)”是與System.Windows.Controls名字空間關(guān)聯(lián)的一個示例結(jié)構(gòu)。Generator的用戶使用該結(jié)構(gòu)來描述位置。例如為從項目列表的始端開始前向生成,指定位置(-1,0),和方向Forward(前向)。為從列表的末端開始后向生成,指定位置(-1,0)和方向Backward(后向)。為在具有索引k的元素之后生成項目,指定位置(k,0)和方向Forward(前向)。
以下列表包含了與System.Windows.Controls名字空間關(guān)聯(lián)的示例委托。
·CheckedChangedEventHandler-該委托由CheckedChangedEvent事件的處理器使用。
·CheckStateChagnedEventHandler-該委托由復(fù)選狀態(tài)改變事件(CheckStateChangedEvent)事件的處理器使用。
·ClickEventHandler-表示處理點擊(Click)事件的方法。
·ContactTextBoxSelectionChangedEventHandler-用于聯(lián)系人文本框選擇改變(ContactTextBoxSelectionChanged)事件的委托處理器。
·ContactTextBoxTextChangedEventHandler-用于聯(lián)系人文本框改變(ContactTextBoxChanged)事件的委托處理器。
·ContactTextBoxTextResolvedEventHandler-用于文本解析到聯(lián)系人(TextResolvedToContaet)事件的委托處理器。
·ContentChangedDelegate-用于聯(lián)系人改變事件(ContentChangedEvent)的委托。
·ContextMenuEventHandler-用于處理上下文菜單事件(ContextMenuEvent)的回叫類型。
·DragDeltaEventHandler-該委托由拖曳增量事件(DragDeltaEvent)事件的處理器使用。
·IncludeContactEventHandler-用于ContactPickerDialog.IncludeContact事件的處理器。
·ItemsChangedEventHandler-用于接收項目改變事件自變量(ItemsChangedEventArgs)的處理器的委托。
·OpenedEventHandler-用于ContactPickerDialog.Opened事件的處理器。
·PaginationCompleteDelegate-用于分頁完成事件(PaginationCompleteEvent)的委托。
·PaginationProgressDelegate-用于分頁進行事件(PaginationProgressEvent)的委托。
·ScrollChangeEventHandler-該委托由滾動改變事件(ScrollChangeEvent)事件的處理器使用。
·SelectionChangedEventHandler-用于處理選擇改變事件的委托類型。
·TextChangedEventHandler-用于接收文本改變事件自變量(TextChangedEventArgs)的處理器的委托。
·ToolTipEventHandler-用于處理工具提示事件(ToolTipEvent)的回叫類型。
·ValueChangedEventHandler-該委托由值改變事件(ValueChangedEvent)事件的處理器使用。
·VisibleChangedEventHandler-該委托由可視改變事件(VisibleChangedEvent)事件的處理器使用。
另-名字空間System.Windows.Controls.Atoms是System.Windows.Controls名字空間的子名字空間。System.Windows.Controls.Atoms包括關(guān)聯(lián)的控制、事件自變量和事件處理器。以下列表包含了與System.Windows.Controls.Atoms名字空間關(guān)聯(lián)的示例類。
·PageBar-表示可滾動分頁控制。
·PageElement-呈現(xiàn)分頁內(nèi)容的具體頁。要呈現(xiàn)的頁由頁源(PageSource)性質(zhì)指定。
·PageHoveredEventArgs-PageHoveredEventArgs提供了關(guān)于鼠標(biāo)指針覆蓋在何處的信息。
·PageScrolledEventArgs-PageScrolledEventArgs包含屬于頁滾動(PageScrolled)事件的信息。
·PageSelectedEvenArgs-當(dāng)作出新行/列范圍選擇時激發(fā)頁選擇事件(PageSelectedEvent)。
·PageSelector-PageSelector允許用戶選擇要顯示的頁的行/列范圍。
·PageSource-標(biāo)識要分頁的內(nèi)容源。它也提供了用于格式化分頁內(nèi)容的性質(zhì)和方法。
以下列表包含了與System.Windows.Controls.Atoms名字空間關(guān)聯(lián)的示例委托。
·PageHoveredEventHandler-該委托由頁覆蓋事件(PageHoveredEvent)事件的處理器使用。
·PageScrolledEventHandler-該委托由頁滾動(PageScrolled)事件的處理器使用。
·PageSelectedEventHandler-該委托由頁選擇事件(PageSeleetedEvent)事件的處理器使用。
System.Windows.Controls.Primitives名字空間是System.Windows.Controls名字空間的另一子名字空間。如上所述,Primitives子名字空間包括期望被其它更多的復(fù)雜控制用作原語的控制。以下列表包含了與System.Windows.Controls.Primitive名字空間關(guān)聯(lián)的示例類。
·ButtonBase-當(dāng)在衍生的類中忽略時,定義了相關(guān)的事件和性質(zhì),并為相關(guān)輸入事件提供處理器。
·Popup-創(chuàng)建包含內(nèi)容的飛出窗口的控制。
·RangeBase-標(biāo)識用于具有特定范圍的元素的基類。這類元素的示例是滾動條和進度條。該類定義了相關(guān)的事件和性質(zhì),并為該事件提供了處理器。
·RepeatButton-RepeatButton控制添加點擊(Click)事件何時出現(xiàn)的重復(fù)情形。
·ScrollArea-ScrollArea是用于滾動的有效元素。它包含它所剪切的內(nèi)容并提供性質(zhì)來展現(xiàn)該內(nèi)容的偏移和擴充。它也提供默認(rèn)輸入處理,使得可以可編程地或通過鍵盤或鼠標(biāo)滾輪來驅(qū)動滾動。
·ScrollBar-滾動條類。
·Selector-用于從其子控制中選擇項目的控制的基類。
·Slider-滑動條類。
·Thumb-滾動桿拇指控制啟用滾動條基本拖曳—移動功能和窗口調(diào)整大小部件。
“IEnsureVisible”是與System.Windows.Controls.Primitives名字空間關(guān)聯(lián)的示例接口。IEnsureVisible在可視部件上實現(xiàn)以將子可視部件滾動/移動到視圖。
以下列表包含了與System.Windows.Controls.Primitives名字空間關(guān)聯(lián)的示例枚舉。
·ArrowButtonStates-·CloseModeType-描述彈出窗口應(yīng)當(dāng)如何對各種鼠標(biāo)事件作出行為。
·Part-Part枚舉用戶指示構(gòu)成滾動條的控制的情形使用。
·PartStates-滾動條部件狀態(tài)。
·PlacementType-描述應(yīng)當(dāng)在屏幕的何處放置彈出窗口。
·SizeBoxStates-文檔名字空間312是用于創(chuàng)建多功能格式化且語義豐富的文檔的語義和格式化元素的集合。在一個實施例中,“element(元素)”是主要結(jié)合元素的層次(稱為“樹”)使用的類。這些元素可以是交互式的(如,通過鍵盤、鼠標(biāo)或其它輸入設(shè)備接收用戶輸入)、可以呈現(xiàn)圖像或?qū)ο蟛⒖梢詤f(xié)助其它元素的排列。示例元素包括實現(xiàn)一般塊的“Bloc(塊)”元素、標(biāo)識包括表格體的內(nèi)容的“Body(正文)”元素、標(biāo)識包括在表格頭中的內(nèi)容的“Header(頭)”元素以及用于跨多頁斷開內(nèi)容的“PageBreak(頁斷開)”元素。
以下列表包含了由System.Windows.Documents名字空間展現(xiàn)的示例類。
·AdaptiveMetricsContext-AdaptiveMetricsContext為自適應(yīng)流格式(adaptive-flow-format)文檔提供了根元素。一旦在AdaptiveMEtricsContext元素中封裝了子面板,由讀度量引擎(RME)處理該面板的內(nèi)容。子面板的大小用于計算任一列的數(shù)量和大小,并優(yōu)化字體大小和行高。
·Block-實現(xiàn)不引入默認(rèn)呈現(xiàn)行為的一般塊元素。
·BlockElement-實現(xiàn)用于所有Block元素的基類。
·Body-表示構(gòu)成Table(表)元素的體的內(nèi)容。
·Bold-實現(xiàn)從Inline(內(nèi)嵌)衍生的Bold(粗體)元素。
·BreakRecord-儲存跨頁中斷繼續(xù)格式化分頁內(nèi)容必需的信息。從該類繼承來提供分頁支持。這是抽象類。
·Cell-Cell包含表(Table)內(nèi)的表數(shù)據(jù)。Cell元素包含在行(Row)中。
·CellCollection-表單元的排序集合。
·Column-Column元素用于分配柵格面板(GridPanel)或表(Table)的內(nèi)容。
·Columncollection-Columnclooection是列(Column)的排序集合。
·ColumnResult-表示列的視圖相關(guān)的信息。
·ContainerParagraphResult-提供對僅包含其它Paragraph(段落)對象的Paragraph對象的計算布局參數(shù)的訪問。
·ContentPosition-表示段落內(nèi)的內(nèi)容的位置。從該類繼承來描述關(guān)聯(lián)的內(nèi)容的位置。這是抽象類。
·Document-Document類的目的是將文檔的內(nèi)容從包圍其的UI“金屬框”中去耦?!叭ヱ睢敝缚梢栽诓豢紤](且不提交)其UI的情況下創(chuàng)作文檔。Document類保留了文檔內(nèi)容,通常為文本面板(TextPanel)或固定面板(FixedPanel)及其子類。可視樹(默認(rèn)為頁察看器(PageViewer))通過WPP控制式樣機制與該元素關(guān)聯(lián)。
·DocumentPage-表示與服從分頁的文檔的頁關(guān)聯(lián)的控制的布局信息。從該類繼承來描述這些控制的布局信息。這是抽象類。
·DocumentPageParagraphResult-提供對被分頁影響的對象的計算布局參數(shù)的訪問。
·FindEngine-用于找出算法的基類。
·FindEngineFactory-找出算法工廠。
·FixedPage-提供對固定格式布局文檔內(nèi)的內(nèi)容的單個頁的訪問。
·Footer-表示構(gòu)成表(Table)元素的頁腳的內(nèi)容。
·Headaer-表示構(gòu)成表(Table)元素的頭的內(nèi)容。
·Heading-實現(xiàn)將文本呈現(xiàn)為標(biāo)題的塊級元素。
·HyphenationDictionary-HyphenationDictionary表示用于提供應(yīng)用內(nèi)的斷字支持目的的字典。它可包含內(nèi)嵌字典和到外部字典的引用。該內(nèi)嵌字典具有較高的優(yōu)先級,并在外部字典中的條目之前應(yīng)用。
·Hyphenator-Hyphenator對象維護到斷字字典(HyphenationDictionary)內(nèi)的斷字?jǐn)?shù)據(jù)的引用,并且也執(zhí)行斷字。
·Inline-實現(xiàn)不引入任何默認(rèn)呈現(xiàn)行為的一般內(nèi)嵌元素。
·InlineElement-將一般內(nèi)嵌元素實現(xiàn)為所有內(nèi)嵌元素的基類。
·Italic-實現(xiàn)從Inline衍生的Italic(斜體)元素。
·LineBreak-表示強迫斷行的標(biāo)記元素。
·LineResult-提供到文本的行的計算信息的訪問。
·List-實現(xiàn)列表元素。列表是設(shè)計成使用諸如項目符號或編號等標(biāo)記格式化的塊級元素。
·ListElementItem-實現(xiàn)列表元素項目,支持諸如項目符號或編號的標(biāo)記。
·Note-實現(xiàn)記錄元素,類似于HTML中的記錄元素。
·PageBreak-表示用于跨不同的頁斷開內(nèi)容的標(biāo)記元素。
·PageDescriptor-實現(xiàn)頁描述符,儲存創(chuàng)建分頁布局所必需的信息。
·Paragraph-實現(xiàn)用于在段落中呈現(xiàn)文本的塊級元素。呈現(xiàn)行為類似于HTML中段落元素的呈現(xiàn)行為。
·ParagraphResult-提供到段落(Paragraph)對象的計算布局參數(shù)的訪問。
·Row-在柵格面板(GridPanel)或表(Table)元素內(nèi)定義行。
·RowCollection-RowCollection表示行(Row)的排序集合。
·Section-實現(xiàn)一般載體元素。呈現(xiàn)行為類似于HTML中的div元素。
·SmallCaps-實現(xiàn)內(nèi)嵌小體大寫字母元素。小體大寫字母元素是如標(biāo)題中呈現(xiàn)為字母的小體大寫版本用于強調(diào)的印刷形式。
·Subscript-表示內(nèi)嵌下標(biāo)元素。注腳字符書寫在其它字符的正下方、左下方或右下方。
·Superscript-表示內(nèi)嵌上標(biāo)元素。上標(biāo)字符通常是字母或數(shù)字,并呈現(xiàn)在其它字符的正上方、左上方和右上方。
·Table-Table用于使用標(biāo)記語言(如“XAML”)以表格的形式顯示復(fù)雜數(shù)據(jù)。
·TextArray-用于文本訪問和操縱的基本API。
·TextChangedEventArgs-TextChangedEventArgs定義了當(dāng)改變文本陣列(TextArray)時發(fā)送的事件自變量。
·TextElement-TextElement提供了方便文本樹(TextTree)的文本范圍(TextRange)。它是具有固定端點的不變、連續(xù)文本范圍。它提供了內(nèi)容元素輸入(ContentElement Input)、聚焦(Focus)和事件(Eventing)支持。它也提供了DependencyObject(依賴對象)性質(zhì)支持。
·TextNavigator-這可以枚舉文本內(nèi)容。實現(xiàn)可移動文本位置(TextPositoin)。它可由在文本中的已知位置上運行或放置的文本移動。
·TextParagraphResult-提供對包括浮動對象和圖片的文本的計算布局參數(shù)的訪問。
·TextPosition-這是表示文本陣列(TextArray)中某一位置的對象。表示文本中的位置的壓縮對象當(dāng)文本改變時自動維護位置。比較操作僅可應(yīng)用到同一文本陣列(同一上下文)內(nèi)的位置。文本位置可以是靜態(tài)或可移動的。IsChangeable(是否可改變)性質(zhì)告知了位置的種類。
·TextRange-TextRange是提供與性質(zhì)的零或更多子范圍的一般關(guān)聯(lián)的抽象類。子范圍操縱在衍生的類上定義。
·TextRangeMovable-TextRangeMovalbe是用于可移動文本范圍的抽象類。它添加了基于文本單元(TextUnit)移動起始和終止點的能力。
·TextTreeChangedEventArgs-TextChangedEventArgs定義了當(dāng)文本陣列改變時發(fā)送的事件自變量。
·TextTreeDumper-TreeDumper是因包裝問題而公用的樹測試類。
·TextTreeNavigator-這是表示文本樹中某一可移動位置的對象。它是TextNavigator(文本導(dǎo)航器)的一種特定實現(xiàn),僅在文本樹中使用。
·TextTreePosition-這是表示文本樹中某一不變位置的對象。它是TextPosition(文本位置)的一種特定實現(xiàn),僅在文本樹中使用。
·TextTreeRange-提供了方便文本樹的文本范圍。它是具有可移動端點的可變、連續(xù)文本范圍。
·TextTreeRangeContentEnumerator-直接在文本樹范圍之下的子對象上的枚舉器。
·TextUnit-文本導(dǎo)航的可擴充單元。
·TextUnits-用于文本位置和文本范圍的常用文本單元。
·Typography-提供了到多功能開放類型印刷性質(zhì)組的訪問。
·UIElementParagraphResult-完全由UI元素(UIElement)組成的段落的段落結(jié)果。用于浮動物(Floater)、圖片(Figure)和嵌入式塊級UI元素。
·Underline-實現(xiàn)從InlineElemnt衍生的下劃線元素。
以下列表包含了與Systen.Windows.Documents名字空間關(guān)聯(lián)的示例接口。
·IDocumentContentHost-在內(nèi)容主類上實現(xiàn)該結(jié)構(gòu),使得當(dāng)內(nèi)容改變時該主類的子類能夠通知該主類。
·IDocumentFormatter-在元素上實現(xiàn)該接口以提供對諸如分頁等文檔特征的支持。
·ITextDocumentResult-實現(xiàn)該接口為文本段落提供文本和位置信息。
以下列表包含了與System.Windows.Documents名字空間關(guān)聯(lián)的示例枚舉。
·ElementEdge-這標(biāo)識了查找文本位置之處的對象的邊緣。
·FindAdvancedOptions-由FindAlgorithm(搜索初始化) 和TextRangeMovable/TextSelection(簡化搜索執(zhí)行)類使用的高級搜索選項。
·FindOptions-由TextBox.Find方法使用的簡化搜索選項。
·LogicalDirection-LogicalDirection定義了用于文本中的移動的邏輯方向。它也用于確定當(dāng)在文本位置上插入內(nèi)容時將文本位置移動到何處。
·TextArrayRunType-這標(biāo)識了查找文本位置之處的運行,考慮邏輯方向。
·TextChangeOptions-用于可改變文本(CanChangeText)的可能文本變化。
·TextMoveOptions-這通過指定暫停導(dǎo)航的條件控制文本導(dǎo)航器的移動。
以下列表包含了與System.Windows.Documents名字空間關(guān)聯(lián)的示例委托。
·ObjectCloneDelegate-當(dāng)復(fù)制或移動文本陣列的一部分時提供依賴對象(DependencyObject)的復(fù)制或副本。
·TextChangedEventHandler-TextChangedEventHandler委托在每次向文本樹添加或從其移除內(nèi)容時使用文本改變事件自變量來調(diào)用。
形狀名字空間314是用于創(chuàng)建圖像和對象的矢量圖形元素的集合。矢量圖形元素的使用允許容易地調(diào)整元素的大小以適合特定的界面或顯示設(shè)備的需求。以下列表包含了由System.Windows.Shapes名字空間展現(xiàn)的示例類。
·Ellipse-繪制橢圓。
·Glyphs-以諸如“XAML”等標(biāo)記語言表示字形形狀。字形用于表示字體。
·Line-繪制兩點之間的直線。
·Path-繪制一列連接的直線和曲線。
·Polygon-繪制多邊形(形成封閉形狀的一列連接的直線)。
·Polyline-繪制一列連接惡直線。
·Rectangle-繪制矩形。
·Shape-為形狀元素,如橢圓、多邊形和矩形提供基本功能的抽象類。
System.Windows.Controls、System.Windows.Documents和System.Windows.Shaples名字空間為開發(fā)應(yīng)用和相關(guān)組件提供了一種集成系統(tǒng)。這一集成系統(tǒng)為所有三個名字空間提供了公用編程模型,由此簡化了應(yīng)用程序的開發(fā)。所有三個名字空間之間的互操作性允許開發(fā)者學(xué)會了適應(yīng)用于由三個名字空間提供的特征的任一個的單個編程體系結(jié)構(gòu)。例如,對所有三個名字空間使用公用標(biāo)記語言。這一公用標(biāo)記語言提供了XML標(biāo)記中指定的類和性質(zhì)到對象的例示樹的映射。
另外,對三個名字空間使用一種一致編程模型和一致服務(wù)。例如,使用了一致事件系統(tǒng)來啟動并處理各種事件。使用了公用性質(zhì)系統(tǒng)來設(shè)計各種性質(zhì)、將數(shù)據(jù)綁定到性質(zhì)或?qū)π再|(zhì)進行動畫制作,而不管該性質(zhì)是否與“控制”、“文檔”或“形狀”名字空間關(guān)聯(lián)。另外,相同的輸入范例和布局處理對所有三個名字空間是公用的。例如,來自System.Windows.Controls名字空間的各種控制可以在使用System.Windows.Documents名字空間定義的文檔內(nèi)容中間嵌套。
示例源文件包括使用“控制”、“文檔”和“形狀”聲明性地定義的一組窗口和窗格(也稱為“頁”)。也為窗口和窗格提供了交互邏輯。交互邏輯標(biāo)識響應(yīng)于具體用戶行動或響應(yīng)于事件或活動的出現(xiàn)而執(zhí)行的程序代碼。例如,使用公共語言運行時(CLR)語言來定義交互邏輯。CLR是處理程序代碼(如.NET程序代碼)的執(zhí)行并提供諸如安全相關(guān)服務(wù)和內(nèi)存相關(guān)服務(wù)等各種服務(wù)的運行時刻環(huán)境。示例CLR語言包括C#和Visual Basic。源文件也可包括其它獨立編程語言文件,如C#或Visual Basic文件。
盡管本討論參考“控制”、“文檔”和“形狀”名字空間的集成,該集成可應(yīng)用到本發(fā)明所討論的名字空間和子名字空間的所有或任一個。
數(shù)據(jù)名字空間316包括用戶將元素的性質(zhì)綁定到數(shù)據(jù)源的類和接口、數(shù)據(jù)源類和集合和視圖的數(shù)據(jù)專用實現(xiàn)。這些類和接口也用戶處理數(shù)據(jù)條目中的異常,并允許基于各種數(shù)據(jù)源中的信息在運行時刻創(chuàng)建用戶界面。數(shù)據(jù)可以以文本形式顯示,或可以用于改變顯示的格式,例如,如果美元數(shù)為負(fù)時以紅色顯示。示例類包括標(biāo)識管理動態(tài)性質(zhì)用戶界面和源數(shù)據(jù)之間的綁定綁定聲明對象的“Bind”類,以及擔(dān)當(dāng)用于綁定到XML內(nèi)容節(jié)點的數(shù)據(jù)的數(shù)據(jù)源的“XmlDataSource”類。
媒體名字空間318提供各種媒體類。應(yīng)用開發(fā)者以及組件開發(fā)者可使用這些類來開發(fā)各種演示功能。媒體名字空間318中的示例類包括準(zhǔn)許某些成像效果(如,模糊和灰度級)的“ImageEffect”類,以及提供用于使用純色、梯度、圖像、視頻等填充區(qū)域的機制的“Brush”類。
媒體名字空間318包括子名字空間System.Windows.Media.Animation,它包括允許開發(fā)者對性質(zhì)進行動畫制作并使用一組時間線協(xié)調(diào)一組動畫的服務(wù)。動畫是隨時間改變值的對象。動畫效果包括在顯示屏上移動對象,以及改變對象的大小、形狀或色彩??赏ㄟ^將動畫與元素的性質(zhì)值關(guān)聯(lián)來達到效果。例如,為創(chuàng)建在視圖中漸顯和漸隱的矩形,將一個或多個動畫與該矩形的不透明性性質(zhì)向關(guān)聯(lián)。
媒體名字空間318也包括提供各種文本服務(wù)的子名字空間System.Windows.Media.TextFormatting。例如,“文本格式化器”文本引擎提供了用于斷開文本行并格式化顯示屏上所呈現(xiàn)的文本的服務(wù)。“文本格式化器”能夠處理不同的文本字符格式和段落風(fēng)格,并處理國際文本布局。
設(shè)計名字空間320提供了能夠編輯形式和文本、格式化數(shù)據(jù)并交叉處理數(shù)據(jù)共享的類。這些類為編輯文檔、應(yīng)用和其它內(nèi)容提供了可擴充框架。
輸入名字空間322包括協(xié)調(diào)由系統(tǒng)接收的輸入的輸入管理器。輸入名字空間322也包括幫助管理并為不同的輸入設(shè)備,如鍵盤或鼠標(biāo)提供控制的類。
導(dǎo)航名字空間324提供了允許使用導(dǎo)航范例,如瀏覽器應(yīng)用構(gòu)建應(yīng)用的一組類和服務(wù)。這些類和服務(wù)準(zhǔn)許使用定制的導(dǎo)航經(jīng)驗來開發(fā)應(yīng)用程序。例如,當(dāng)從聯(lián)機商家購買產(chǎn)品或服務(wù)時,點擊“Back(回退)”按鈕促使應(yīng)用顯示一個不同的頁,詢問用戶他們是否想要取消或改變其訂單。在另一示例中,激活“Refersh(刷新)”按鈕促使應(yīng)用檢索新數(shù)據(jù)而不是首先加載應(yīng)用再檢索新數(shù)據(jù)。導(dǎo)航名字空間324也包括提供用于生成向用戶呈現(xiàn)的問題的層次的機制的頁函數(shù)。
自動化名字空間326提供支持可訪問性和用戶界面自動化的一組類。
串行化名字空間328提供可從XML文件或具有二進制標(biāo)識的文件加載對象(如,元素)的層次或向這些文件中保存對象(如,元素)的層次的分析器。該過程也設(shè)置與對象關(guān)聯(lián)的特性并管理事件處理器。
互操作名字空間330提供能夠與其它操作系統(tǒng)或計算平臺互操作的一組類。
forms.interop(形式互操作)名字空間332提供允許應(yīng)用主含形式控制操作的元素。
另一名字空間System.IO.CompoudFile(圖3中未示出)提供了使用在其中儲存了各種文檔可分布文件的復(fù)合文件的服務(wù)。這些服務(wù)允許內(nèi)容的加密和壓縮。服務(wù)也支持同一內(nèi)容,如可重新流動的文檔和固定格式的文檔的多次再現(xiàn)的存儲。
示例性計算系統(tǒng)和環(huán)境圖4示出了適合在其中實現(xiàn)編程框架132(全部或部分)的計算環(huán)境400的一個示例。計算環(huán)境400可在本發(fā)明描述的計算機和網(wǎng)絡(luò)體系結(jié)構(gòu)中使用。
示例性計算環(huán)境400僅為計算環(huán)境的一個示例,并非建議對計算機和網(wǎng)絡(luò)體系結(jié)構(gòu)的使用或功能的范圍的局限。也不應(yīng)將計算環(huán)境400解釋為對示例性計算環(huán)境400中示出的任一組件或其組合具有依賴或需求。
框架132可以使用眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來實現(xiàn)。適合使用的眾所周知的計算系統(tǒng)、環(huán)境和/或配置包括但不限于,個人計算機、服務(wù)器計算機、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、網(wǎng)絡(luò)PC、小型機、大型機、包括任一上述系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。該框架的壓縮或子集版本也可以在有限資源的客戶機中實現(xiàn),如蜂窩電話、個人數(shù)字助理、手持式計算機或其它通信/計算裝置。
框架132可以在計算機可執(zhí)行指令的一般上下文環(huán)境中描述,計算機可執(zhí)行指令如程序模塊,由一個或多個計算機或其它裝置執(zhí)行。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型??蚣?32也可以在分布式計算環(huán)境中實踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接的遠程處理設(shè)備來執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程計算機存儲媒質(zhì)中,如存儲器存儲設(shè)備。
計算環(huán)境400包括計算機402形式的通用計算裝置。計算機402的組件可包括但不限于,一個或多個處理器或處理單元404、系統(tǒng)存儲器406以及將包括處理器404的各類系統(tǒng)組件耦合至系統(tǒng)存儲器406的系統(tǒng)總線408。
系統(tǒng)總線408代表若干種總線結(jié)構(gòu)類型的一個或多個,包括存儲器總線或存儲器控制器、外圍總線、加速圖形端口以及使用各類總線結(jié)構(gòu)的處理器或本地總線。作為示例而非局限,這類結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)本地總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計算機402通常包括各種計算機可讀媒質(zhì)。這類媒質(zhì)可以是可由計算機402訪問的任一可用媒質(zhì),包括易失和非易失媒質(zhì)、可移動和不可移動媒質(zhì)。
系統(tǒng)存儲器406包括以易失存儲器形式的計算機可讀媒質(zhì),如只讀存儲器(ROM)410,和/或非易失存儲器形式的計算機存儲媒質(zhì),如隨機存取存儲器(RAM)412?;据斎?輸出系統(tǒng)(BIOS)414包括如在啟動時幫助在計算機402內(nèi)的元件之間傳輸信息的基本例程,儲存在ROM 412中。RAM 410通常包含處理單元404立即可訪問和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。
計算機402也可包括其它可移動/不可移動、易失/非易失計算機存儲媒質(zhì)。作為示例,圖4示出了對不可移動、非易失磁媒質(zhì)(未示出)進行讀寫的硬盤驅(qū)動器416、對可移動、非易失磁盤420(如“軟盤”)進行讀寫的磁盤驅(qū)動器418以及對可移動、非易失光盤424,如CD ROM、DVD-ROM或其它光媒質(zhì)進行讀寫的光盤驅(qū)動器422。硬盤驅(qū)動器416、磁盤驅(qū)動器418和光盤驅(qū)動器422的每一個通過一個或多個數(shù)據(jù)媒質(zhì)接口425連接到系統(tǒng)總線408??蛇x地,硬盤驅(qū)動器416、磁盤驅(qū)動器418和光盤驅(qū)動器422可以通過一個或多個接口(未示出)連接到系統(tǒng)總線408。
驅(qū)動器及其關(guān)聯(lián)的計算機可讀媒質(zhì)為計算機402提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失存儲。盡管本示例示出了硬盤416??梢苿哟疟P420和可移動光盤424,可以理解,也可以使用可儲存可由計算機訪問的數(shù)據(jù)惡其它類型的計算機可讀媒質(zhì),如磁帶盒或其它磁存儲設(shè)備、閃存卡、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等,來實現(xiàn)示例性計算系統(tǒng)和環(huán)境。
多個程序模塊可儲存在硬盤416、磁盤420、光盤424、ROM 412和/或RAM 410中,作為示例包括,操作系統(tǒng)426、一個或多個應(yīng)用程序428、其它程序模塊430和程序數(shù)據(jù)432。操作系統(tǒng)426、一個或多個應(yīng)用程序428、其它程序模塊430和程序數(shù)據(jù)432的每一個(或其某一組合)可包括編程框架132的元素。
用戶可以通過諸如鍵盤434和定位設(shè)備436(如“鼠標(biāo)”)等輸入設(shè)備向計算機402輸入命令和信息。其它輸入設(shè)備438(未具體示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、串行端口、掃描儀和/或其類似物。這些和其它輸入設(shè)備通過耦合至系統(tǒng)總線408的輸入/輸出接口440連接到處理單元404,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。
監(jiān)視器442或另一類型的顯示設(shè)備也通過接口,如視頻適配器444連接到系統(tǒng)總線408。除監(jiān)視器442之外,其它輸出外圍設(shè)備可包括諸如揚聲器(未示出)和打印機446等組件,通過輸入/輸出接口440連接到計算機402。
計算機408可以在使用到一個或多個遠程計算機,如遠程計算裝置448的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。遠程計算裝置448可以是個人計算機、便攜式計算機、服務(wù)器、路由器、網(wǎng)絡(luò)計算機、對等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點等。示出遠程計算裝置448為包括本發(fā)明所描述的與計算機402有關(guān)的許多或所有元件和特征的便攜式計算機。
計算機402和遠程計算機448之間的邏輯連接被描述為局域網(wǎng)(LAN)450和一般廣域網(wǎng)(WAN)452。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機402通過網(wǎng)絡(luò)接口或適配器454連接至局域網(wǎng)450。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機402通常包括調(diào)制解調(diào)器456或其它裝置,用于通過廣域網(wǎng)452建立通信。調(diào)制解調(diào)器456可以對計算機402是內(nèi)置或外置的,通過輸入/輸出接口440或其它合適的機制連接至系統(tǒng)總線408??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,也可以使用在計算機402和448之間建立通信鏈路的其它裝置。
在網(wǎng)絡(luò)化環(huán)境中,如使用計算環(huán)境400所示出的,描述的與計算機402或其部分相關(guān)的程序模塊可儲存在遠程存儲器存儲設(shè)備中。作為示例,遠程應(yīng)用程序458駐留在遠程計算機448的存儲器設(shè)備中。為說明目的,本發(fā)明示出應(yīng)用程序和諸如操作系統(tǒng)等其它可執(zhí)行程序組件為離散塊,盡管可以認(rèn)識到,這類程序和組件在不同的時刻駐留在計算裝置402的不同存儲組件中,并由計算機的數(shù)據(jù)處理器執(zhí)行。
框架132的一種實現(xiàn),尤其是API 142或?qū)PI 142作出的調(diào)用,可以儲存在某一形式的計算機可讀媒質(zhì)中或在其上傳輸。計算機可讀媒質(zhì)可以是可由計算機訪問的任一可用媒質(zhì)。作為示例而非局限,計算機可讀媒質(zhì)包括“計算機存儲媒質(zhì)”和“通信媒質(zhì)”。“計算機存儲媒質(zhì)”包括以用于儲存信息的任一方法或技術(shù)實現(xiàn)的易失和非易失,可移動和不可移動媒質(zhì),信息如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。計算機存儲媒質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計算機訪問的任一其它媒質(zhì)。
“通信媒質(zhì)”通常在諸如載波或其它傳輸機制的已調(diào)制數(shù)據(jù)信號中包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。通信媒質(zhì)也包括任一信息傳送媒質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進行編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例而非局限,通信媒質(zhì)包括有線媒質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線媒質(zhì),如聲學(xué)、RF、紅外和其它無線媒質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計算機可讀媒質(zhì)的范圍之內(nèi)。
可選地,框架的部分可以以硬件或硬件、軟件的組合和/或固件來實現(xiàn)。例如,可以設(shè)計或編程一個或多個專用集成電路(ASIC)或可編程邏輯器件(PLD)來實現(xiàn)該框架的一個或多個部分。
編程接口(或簡稱之為接口)可以被視為用于令代碼的一個或多個片斷能與由代碼的一個或多個其它片斷提供的功能進行通信或?qū)ζ溥M行訪問的任一機制、過程、協(xié)議??蛇x地,編程接口可以被視為能夠通信地耦合至其它計算機的一個或多個機制、方法、函數(shù)調(diào)用、模塊等的系統(tǒng)的組件的一個或多個機制、方法、函數(shù)調(diào)用、模塊、對象等。上述語句中的術(shù)語“代碼片斷”意在包括代碼的一個或多個指令或代碼行,并包括,如,代碼模塊、對象、子例程、函數(shù)等等,無論應(yīng)用的術(shù)語是什么、或代碼片斷是否被單獨編譯、或代碼片斷是否被提供為源碼、中間碼或?qū)ο蟠a、代碼片斷是否在運行時系統(tǒng)或進程中使用、或它們是否位于同一或不同機器上或跨多個機器分布、或由代碼片斷表示的功能是否完全由軟件、完全由硬件或硬件和軟件的組合來實現(xiàn)。
概念上,編程接口可以被一般地察看,如圖5或圖6所示的。圖5示出了接口“接口1”為管道,第一和第二代碼片斷通過該管道進行通信。圖6示出了接口包括接口對象I1和I2(可以是或不是第一和第二代碼片斷的部分),它們令系統(tǒng)的第一和第二代碼片斷能通過媒質(zhì)M進行通信。在圖6中,可以認(rèn)為接口對象I1和I2為同一系統(tǒng)的單獨接口,并且也可以認(rèn)為對象I1和I2加上媒質(zhì)M構(gòu)成了接口。盡管圖5和6示出了雙向流程以及該流程的每一側(cè)上的接口,某些實現(xiàn)可僅具有一個方向上的信息流(或如下所述沒有信息流),或僅具有一側(cè)的接口對象。作為示例而非局限,諸如應(yīng)用編程或程序接口(API)、入口點、方法、函數(shù)、子例程、遠程過程調(diào)用和組件對象模型(COM)接口等術(shù)語包含在編程接口的定義之內(nèi)。
這類編程接口的方面可包括第一代碼片斷向第二代碼片斷發(fā)送信息的方法(其中,“信息”以其最廣泛的意義使用,并包括數(shù)據(jù)、命令、請求等等);第二代碼片斷接收信息的方法;以及該信息的結(jié)構(gòu)、序列、語法、組織、模式、定時和內(nèi)容。在這一點上,只要信息以接口所定義的方式傳輸,底層傳輸媒質(zhì)本身可以對接口的操作不重要,無論該媒質(zhì)是有線還是無線,或兩者的組合。在某些情況下,在常規(guī)意義上,當(dāng)一個代碼片斷僅訪問由第二代碼片斷執(zhí)行的功能時,信息可不在一個或兩個方向上傳輸,因為信息傳輸可以是或者通過另一機制(如,信息被放置在與代碼片斷之間的信息流分離的緩存、文件等中)或者不存在。這些方面的任一個或所有可以在給定的情況下重要,如,取決于代碼片斷是否是松耦合或緊耦合配置的系統(tǒng)的一部分,并且因此該列表應(yīng)當(dāng)被認(rèn)為是說明性的而非限制。
編程接口的這一概念對本領(lǐng)域的技術(shù)人員是已知的,并且可以閱讀上述本發(fā)明的詳細描述而清楚這一概念。然而,有其它方法來實現(xiàn)編程接口,并且除非明顯地排除,這些方法也由所附權(quán)利要求書包含在內(nèi)。這些其它方法看似比圖5和6的視圖更精密或復(fù)雜,但是它們?nèi)詧?zhí)行類似的功能來完成同一整體結(jié)果。現(xiàn)在簡要描述編程接口的某些說明性替換實現(xiàn)。
A.分解可以通過將通信分裂成多個離散通信來間接地實現(xiàn)從一個代碼片斷到另一個的通信。這在圖7和8中示意性地描述。如圖所示,可以按照功能的可分組來描述某些接口。由此,可以分解圖5和6的接口功能來達到相同的結(jié)果,如同可以在數(shù)學(xué)上提供24,或2乘2乘3乘2一樣。因此,如圖7所示,可以細分由接口“接口1”提供的功能以將該接口的通信變換成多個接口“接口1A”、“接口1B”、“接口1C”等,而達到相同的結(jié)果。如圖8所示,由接口I1提供的函數(shù)可以被細分成多個接口I1a、I1b、I1c等,而達到相同的結(jié)果。類似地,從第一代碼片斷接收信息的第二代碼片斷的接口I2可以被分解成多個接口I2a、I2b、I2c等。當(dāng)分解時,包括在第一代碼片斷中的接口的數(shù)量不需要匹配包括在第二代碼片斷中的接口的數(shù)量。在圖7或8的任一情況下,接口“接口1”和I1的功能性精神分別與圖5和6的保持相同。接口的分解也可遵從聯(lián)合、通信和其它數(shù)學(xué)性質(zhì),使得分解較難識別。例如,命令操作可以是不重要的,并且因此由接口完成的功能可以在達到該接口之前由另一段代碼或接口較好地完成,或者由系統(tǒng)的單獨組件執(zhí)行。此外,編程領(lǐng)域的普通技術(shù)人員可以理解有各種方式來作出不同的函數(shù)調(diào)用而達到相同的結(jié)果。
B.重定義在某些情況下,可能忽略、添加或重定義編程接口的某些方面(如參數(shù)),而仍達到預(yù)期的結(jié)果。這在圖9和10中示出。例如,假定圖5的接口“接口1”包括函數(shù)調(diào)用Square(input,precision,output)(平方),它包括三個參數(shù),input(輸入)、precision(精度)和output(輸出),并且由第一代碼片斷向第二代碼片斷發(fā)布。如果中間參數(shù)precision在給定的情形下無關(guān)緊要,如圖10所示,它也可以被忽略或甚至由meaningless(無意義)(在這一情況下)參數(shù)來替換。也可以添加無關(guān)緊要的additional(另外)參數(shù)。在任一情況下,只要在輸入由第二代碼片斷平方之后返回輸出,就可以達到square(平方)的功能。Precision也有可能對計算系統(tǒng)的某一下游或其它部分是極有意義的參數(shù);然而,一旦認(rèn)識到precision對計算平方這一有限目的不是必需的,它可以被替換或忽略。例如,不是傳遞一個有效的pricision值,而是在不對結(jié)果產(chǎn)生不利地影響的情況下傳遞諸如出生日期等無意義的值。類似地,如圖10所示,接口I1由接口I1′替換,它被重新定義來忽略或向接口添加參數(shù)。接口I2可類似地被重定義為接口I2′,它被重定義來忽略不必要的參數(shù),或可在別處處理的參數(shù)。此處的要點是在某些情況下,編程接口可包括對某一目的而言所不需要的方面,諸如參數(shù),因此可以忽略或重定義它們,或在別處處理它們用于其它目的。
C.內(nèi)嵌代碼合并兩個單獨的代碼模塊的一些或全部功能也是可行的,使得它們之間的“接口”改變形式。例如,圖5和6的功能可以被分別轉(zhuǎn)化到圖11和12的功能。在圖11中,圖5的先前的第一和第二代碼片斷被合并成包含兩者的模塊。在這一情況下,該代碼片斷仍可以彼此通信,但是該接口可以適用于更適合單個模塊的形式。由此,例如,正式的調(diào)用(Call)和返回(Return)狀態(tài)將不再必需,但是依照接口“接口1”的類似的處理或響應(yīng)仍是有效的。類似地,如圖12所示,圖6的部分(或所有)接口I2可以內(nèi)嵌地寫入接口I1來形成接口I1″。如圖所示,接口I2被劃分成I2a和I2b,并且接口部分I2a內(nèi)嵌在接口I1中書寫代碼來形成接口I1″。對于具體的示例,考慮圖6的接口1執(zhí)行函數(shù)調(diào)用square(input,output),它由接口I2接收,在由第二代碼片斷處理傳遞到input的值(對其求平方)之后,它被使用output傳遞回已求平方的結(jié)果。在這一情況下,由第二代碼片斷執(zhí)行的處理(對input求平方)可以由第一代碼片斷在不調(diào)用該接口的情況下執(zhí)行。
D.脫離可以通過將通信分裂成多個離散的通信來間接地完成從一個代碼片斷到另一個的通信。這在圖13和14中示意性地描述。如圖13所示,提供了中間件的一個或多個片斷(脫離接口(Divorce Interface),因為它們從原始的接口脫離的功能和/或接口函數(shù)),以轉(zhuǎn)化第一接口“接口1”上的通信,使得它們符合不同的接口,在本情況下為“接口2A”、“接口2B”和“接口2C”。這可以在這樣一種情況中完成,例如,依照“接口1”協(xié)議設(shè)計應(yīng)用的已安裝基礎(chǔ)與如操作系統(tǒng)進行通信,但是然后改變該操作系統(tǒng)來使用不同的接口,在本情況下為接口“接口2A”、“接口2B”和“接口2C”。要點是改變了由第二代碼片斷使用的原始接口,使得它不再與第一代碼片斷所使用的接口兼容,因此使用中間物來令舊接口和新接口兼容。類似地,如圖14所示,可以使用脫離接口DI1引入第三代碼片斷以從接口I1接收信息,并使用脫離接口DI2引入第三代碼片斷以向例如接口I2a和I2b發(fā)送接口功能,重新設(shè)計接口I2a和I2b以使用DI2,但是提供相同的功能性結(jié)果。類似地,DI1和DI2可共同工作以將圖6的接口I1和I2的功能翻譯成一新操作系統(tǒng),而提供相同或類似的功能性結(jié)果。
E.重寫再一種可能的變化是動態(tài)地重寫代碼,使用別的東西來替換接口的功能,而仍達到相同的總體結(jié)果。例如,可以有一種系統(tǒng),其中,向執(zhí)行環(huán)境(如由.Net框架提供的環(huán)境、Java運行時刻環(huán)境或其它類似的運行時刻類型環(huán)境)中的及時(Just-in-Time)(JIT)編譯器或解釋器提供了中間語言(如Microsoft IL、JavaByteCode等)中呈現(xiàn)的代碼片斷??梢詴鴮慗IT編譯器以動態(tài)地將通信從第一代碼片斷轉(zhuǎn)化到第二代碼片斷,即,令它們符合第二代碼片斷(原始或不同的第二代碼片斷)所需要的不同接口。這在圖15和16中有描述。如圖16中所看見的,這一方式類似于上述的脫離情形。它可以在這樣一種情況下完成,例如,依照“接口1”協(xié)議設(shè)計應(yīng)用的已安裝基礎(chǔ)操作系統(tǒng)進行通信,然后改變該操作系統(tǒng)以使用不同的接口。JIT編譯器可以用于令已安裝基礎(chǔ)應(yīng)用的空中通信符合操作系統(tǒng)的新接口。如圖16所描述的,可以應(yīng)用這一動態(tài)重寫接口的方法以進行動態(tài)分解,或者改變接口。
應(yīng)當(dāng)注意,上述通過替換實施例實現(xiàn)與接口相同或相似的結(jié)果的情形也可以以各種方式串行、并行或與其它干預(yù)代碼組合。由此,上文呈現(xiàn)的替換實施例并非相互窮盡,并且可以被混合、匹配和組合以產(chǎn)生與圖5和6中所呈現(xiàn)的一般情形相同或等效的情形。也應(yīng)當(dāng)注意,如同大多數(shù)編程構(gòu)造,本發(fā)明可能未描述達到與接口相同或相似的功能的其它類似的方式,但是它們?nèi)杂杀景l(fā)明的精神和范圍來表示,即,應(yīng)當(dāng)注意,它至少部分地是由作為接口的值的基礎(chǔ)的接口表示的功能或由其啟用的有利結(jié)果。
總結(jié)盡管以對結(jié)構(gòu)特征和/或方法行動特定的語言描述了本發(fā)明,應(yīng)當(dāng)理解,所附權(quán)利要求書中定義的本發(fā)明不必局限在所描述的具體特征或行動上。相反,描述了具體特征和行動作為實現(xiàn)所要求權(quán)利的發(fā)明的示例性形式。
權(quán)利要求
1.一種包含在一個或多個計算機可讀媒質(zhì)上的編程接口,其特征在于,它包括與生成圖形對象有關(guān)的第一組服務(wù);與將內(nèi)容格式化有關(guān)的第二組服務(wù);以及與創(chuàng)建所述圖形對象的組件有關(guān)的第三組服務(wù)。
2.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用編程模型。
3.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)使用一公用標(biāo)記語言。
4.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用事件系統(tǒng)。
5.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用特性定義系統(tǒng)。
6.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用輸入范例。
7.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用系統(tǒng),所述公用系統(tǒng)用于在與另一組服務(wù)關(guān)聯(lián)的元素內(nèi)嵌套與一組特定服務(wù)關(guān)聯(lián)的元素。
8.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)包括一確定所述圖形對象的外觀的服務(wù)。
9.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)包括一確定所述圖形對象的行為的服務(wù)。
10.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)包括一確定所述圖形對象的排列的服務(wù)。
11.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)包括定義所述圖形對象的多個嵌套元素。
12.如權(quán)利要求1所述的編程接口,其特征在于,所述圖形對象包括由矢量圖形定義的一個或多個元素。
13.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)可在不裝入新窗口的情況下以標(biāo)記語言定義窗口性質(zhì)。
14.如權(quán)利要求1所述的編程接口,其特征在于,所述第一組服務(wù)生成一包含多個圖形對象的用戶界面。
15.如權(quán)利要求1所述的編程接口,其特征在于,所述第二組服務(wù)排列所述圖形對象。
16.一種包括權(quán)利要求1所述的編程接口的軟件體系結(jié)構(gòu)。
17.一種包含在一個或多個計算機可讀媒質(zhì)上的應(yīng)用程序接口,其特征在于,它包括與生成圖形對象有關(guān)的第一組服務(wù);與將內(nèi)容格式化有關(guān)的第二組服務(wù);以及與創(chuàng)建所述圖形對象的組件有關(guān)的第三組服務(wù),其中,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)共享一公用編程模型。
18.如權(quán)利要求17所述的應(yīng)用程序接口,其特征在于,所述第一組服務(wù)、所述第二組服務(wù)和所述第三組服務(wù)使用一公用標(biāo)記語言。
19.如權(quán)利要求17所述的應(yīng)用程序接口,其特征在于,所述第三組服務(wù)包括生成幾何形狀的服務(wù)。
20.如權(quán)利要求17所述的應(yīng)用程序接口,其特征在于,所述第一組服務(wù)包括對多個數(shù)據(jù)元素進行排列。
21.如權(quán)利要求17所述的應(yīng)用程序接口,其特征在于,所述第一組服務(wù)包括一確定圖形對向的外觀的服務(wù);以及一確定所述圖形對象的行為的服務(wù)。
22.如權(quán)利要求17所述的應(yīng)用程序接口,其特征在于,所述第一組服務(wù)包括一在不裝入新窗口的情況下以標(biāo)記語言定義窗口特性的服務(wù)。
23.一種包括一個或多個微處理器及一個或多個軟件程序的計算機系統(tǒng),所述一個或多個軟件程序使用一編程接口從操作系統(tǒng)請求服務(wù),所述編程接口包括請求服務(wù)的單獨的命令,其特征在于,所述服務(wù)包括以下服務(wù)組用于生成圖形對象的第一組服務(wù);以及用于創(chuàng)建所述圖形對象的組件的第二組服務(wù),其中,所述第一組服務(wù)和所述第二組服務(wù)共享一公用編程模型。
24.如權(quán)利要求23所述的計算機系統(tǒng),其特征在于,所述第一組服務(wù)包括一用于定義所述圖形對象的外觀的服務(wù);以及一用于定義所述圖形對象的排列的服務(wù)。
25.如權(quán)利要求23所述的計算機系統(tǒng),其特征在于,所述第二組服務(wù)包括生成多個幾何形狀的服務(wù)。
26.一種方法,其特征在于,它包括調(diào)用方便生成圖形對象的一個或多個第一函數(shù);以及調(diào)用方便將內(nèi)容格式化的一個或多個第二函數(shù),其中,所述第一函數(shù)和所述第二函數(shù)共享一公用編程模型。
27.如權(quán)利要求26所述的方法,其特征在于,它還包括調(diào)用方便創(chuàng)建所述圖形對象的組件的一個或多個第三函數(shù)。
28.如權(quán)利要求26所述的方法,其特征在于,它還包括調(diào)用方便生成包含在所述圖形對象內(nèi)的幾何形狀的一個或多個第三函數(shù)。
29.如權(quán)利要求26所述的方法,其特征在于,所述第一函數(shù)方便了在不裝入新窗口的情況下以標(biāo)記語言定義窗口特性;以及生成一包含多個圖形對象的用戶界面。
30.一種系統(tǒng),其特征在于,它包括用于展現(xiàn)能夠生成圖形對象的第一組函數(shù)的裝置;用于展現(xiàn)能夠創(chuàng)建所述圖形對象的組件的第二組函數(shù)的裝置,其中,所述圖形對象的組件包括多個幾何形狀,并且其中,所述第一組函數(shù)和所述第二組函數(shù)共享一公用編程模型。
31.如權(quán)利要求30所述的系統(tǒng),其特征在于,所述第二組函數(shù)還能夠在要呈現(xiàn)的頁上排列所述幾何圖形。
32.如權(quán)利要求30所述的系統(tǒng),其特征在于,它還包括用于展現(xiàn)能夠?qū)?nèi)容格式化用于顯示的第三組函數(shù)的裝置。
33.如權(quán)利要求30所述的系統(tǒng),其特征在于,所述第一組函數(shù)和所述第二組函數(shù)使用一公用標(biāo)記語言。
34.如權(quán)利要求30所述的系統(tǒng),其特征在于,所述第一組函數(shù)和所述第二組函數(shù)共享一公用事件系統(tǒng)和一公用特性定義系統(tǒng)。
全文摘要
一種編程接口提供了用于生成應(yīng)用、文檔、媒體演示和其它內(nèi)容的函數(shù)。這些函數(shù)允許開發(fā)者從操作系統(tǒng)、對象模型服務(wù)或其它系統(tǒng)或服務(wù)獲取服務(wù)。
文檔編號G06F17/00GK1609793SQ200410078528
公開日2005年4月27日 申請日期2004年9月10日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者J·L·伯格丹, R·A·雷爾耶 申請人:微軟公司