Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

Silverlight 应用整合

  • 2011 年 4 月 27 日
  • 本文字数:2574 字

    阅读完需:约 8 分钟

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 技术进行研发。

2011 年 4 月 27 日 18:032595

评论

发布
暂无评论
发现更多内容

解读华为云原生数据库设计原则,打破传统数据库上云瓶颈

华为云开发者联盟

数据库 数据

for-range造就循环永动机?快来看看go中for-range的那些事!

Gopher指北

后端 for Go 语言

关于互联网留存和收益你知道多少—带你走近用户成长体系

滴滴普惠出行

初学源码之——银行案例手写IOC和AOP

Java架构师迁哥

写给新人算法工程师

峰池

互联网 新人 推荐算法 算法工程师

一文纵览向量检索

华为云开发者联盟

数据 搜索 检索 检查

PPT画成这样,述职答辩还能过吗?

小傅哥

Java 小傅哥 流程图 架构师 PPT

揭秘App的财富密码,剖析算法工程师价值来源

峰池

人工智能 互联网 推荐算法 互联网公司

戴尔G系列游戏本助玩家激战英特尔大师挑战赛

新闻科技资讯

数字货币是大势所趋,新冠疫情后必须率先发展DCEP

CECBC

数字货币 银行

一个草根的日常杂碎(9月27日)

刘新吾

随笔杂谈 生活记录 社会百态

中国Prime会员独享巅峰64小时超长跨境网购时间

爱极客侠

华为全联接2020:环信AI领跑,输出5大行业最佳实践

DT极客

H5选图预览到上传最佳实践

阿里云金融线TAM SRE专家服务团队

android H5

牛皮!应届生面试阿里Java岗,七轮过后定级P6,薪资44.8W

面试 计算机基础 编程开发 架构师技能

世界的下一个主宰——人工智能

CECBC

人工智能 智能时代

清华架构师整理分布式系统文档:从实现原理到系统实现,收藏吧

小Q

Java 程序员 架构 分布式 微服务

公有云厂商哪家强?本月UCloud、百度云、阿里云位居三甲——2020年8月云主机性能评测排名

博睿数据

实践分享丨物联网操作系统中的任务管理

华为云开发者联盟

华为 数据 物联网 进程

深入理解MySQL中事务隔离级别的实现原理

X先生

MySQL 数据库 后端 事务

关于深浅拷贝

西贝

Java 大前端 基础

Electron 快速入门及最新安装教程

程序员学院

Java html 大前端 Electron node,js

Binder那么弱怎么面大厂?

博文视点Broadview

Java android 通信 移动开发 Android进阶

一文领略 HTTP 的前世今生

yes

互联网 网络 HTTP 阿帕网

区块链会替代大数据吗?

CECBC

区块链 大数据

bug 回忆录(一)

志学Python

奈学开发者社区分享:Java - 设计模式的7个设计原则

奈学教育

Java 设计模式 设计原则

大学四年我是怎么写操作系统和计算机网络的?掏心掏肺的分享!

小林coding

学习 程序员 计算机网络 操作系统 计算机基础

一个草根的日常杂碎(9月28日)

刘新吾

随笔杂谈 生活记录 社会百态

奈学开发者社区分享:Java - 设计模式的7个设计原则

古月木易

Java 设计模式

三年筑一“用”:长跑中的智能IP网络

脑极体

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

Silverlight应用整合_Java_李玮_InfoQ精选文章