Silverlight3系列(九)Silverlight 及其相关技术简介

本文介绍了Silverlight应用及其与WCF服务的通信机制。涵盖了RIA应用的特点、Silverlight控件使用、数据绑定与验证、离线存储机制、WCF安全配置等内容。适合希望深入了解Silverlight开发与WCF服务集成的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Silverlight应用类型

  •RIA Rich Internet Applications

  •是一种具有近似于传统桌面应用软件系统功能和特性的网络应用系统。RIA系统最大的特点是将大部分处理任务都从用户界面端移植到客户端,仅保留一些必要数据与服务器端进行信息交互。

  •RIA系统的特性:–运行于浏览器中,不需要额外安装支持软件 –在本地运行时,受安全沙箱全程保护。

2、Silverlight中的ABC

  •<endpoint address="" binding="basicHttpBinding" contract="WcfService.IServiceCustomer">

  •A address  访问地址

  •B basicHttpBinding 绑定协议(目前就支持这一种)•C contract 契约

3、常用控件使用

  •Silverlight控件应用开发

4、契约

  服务契约 ServiceContract
  操作契约 OperationContract

ExpandedBlockStart.gif 代码

  
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
[ServiceContract]
public interface IServiceCustomer
{
[OperationContract]
Domain.Server. Customer GetCustomer(SysUser user,
int customerId);
[OperationContract]
IList
< Domain.Server.Customer > GetAll(SysUser user);
[OperationContract]
void Add(SysUser user,Domain.Server.Customer customer);
[OperationContract]
string SayHello(SysUser sysUser);
}

 

  •数据契约 DataContract

  •成员契约 DataMember

 

ExpandedBlockStart.gif 代码

  
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> [DataContract]
public class Customer
{
private int _intCustomerId;
private string _strCustomerName;
[DataMember]
public virtual int CustomerId
{
get { return this ._intCustomerId; }
set { this ._intCustomerId = value; }
}
[DataMember]
public virtual string CustomerName
{
get { return this ._strCustomerName; }
set { this ._strCustomerName = value; }
}
}

 

5、序列化

  •序列化的目的就是把一种私有的或者某种平台下使用的数据类型转化为标准的可以公开交互的数据信息样式。这个过程就叫序列化。序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。

  • 序列化就是把本地消息或者数据的类型进行封送,转换为标准的可以跨平台、语言的信息集,为别的系统或者服务所用。

6、Silverlight 应用程序中XAP文件

  •XAP文件是Silverlight 应用程序编译打包后的一个文件,它是一个标准的zip压缩文件,包括了Silverlight 应用程序所需的一切文件,如程序集、资源文件等。

  •客户端访问sl网站之后会下载到客户端

  •可以动态加载

  •体积优化

  •Assembly Caching

7、Silverlight中的离线存储

  •离线存储 Isolated Storage

  •关于 Silverlight3 的离线模式

  •高级编程 chapter18

  •详解Silverlight 2中的独立存储(Isolated Storage

  •独立存储(Isolated Storage)是Silverlight 2中提供的一个客户端安全的存储,它是一个与Cookie机制类似的局部信任机制。独立存储机制的APIs 提供了一个虚拟的文件系统和可以访问这个虚拟文件系统的数据流对象。Silverlight中的独立存储是基于 .NET Framework中的独立存储来建立的,所以它仅仅是.NET Framework中独立存储的一个子集。

  •Silverlight中的独立存储有以下一些特征: –每个基于Silverlight的应用程序都被分配了属于它自己的一部分存储空间, 但是应用程序中的程序集却是在存储空间中共享的。一个应用程序被服务器赋给了一个唯一的固定的标识值。基于Silverlight的应用程序的虚拟文件系统现在就以一个标识值的方式来访问了。这个标识值必须是一个常量,这样每次应用程序运行时才可以找到这个共享的位置。   –独立存储的APIs 其实和其它的文件操作APIs类似,比如 File 和 Directory 这些用来访问和维护文件或文件夹的类。 它们都是基于FileStream APIs 来维护文件的内容的。 –独立存储严格的限制了应用程序可以存储的数据的大小,目前的上限是每个应用程序为1 MB。 –在SL3中增大为25MB

8、SL3的独立存储

  •Silverlight 3 提供了强大的离线模式,通过离线模式,你可以获得如下益处:

  •增加用户访问应用的粘度
通过提供离线的模式,增加用户对应用的粘。

  •提供离线体验
可以提供无需网络的应用体验。

  •运行于安全沙箱
通过沙箱机制,提供更加可靠的安全浏览体验。

  •不需要管理员权限 更加灵活的安装。

  •独立存储空间(Isolated Storage)更大

提供 25M 的默认独立存储空间。

  •网络状态支持
提供对网络状态变化的事件响应支持。

  •自动升级
自动检测服务器应用的更新状态,即时更新应用。 在线、离线状态定制
可根据在线、离线状态调用不同 UI

9、数据绑定

  •绑定一个对象

  •2、双向绑定

  •3、绑定服务

  •4、绑定集合 –ItemsSource –DisplayMemberPath –ItemTemplate –ItemsPanel

  •5、数据格式转换

  •Silverlight3高级编程 Chapter 16

10、数据验证

  •ValidatesOnException

  •2、NotifyOnValidationError

  •3、Validation Class 验证类

  •4、Input Validation输入验证

  •Silverlight3高级编程 P548-P553

  •技巧:在Silverlight应用程序中进行数据验证 Silverlight3系列(六)数据验证 Data Validation

11、数据库的三种交互方式比较


12、知识点:版本

  •RTM版是最终压盘版,Release To Manufacturing,也就是交付给光盘制作厂商,这和最终发布版一样。发布RTM后,厂商若要修改就只有通过发布SP来完成了。

  •RC版是发布候选版,Release Candidate,一般是RTM版本前的几个预览版,但是这个阶段来说基本功能已经完成,主要是用来捉bug了,所以发布RC后,基本功能不会有大的变化了,只要各种测试能够通过,这也表明最终发布不远了。

  •CTP是社群技术预览版,Community Technology Preview,这个版本只是用来在社区内发布,验证市场情况和用户认可度,早于RC版,就像Atlas,在发布了多个CTP后,突然剑峰一转,变为了ASP.NET AJAX,所以说CTP版本不一定可靠,可能在功能上都会有大的变化。

13、整体架构

14、好处

  •可以分层开发,不用每个人从底层写到上层,集中精力,精益求精,方便后期优化

  •中间层可插拔,中间层可以优化,可扩展性

  •ORM

  •增加可测试性

15、WCF

  •WCF全称Windows Communication Foundation,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。

  •WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+)、.Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。

