Silverlight 結構分析

2021-09-22 04:18:35 字數 3081 閱讀 4703

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

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

1.整體結構

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的**以及應用程式的**就可以在瀏覽器中執行了。

2.1coreclr與clr

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

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

-   只需要提供workstation gc.

2.2coreclr安全模型

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

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

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

2.3silverlight bcl

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

-減少尺寸

-新增特性

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

2.4跨平台支援

silverlight提供了乙個平台抽象層來支援更多的作業系統例如macos x,如下圖:

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

3.執行3.1silverlight執行環境

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

3.2silverlight執行順序

最後我們看一下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...