Browser는 Silverlight를 언제, 어떻게 다운로드하고 실행할까요? HTML을 구성하는 모든 DOM요소가 Parsing되고 나서 Silverlight가 읽히는 걸까요? 만약 Silverlight를 Initialize하는 정보를 HTML페이지에 둬야 한다면 언제 어디에 둬야 할까요?
이 모든 궁금증을 해결하기 위해 실험을 진행하였으며, 그 페이지 구조와 소스 코드는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <!-- Check Read Head Area --> <script> alert("HTML : Load Header"); </script> <title>Silverlight Test</title> <script type="text/javascript" src="Silverlight.js"></script> </head> <body> <form id="frm" runat="server" style="height:100%">
<!-- Check Read Pre Silverlight Resource --> <script> alert("HTML : Before Load Image1"); </script> <img src="Images/whale.jpg" style="width: 100px; height: 100px;" /> <script> alert("HTML : After Load Image1"); </script> <!-- Check Read Silverlight Resource --> <div id="silverlightControlHost" style="height: 300px; width: 100%;"> <script> alert("HTML : Before silverlight object"); </script> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"> <param name="source" value="ClientBin/Test.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="3.0.40624.0" /> <param name="autoUpgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/> </a> </object> <script> alert("HTML :After silverlight object 1"); </script> <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe> </div> <!-- Check Read Resource After Silverlight --> <script> alert("HTML : Before Load Image2"); </script> <img src="Images/whale.jpg" style="width: 100px; height: 100px;" /> <script> alert("HTML : After Load Image2"); </script> </form> </body> </html>
HTML 페이지의 각 주요 부분에 Alert Message를 나타내는 코드를 삽입함으로써 순서를 확인합니다. Test.xap라는 Silverlight 개체 내부에도 주요 이벤트와 생성자에 MessageBox.Show()를 두었습니다.
출력된 Message를 그대로 나열하면 다음과 같습니다. 이는 FF3, IE8에서 실행한 출력결과 값입니다.
위의 결과를 종합적으로 판단해보면 다음과 같은 몇 가지 결론이 도출됩니다.
다음에는 서버에서 출력한 Cookie나 각 인증서 또는 암호화 자원 등이 어느 시점에 어디에서 초기화되고 관리되는지 파악해야겠네요.