16、WCF身份验证机制

17、WCF Transfer的安全模式

18、WCF安全模式与绑定协议

绑定/安全模式

None

Transport

Message

Mixed

Both

BasicHttpBinding

Yes(default)

Yes

Yes

Yes

No

NetTcpBinding

Yes

Yes(default)

Yes

Yes

No

NetPeerTcpBinding

Yes

Yes(default)

Yes

Yes

No

NetNamedPipeBinding

Yes

Yes(default)

No

No

No

WSHttpBinding

Yes

Yes

Yes(default)

Yes

No

WSFederationHttpBinding

Yes

No

Yes(default)

Yes

No

WSDualHttpBinding

Yes

No

Yes(default)

No

No

NetMsmqBinding

yes

Yes(default)

Yes

No

Yes

Silverlight和WCF通信的绑定协议目前只支持BasicHttpBinding

19、Transport安全模式与客户端凭据

绑定/安全模式

None

Windows

Username

Certificate

BasicHttpBinding

Yes(default)

Yes

Yes

Yes

NetTcpBinding

Yes

Yes(default)

No

Yes

NetPeerTcpBinding

No

No

Yes(default)

Yes

NetNamedPipeBinding

No

Yes(default)

No

No

WSHttpBinding

Yes

Yes(default)

Yes

Yes

WSFederationHttpBinding

N/A

N/A

N/a

N/A

WSDualHttpBinding

N/A

N/A

N/A

N/A

NetMsmqBinding

Yes

Yes(default)

No

Yes

20、消息安全模式与客户端凭据

绑定/安全模式

None

Windows

Username

Certificate

Issued token

BasicHttpBinding

No

No

Yes

Yes

No

NetTcpBinding

Yes

Yes(default)

Yes

Yes

Yes

NetPeerTcpBinding

N/A

N/A

N/A

N/A

N/A

NetNamedPipeBinding

N/A

N/A

N/A

N/A

N/A

WSHttpBinding

Yes

Yes(default)

Yes

Yes

Yes

WSFederationHttpBinding

N/A

N/A

N/A

N/A

N/A

WSDualHttpBinding

Yes

Yes(default)

Yes

Yes

Yes

NetMsmqBinding

yes

Yes(default)

Yes

Yes

Yes

21、安全

  •传输安全 https <security mode="Transport">

  •消息安全 username/pw-combination

    –No authentication.

    –Authentication through method parameters

    –Authentication through message headers

    –Authentication through message headers by implementing an operation behavior. Every method decorated with this attribute will automatically perform username/pw authentication.

22、Web.config中的WCF安全配置

• <bindings >

•      <basicHttpBinding >

•        <binding>       

•          <security mode="TransportCredentialOnly">

•            <transport clientCredentialType="None"/>

•            <message clientCredentialType="UserName"/>

•          </security>

•        </binding>

•      </basicHttpBinding>

•    </bindings>

23、开发分工

  •横向分层发开

24、有用的连接

  •Silverlight客户端和WCF服务器端共享类

  •Silverlight 3 - MultiThreading编程

  •Silverlight 3 高级编程 Chapter 19 MultiThreading

 

下面是原文的PPT下载:Silverlight数据通信.pptx

 

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值