zoukankan      html  css  js  c++  java
  • 使用Silverlight4与Wcf4的Net.tcp实现的共享白板

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

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

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

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

    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

  • 相关阅读:
    camke中关于变量的一些知识
    ububtu16.04下安装protobuf
    ububtu下安装配置搜狗输入法
    anaconda资源链接
    把本地项目文件上传到github远程仓库的教程
    cmake practice一文中安装可执行文件的方法
    slam学习资源
    js中对String去空格
    去当前时间的周一
    对sql初始化的值的处理
  • 原文地址:https://www.cnblogs.com/homezzm/p/1633292.html
Copyright © 2011-2022 走看看