C# NGWS runtime虛擬對(duì)象系統(tǒng)
C# NGWS runtime虛擬對(duì)象系統(tǒng)(VOS)
你知道NGWS runtime如何工作嗎?了解它工作的技術(shù)背景以及為什么它要這樣工作?這節(jié)都是關(guān)于C# NGWS runtime虛擬對(duì)象系統(tǒng)的(VOS)。
以下為在VOS中形成聲明、使用和管理類(lèi)型模型時(shí),NGWS runtime的規(guī)則。在VOS背后的思想是建立一個(gè)框架,在執(zhí)行代碼時(shí)不能犧牲性能,允許交叉語(yǔ)言集成和類(lèi)型安全。
我提到的框架是運(yùn)行時(shí)架構(gòu)的基礎(chǔ)。為了幫助你更好地了解它,我將它勾出四個(gè)區(qū)域。當(dāng)開(kāi)發(fā)C#應(yīng)用程序和組件時(shí),理解它們很重要。
VOS類(lèi)型系統(tǒng)——提供豐富的類(lèi)型系統(tǒng),它打算支持全面編程語(yǔ)言的完全實(shí)施。
元數(shù)據(jù)——描述和引用VOS類(lèi)型系統(tǒng)所定義的類(lèi)型。元數(shù)據(jù)的永久格式與編程語(yǔ)言無(wú)關(guān),但是,元數(shù)據(jù)拿自己當(dāng)作一種互換機(jī)制(nterchange mechanism)來(lái)使用,這種互換是在在工具和NGWS的虛擬執(zhí)行系統(tǒng)之間。
通用語(yǔ)言規(guī)范(CLS)——CLS定義了VOS中類(lèi)型的子集,也定義了常規(guī)的用法。如果一個(gè)類(lèi)庫(kù)遵守CLS的規(guī)則,它確保類(lèi)庫(kù)可以在其它所有能實(shí)現(xiàn)CLS的編程語(yǔ)言上使用。
虛擬執(zhí)行系統(tǒng)(VES)——這是VOS實(shí)時(shí)的實(shí)現(xiàn)。VES負(fù)責(zé)裝入和執(zhí)行為NGWS運(yùn)得時(shí)編寫(xiě)的程序。
這四個(gè)部分一起組成了NGWS runtime架構(gòu)。每一部分在下面小節(jié)中描述。
C# NGWS runtime虛擬對(duì)象的類(lèi)型系統(tǒng)
VOS類(lèi)型系統(tǒng)提供豐富的類(lèi)型系統(tǒng),它打算支持多種編程語(yǔ)言的完全實(shí)施。所以,VOS必須都支持面向?qū)ο蟮恼Z(yǔ)言和過(guò)程編程語(yǔ)言。
現(xiàn)在,存在著很多種近似但有點(diǎn)不兼容的類(lèi)型。就拿整型當(dāng)例子,在VB中,它是16位長(zhǎng),而在C++中,它是32位。還有更多的例子,特別是用在日期和時(shí)間以及數(shù)據(jù)庫(kù)方面的數(shù)據(jù)類(lèi)型。這種不兼容使應(yīng)用程序的創(chuàng)建和維護(hù)不必要地復(fù)雜化,尤其當(dāng)程序使用了多種編程語(yǔ)言時(shí)。另一個(gè)問(wèn)題是,因?yàn)榫幊陶Z(yǔ)言之間存在著一些差別,你不能在一種語(yǔ)言中重用另一種語(yǔ)言創(chuàng)建的類(lèi)型。(COM用二進(jìn)制標(biāo)準(zhǔn)接口部分地解決了這個(gè)問(wèn)題)。 當(dāng)今代碼重用肯定是有限的。
發(fā)布應(yīng)用程序的最大障礙是各種編程語(yǔ)言的對(duì)象模型不統(tǒng)一。幾乎每一方面都存在著差異:事件、屬性、永久保存(persistence)等等。
VOS這里將改變 這種現(xiàn)象 .VOS定義了描述值的類(lèi)型,并規(guī)定了類(lèi)型的所有值所必須支持的一條合約。由于前面提到的支持面向?qū)ο蠛瓦^(guò)程編程語(yǔ)言,就存在著兩種值和對(duì)象。
對(duì)于值,類(lèi)型存儲(chǔ)于表述(representation)中,同樣操作也在其中實(shí)行。對(duì)象更強(qiáng)大因?yàn)樗@式地存于表述中。每一個(gè)對(duì)象都有一個(gè)區(qū)別于其它對(duì)象的識(shí)別號(hào)。支持不同的VOS類(lèi)型在第四章 "C#類(lèi)型"中提出。
【編輯推薦】