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。