BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Silverlight应用整合

| 作者 李玮 关注 0 他的粉丝 发布于 2011年4月28日. 估计阅读时间: 9 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Silverlight与企业信息化

在企业应用系统中,企业客户不在满足于呆板的Portal、树形结构、数据堆积的表格和满屏的文字描述。企业客户越来越倡导用户体验,Silverlight迎合了这种需求,实现了炫目的体验和丰富交互的应用,更重要的是Silverlight更适合企业应用系统的开发,依靠.Net平台,使用C#高级语言代替JavaScript脚本语言,实现了强大的客户端计算能力、支持多线程,丰富的控件、特效与动画,更可控的浏览器适应性,更安全的沙箱模式,客户端嵌入式数据库等。

现在企业应用开发有两大阵营,一个是Java,另一个是.NET平台,难道Silverlight只能服务于后者吗?答案:不是。Silverlight定位于,可以快速部署到浏览器中的富互联网应用。Silverlight将要覆盖的领域是“客户端应用程序”和“媒体体验”。Silverlight是为连接到主机的网页内容而设计的,其特点是不但用户可深入地参与到交互中,而且应用还可在任何浏览器中运行。

图1 Silverlight各组件之间的关系

“Silverlight应用”运行于浏览器中的“XAP文件”本身需要使用Microsoft Visual Studio 工具开发,就像“Flash应用”运行于浏览器中的“SWF文件”需要使用AdobeFlex工具开发一样。“Silverlight应用”可以和“Flash应用”一样嵌入到已有的网页中运行,“应用本身”需要数据时再去向后端服务器通讯,例如:“Flash应用”经常使用的从服务器下载“XML数据文件”后再显示于应用中的通讯方案。

Silverlight应用通信原型

Silverlight内嵌在HTML网页中,自然就包含在web浏览器的沙箱内。非常重要的一点是,在Silverlight运行的客户端机器并不需要安装.NET。运行Silverlight应用所需的必要资源全都包含在Silverlight浏览器插件中,所有互操作场景都建立在Silverlight之上。Silverlight应用的最终生的XAP文件,在被用户下载到本地后所有通信任务都是由前端的Silverlight应用通过网络访问后端Server的数据,以回传绑定显示在UI之上。Silverlight支持广泛的网络能力如:REST、SOAP、POX,RSS及标准HTTP服务等网络技术的调用,这部分对前端的Silverlight特别重要。下面所示是通信原型:

图2 Silverlight通信原型

前端的Silverlight通过网络访问后端服务器的数据,并以在UI之上绑定显示回传数据的过程分为以下步骤:

  1. 内嵌在HTML网页中Silverlight应用发起请求或回传数据。
  2. 客户端内存中的“请求”或“数据”被序列化为可传输的字符串,并发送到服务器。
  3. 服务器接收并反序列化传输的字符串为请求或数据到服务端内存中处理。

Silverlight通信技术

Silverlight提供了丰富的与服务器端通信能力,目前Silverlight支持TCP、UDP、Socket等网络协议,以及HttpHandler、WebServices等多种应用层协议,还可以通过WCF RIA Service数据“透明”访问方式(通过向客户端公开数据访问层,屏蔽了通信层手工编码)快速实现实体通信。下面所示为可用于Silverlight的通信技术:

图3 用于Silverlight的通信技术

Silverlight 运行时支持若干将网络应用程序与远程主机进行连接的主要方法:

序号

命名空间

用途

1

System.Net

WebClient

HTTP

这些类使用 HTTP 或 HTTPS 协议来进行网络通信

2

System.Net.Sockets

套接字

这些类提供一个低级别的套接字接口,该接口可用于更常规的使用单播的网络通信

3

System.Net.Sockets

UdpAnySourceMulticastClient UdpSingleSourceMulticastClient

这些类为 UDP 多路广播客户端提供支持

Silverlight 运行时直接支持的连接方法,都可用于非.Net平台的技术平台如:JAVA和PHP等。

数据或命令要正常交换要具备两个必要条件:渠道和通用语义。这里的渠道就是与远程主机的连接方法,这里的通用语义指的就是:“序列化与反序列化”。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以可保持或传输的格式在网络上传送。把对象转换为可保持或传输的格式的过程称为对象的序列化。把可保持或传输的格式恢复为对象的过程称为对象的反序列化。

序号

类型

通途

1

二进制序列化

保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。

2

XML 序列化

不保持类型保真度,当您要提供或使用数据而不限制使用该数据的应用程序时。

3

JSON序列化

不保持类型保真度,一种通用的数据格式,有着存储体积小的特点。

Silverlight应用整合

在原有应用集成方面,如果服务器端使用.Net平台,那么Silverlight客户端程序可以重用原有通信方式,而不必对服务器端程序有较大改动,如果服务器端使用Java平台,Silverlight也提供标准WebServices、Http、Socket多种交互方式进行通信,服务器端只要进行简单的服务封装就可以实现与Silverlight客户端的数据通信。因此,Silverlight基于.Net提供了快速与服务器端程序集成的能力。事实上,在笔者所开发的项目中,已经实现了Silverlight客户端与.Net、J2EE(通过REST接口)、Tuxedo(通过SALT接口)的数据通信。

图4 原有应用集成

因此,Silverlight基于.Net提供了快速与服务器端语言集成的能力。事实上,在笔者所开发的项目中,已经实现了Silverlight客户端与.Net、J2EE(通过REST接口)、Tuxedo(通过SALT接口)的数据连通性。

Silverlight 以前对于支持网络的插件的设计将连接性限制到主机或源站点。这意味着,Web 应用程序只能向后与其部署服务器通信,因此,网络应用程序可以连接到从中下载它们的主机。Silverlight 2 和更高版本包括对跨域连接的支持,这使得应用程序可以访问并非源站点的其他位置中的资源。这是一个重要的功能,它使 Silverlight 应用程序可以使用 Web 上的现有服务。

结束语

企业客户越来越认识到RIA技术对于企业应用的重要性,而Silverlight就是实现企业应用RIA重要的选择之一。Silverlight 定位于“客户端应用程序”,无论是互联网应用中,还是企业应用中,都可以为使用者带来的愉悦感和价值感。在Silverlight的数据与通信的中,除了通信渠道与序列化的问题外,最值得注意的两点:异步模式与同步模式的区别、不同开发平台的数据类型匹配问题。

关于作者

李玮,东南融通公司架构师,负责Silverlight应用程序架构,拥有超过9年的项目实施及管理经验,带领过政府、医药、能源、保险、互联网等多个领域的项目,并一直应用.NET技术进行研发。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

Silverlight应用整合 by 杨 娜娜

顶~~

拜读! by 马 莎

见地深刻

学习 by 胡 杰

恩,对原理有一定的了解了,非常不错

Silverlight应用整合 by 贺 庆亮

说的很好,收益匪浅!

学习 by 胡 杰

看了以后对Silverlight有一定的了解了,非常不错的资料

Silverlight应用整合 by 臭 臭

顶一下,哈

好文章 by Yang Mouse

能总结的这么详细,应该是对Silverlight应用有很深的研究!

拜读! by Liu Alex

讲解的很深刻,很受启发!

学习! by 刘 东

讲的很深刻,学习下!

学习 by 朱 鑫军

不错...

学习了解下 by 段 永明

谢谢分享!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

11 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT