2010 Silverlight Json 数据与通信

环境Microsoft Visual C# 2010 Beta2

      2010 集成Silverlight 3开发环境 .net 4.0

 

根据TerryLee的一步一步学Silverlight 2系列修改

1、建立一个Silverlight 项目

 

 

2、建立项目完成后系统会自动产生一个web项目用以运行Silverlight程序

 

3、Silverlight是客户端程序,我们从服务端开始。使用Handler和WebRequest获取后台数据

Handler代码如下  添加新项 -> 选择 generic handler,生成一个扩展名为ashx的web文件

打开编辑其代码,本例代码如下

DataContractJsonSerializer 对象属于System.Runtime.Serialization.Json 命名空间.net已经内置Json序列化支持

4、实体类

在这里需要注意一个问题,我们现在有两个项目一个web项目它是基于.net4.0,另外一个Silverlight项目。

在2010Beta2,这两个项目编译的dll对应的.net版本不同,不可以互相引用。估计即使不是beta版该问题也依然存在。

对于本例来说实体类放在Silverlight项目那web项目也引用不到,只能在两个项目中把实体类写两遍。

 

5、现在开始写Silverlight客户端。2010默认建的程序里有一个页面MainPage.xaml,我们可以修改之,或者另外建一个。

在Silverlight项目右键菜单,添加新项 -> 选择 Silverlight User Control,建一个名为JasonList1.xaml的页面。

本页用listbox显示一个三列的数据列表

 

获取数据的代码如下:

UserControl_Loaded和winform一样,在空处双击一下就自动生成该函数。

 

        可以看到访问前面写的Handler通过webRequest获取数据,并使用了.net内建的System.Runtime.Serialization.Json命名空间下的DataContractJsonSerializer对象。

 

       另外需要注意的是使用了SynchronizationContext对象,位于System.Threading命名空间,这个是解决跨线程访问UI对象的问题。

 

对此没有概念的用户可能会对使用syn.Post(SetPost, blog) 这种方法绑定感到莫名其妙,为什么不直接

Posts.ItemsSource = blog.Posts而要转去syn.Post(SetPost, blog) 呢。

 

6、下了一个开源项目Jason.net,不过试用不了还是版本的问题。也就是说Silverlight可能会使用一个.net 2.0的精简版本吧,反正它和一般的.net程序使用FrameWork就是不能共用。这还是个问题,不过对于序列化功能,.net已经内建Json序列化,Silverlight也同样,这倒是个好事。所以本例并没有用到第三方的Jason.net。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值