使用Silverlight4与Wcf4的Net.tcp实现的共享白板

这篇文章与“使用Silverlight4与Wcf4的Net.tcp实现的简单聊天室”是一起的,同一个demo只不过我又多加了一个共享白板的功能而已。

共享白板使用的是Json来对控件的属性序列化的,然后通过net.tcp方式传送到服务器,然后服务器使用的“推”的方式把序列化后的属性广播出去。

下图为用户"user-1"使用"笔"进行画图,同时user-2与user-3接收到同样的信息并展示到画图版中。

 

本示例中我使用的是json来序列化对象的所有属性并进行传输。我把序列化与反序列化的方法都写成了扩展方法。如下:

 

ExpandedBlockStart.gif Json序列化
 1  #region  Json序列化
 2       public   static   class  JsonSerializerHelper
 3      {
 4           ///   <summary>
 5           ///  添加一个扩展方法为字符串
 6           ///   </summary>
 7           ///   <typeparam name="T"> 预期的类型 </typeparam>
 8           ///   <param name="json"> JSON字符串数据 </param>
 9           ///   <returns> 反序列化的对象图 </returns>
10           public   static  T JsonDeserialize < T > ( this   string  json)
11          {
12               using  (var mstream  =   new  MemoryStream(Encoding.Unicode.GetBytes(json)))
13              {
14                  var serializable  =   new  DataContractJsonSerializer( typeof (T));
15                   return  (T)serializable.ReadObject(mstream);
16              }
17          }
18 
19           ///   <summary>
20           ///  序列化对象JSON字符串
21           ///   </summary>
22           ///   <param name="obj"> 对象序列化 </param>
23           ///   <returns> 序列化字符串 </returns>
24           public   static   string  JsonSerialize( this   object  obj)
25          {
26               using  (var mstream  =   new  MemoryStream())
27              {
28                  var serializable  =   new  DataContractJsonSerializer(obj.GetType());
29                  serializable.WriteObject(mstream, obj);
30                  mstream.Position  =   0 ;
31                   using  (var reader  =   new  StreamReader(mstream))
32                  {
33                       return  reader.ReadToEnd();
34                  }
35              }
36          }
37      }
38       #endregion

 

 

其它的功能就很容易实现了,这里就不做太多的讲解了。请下载demo后自己研究吧,有什么不太清楚的地方您可以留言给偶。

/Files/homezzm/Demo聊天与共享白板.rar

转载于:https://www.cnblogs.com/homezzm/archive/2009/12/27/1633292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值