Helloj2ee学Silverlight之三--SL的程序组成和如何在HTML网页里嵌入SL程序

      Helloj2eeSilverlight之三终于如期又和大家见面了。在网上写东西就有这么一点好,如果有一点鼓励,文章就不会太监。所以还希望大家多多捧场。第一篇我们大概说了一下Web程序的组成,第二篇介绍了一下软硬件环境。有人说Helloj2ee这文章就是一个网站的快速建站,说实话真不是。只不过Helloj2ee学习一个东西有自己的方法,就是比较喜欢把原理搞清楚,比较喜欢把全局的东西搞清楚。因此才有前面两章铺垫。

      这一章,Helloj2ee的重点就是分析分析一个SL的程序组成和如何将SL的插件嵌入在HTML网页之中。

         第二章其实我们已经新建过一个HelloSilverlight,我们不妨重新来过,再次新建,从一个更简单的开始。仍然是老方法新建,选择“Silverlight Application”。只不过,我们在下一步的时候不要选择“Host the Silverlight Application in a new Web site”。意即不要将Sivlerlight程序嵌入在一个网站上。如下图所示:

    新建下来的应用程序比较单纯,只有一个工程,两对文件App.xamlApp.xaml.cs,还有就是MainPage.xamlMainPage.xaml.cs。凭借Helloj2ee的直觉,这两个分别对应的是一个应用程序对象,一个是主页面对象。这一点和WPF也非常类似,一个新建的典型WPF程序同样也是App.xamlApp.xaml.csMainWindow.xamlMainWindow.xaml.cs。我们看看下图,他们两者之间的区别。

 

    看起来WPF程序和Silverlight程序非常相像,但是它们之间还是有本质的不同。WPF当中的App派生自Application类,MainWindow派生自Window类,但是这两个类都来自于程序集PresentationFramework.dll。而Silverlight程序,App派生自ApplicationMainWindow派生自UserControl,他们属于system.windows.dll程序集。

    他们各自的目录也有所不同,在Helloj2ee的机器上(一定要注意我们第二部分说的使用的环境是VS2010RCSL3。)是分别在如下两个目录的:

1C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\

2C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\

     我们不惜探究App对象和MainWindow对象之间的关系,我想这应该是我们下一章所要探究的。仍然是在MainPage里添加上一行文本“Hello Silverlight”,不妨运行程序,如下所示:

 

    要说这VS工具还真是好,他会自动给你生成一个HTML网页,然后将SL的东西嵌入在里面,用于测试。我们在网上浏览的多是HTML页面,但是页面里面还会有视频或者其他的东西,这些都不是HTML自身的东西,而是以一种插件的形式插入在HTML页面当中。SL也是一种插件。

      我们不妨看一下工程下面在.. HelloSilverlight\Bin\Debug目录下面会自动生成一个网页名为HelloSilverlightTestPage.html,这个网页正是嵌入了Silverlight的小插件的网页。而Silverlight小插件在哪儿呢?同样就是这个目录里面的HelloSilverlight.xap文件。这个网页有点长,Helloj2ee打算自己写一个网页嵌入SL的插件。

         我们不妨在这个HelloSilverlight工程里新建一个HTML网页,名为Default.htm,如下图所示:

   在VS当中会自动生成如下网页:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    
<head>
        
<title></title>
    
</head>
    
<body>
    
</body>
</html>

 

    嵌入SL插件最简单的办法就是在HTML里使用Object标签。如下所示:

 

代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    
<title></title>
</head>
<body>
    
<object width="100%" height="100%" data="data:application/x-silverlight-2," 
    type
="application/x-silverlight-2">
        
<param name="source" value="Bin/Debug/HelloSilverlight.xap" />
    
</object>
</body>
</html>

 

 

 

对这个Object里面的各属性,HelloJ2ee在这里稍作解释:

1)首先是WidthHeight属性,这里使用的都是一个相对坐标,100%意思就是这网页,我SL都给你占用了;

2type属性表示的是插件的类型和版本,从名字上来看,我们不难看出它是Silverlight插件,但是后面还有一个2,并不是说这是SL2,实际上SL2以后的版本,不知道为什么微软都是使用2来表示的。参见下表:

 

Version

MIME Type

Version Number

Installer URL

Silverlight 1.0

application/x-silverlight

1.0

http://go.microsoft.com/fwlink/?LinkId=110408

Silverlight 2

application/x-silverlight-2

2.0.31005

http://go.microsoft.com/fwlink/?LinkID=124807

Silverlight 3

application/x-silverlight-2

3.0.40624

http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0

Silverlight 4 Beta

application/x-silverlight-2

4.0.41109

http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.41109.0

 

    该表来自参考文献[1],不过根据Helloj2ee所知,实际上这里面至少还少了一项,因为目前VS2010RC所使用的Silverlight3并不是3.0.40624版本,下表是HelloJ2ee为微软的文档无偿义务添加的一项。微软的同仁倘若看到,无论对错,都可以看看,倘若对,不用发表意见,错可一定要指出,以免Helloj2ee误人子弟,遗臭万年。

Silverlight 3

application/x-silverlight-2

3.0.40818

http://go.microsoft.com/fwlink/?LinkID=91955&v=3.0.40818.0

    

3)还有就是data属性了,Silverlight官方文档就推荐它的值应该写成这样“data:application/x-silverlight-2,”,至于后面这个逗号,还不能丢,表示第二个值是个空值。官方文档上的解释是为了防止某些浏览器的性能下降,因此添加这个属性。Hellj2ee使用的是IE7,有无该属性,都能正常运行。

4)再下面就是这个paramObject下面可以有若干个param,但是最重要的就是这个Source了,这个Source指定的就是SL插件的文件所在的地方。我们可以看到Default.htm在工程的根目录下即\HelloSilverlight\目录下,而HelloSilverlight.xap在目录HelloSilverlight\Bin\Debug\之下,因此这里的Source值写成“Bin/Debug/HelloSilverlight.xap”。注意反斜杠,一定要反。

         好了,接下来我们就可以运行程序了,当然运行之前还需要设置一下,需要将运行的文件指定为Default.htm。指定的方法也非常简单,需要将工程的属性页其中的Debug分页当中Start Action设置成该网页。如下图所示:

    这样我们就可以顺利运行程序了,和第二章的道理一样,我们可以将它部署在IIS上,所需要的只是两个文件,一个Default.htmHelloSilverlight.xap,部署在IIS上需要注意的是他们文件的相对位置一定要正确。Default.htm放在当前目录,那么HelloSilverlight.xap一定要放在当前目录\Bin\Debug直线,或者对Default.htm当中的Source值略作修改。

    当然作为可用性上来说,我们还要考虑到,如果机器上的浏览器没有安装Silverlight插件的话,要提示用户下载去安装这些问题,但是Helloj2ee只提最为关键的部分,剩下的相信诸位去参考Silverlight的参考手册,一定不会费力的。请参见参考文献[2]

    本章附带源码:/Files/helloj2ee/HelloSilverlight.rar

参考文献

[1] Silverlight DocumentationSilverlight 4 BetaSilverlight Plug-in Versioning

[2] Silverlight DocumentationSilverlight 4 BetaHow to: Add Silverlight to a Web Page by Using HTML

 

posted @ 2010-03-12 16:19  helloj2ee  阅读(1387)  评论(2编辑  收藏  举报