Silverlight 結構分析

2021-08-25 12:58:04 字數 2471 閱讀 8102

silverlight是微軟提供的一種web前端應用程式開發框架,是微軟ria的主要應用程式開發平台。silverlight以瀏覽器的外掛程式方式,提供豐富的多**展示功能以及更多互動性的web前端解決方案。

本文的重點在於**silverlight的整體架構,以及silverlight應用程式是如何在瀏覽器中執行的,各個子部分的作用是什麼。

silverlight是以瀏覽器外掛程式方式執行的,在安裝完silverlight後,我們來看一下安裝目錄:c:/programfiles/microsoft silverlight/4.0.50917.0,主要檔案如下:

-npctrl.dll

實現了瀏覽器plug-in介面,silverlight通過這個activex控制項與宿主瀏覽器進行互動。該assembly會呼叫agcore來進行繪製,以及coreclr來建立clr,silverlight應用程式就是依賴於這個clr中而被執行的。

-agcore.dll

silverlight presentation foundation,包括多**展示、基於向量的繪製引擎等等。這個dll為什麼會以「ag」打頭哪?在元素週期表中銀(silver)是47號元素,被稱為ag(拉丁語),所以微軟就把silverlight的展現層assembly稱為「agcore」了-:)

-coreclr.dll

-mscorlib.dll

-system.*.dll

coreclr簡單來說就是clr for silverlight,就是專門為silverlight而定製的clr,用來執行silverlight**。其他的dll檔案在wpf的類庫中都有,只不過現在尺寸小了很多,這是作為瀏覽器應用所必須的。

下圖是silverlight architecture的圖例,你可以把上面的dll對號入座:

如何才能使.net**在web前端執行,如何才能使我們熟悉的.net技術繼續適用於web前端,於是微軟退出了coreclr。簡單來說就是coreclrbring .net to web.

如同clr可以使得.net**在桌面應用程式中執行一樣,有了coreclr,.net framework的**以及應用程式的**就可以在瀏覽器中執行了。

coreclr與clr有什麼差別哪?首先兩者是基於同乙份**庫,其執行引擎完全相同。只是為了使的clr更適合web,做了一些事情:

- 基於web應用場景,對jit進行優化,加快程式啟動時間;

- 只需要提供workstation gc.

web應用程式都是不被信任的,你不能容忍乙個web應用程式來操縱使用者本地的資料,或者在瀏覽器中的其他應用程式。

一貫以來,.net開發人員使用cas來阻止不受信任的**執行特權操作。考慮到silverlight只需乙個沙箱,而該沙箱又等同於 web頁面中用來執行指令碼的沙箱。coreclr簡化了安全模型,去掉了cas模型,定義所有的應用程式**都是透明**,信任級別最低,它無法提公升許可權或訪問計算機上的敏感資源或資訊。

對於silverlightoob的應用來說,可以通過一些配置來使其在受信環境中執行。

silverlight base class library是.net base class library的子集,完全基於原來的**基構建。為了適應web應用的需求,做了一些改變:

-減少尺寸

-新增特性

同時也為silverlight新增了必要的特性功能,例如isolatedstorage等等。

在pal層上定義了跟win32相同的api介面,在mac作業系統上會被重新定向。

下圖是msdn關於silverlight執行環境的圖例:

最後我們看一下silverlight應用在瀏覽器中是如何被執行的:

- 瀏覽某個帶有silverlight的網頁

- 瀏覽器載入plug-in

- plug-in建立coreclr以及其他的服務

全文完。

最近再做一些基於silverlight的控制項開發,感覺需要從結構上來梳理一下silverlight。

寫的比較倉促,希望批評指正。

Silverlight 結構分析

silverlight是微軟提供的一種web前端應用程式開發框架,是微軟ria的主要應用程式開發平台。silverlight以瀏覽器的外掛程式方式,提供豐富的多 展示功能以及更多互動性的web前端解決方案。本文的重點在於 silverlight的整體架構,以及silverlight應用程式是如何在瀏...

Silverlight 結構分析

silverlight是微軟提供的一種web前端應用程式開發框架,是微軟ria的主要應用程式開發平台。silverlight以瀏覽器的外掛程式方式,提供豐富的多 展示功能以及更多互動性的web前端解決方案。本文的重點在於 silverlight的整體架構,以及silverlight應用程式是如何在瀏...

分析Silverlight跨域呼叫

分析silverlight跨域呼叫 在silverlight開發的過程中不免要遇到跨域的問題,在這裡以跨域呼叫webservice為例子來分析一下跨域的問題。先介紹一下我的測試專案,我用flash和silverlight一同來呼叫乙個webservice,乙個flash客戶端,乙個silverlig...