Windows 8 – Windows Metadata的歷史

OK,一個全新的東西有何歷史可言?事實上,Windows Metadata本身並非是一個全新的東西,她最早的雛形

出現在.NET Framework 3.5 SP1,當初是為了Client Profile的目的而發明。

 

文/黃忠成

 

 

  OK,一個全新的東西有何歷史可言?事實上,Windows Metadata本身並非是一個全新的東西,她最早的雛形

出現在.NET Framework 3.5 SP1,當初是為了Client Profile的目的而發明。

圖1

用IL DASM去看Client Profile裡的Assembly定義,你會發現到其只有類別、函式等定義,並不包含真實的程式碼。

圖2

也就是說,這些Assembly是為了讓IDE可以完成intellisense及編譯應用程式而存在的,相較於直接載入完整的Assembly,載入這些

僅只有類別、函式定義的Assembly將可獲得更快的效能。

從.NET Framework 4.0開始,這個手法發揮到了極致,所有IDE所參考的Core Assemblys全部都是僅包含Metadata的。

圖3

那完整的Assembly在哪?在Windows\Microsoft\.NETFramework目錄及GAC。

 

緊接著,Windows Phone 7出現了,其真正的Assemblyes位於Windows Phone模擬器及真正的Windows Phone手機中。

 

然後,Portable Library出現了,除了使用同一種手法來定義Assemblys之外,其還運用了Retargetable、class forwarder技巧

讓開發的Assemblys可以直接運用於.NET Platform(.NET Framework,XBox,Metro Style,WP7,Silverlight)

 

幾乎是同時(大概已不可考),Windows Metadata出現了。

所以,Windows Metadata並非是新手法及格式,早在WinRT出現之前,Microsoft就運用此手法來提升IDE效能了,WinRT只是把對應的

對象由.NET Framework Assembly換成Windows Runtime API。