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

  • 相关阅读:
    更快的datetime string to python datetime转换模块 ciso8601
    华为新员工入职培训计划曝光!你留不住员工的原因就在这! zz
    在vmware中安装macos系统 vm12 osx10.11 or higher
    vmware for linux (centos65) 卸载相关
    第八章多态
    第七章 复用类
    第六章 访问权限控制
    Think in Java 第四 五 章
    Think in Java 第三章操作符
    Thank in Java
  • 原文地址:https://www.cnblogs.com/homezzm/p/1633292.html
Copyright © 2011-2022 走看看