拼吾爱程序人生

首页»  Silverlight»  使用Silverlight 4与WCF 4的Net.TCP实现的共享白板
cobra - 2009-12-28 12:55:00
这篇文章与“使用Silverlight 4与WCF 4的Net.TCP实现的简单聊天室”是一起的,同一个demo只不过我又多加了一个共享白板的功能而已。(文/小笨蛋:Lollipop

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

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

附件: net.tcp-1.jpg

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

Json序列化
  1. 1 #region Json序列化
  2. 2    public static class JsonSerializerHelper
  3. 3    {
  4. 4        /// <summary>
  5. 5        /// 添加一个扩展方法为字符串
  6. 6        /// </summary>
  7. 7        /// <typeparam name="T">预期的类型</typeparam>
  8. 8        /// <param name="json">JSON字符串数据</param>
  9. 9        /// <returns>反序列化的对象图</returns>
  10. 10        public static T JsonDeserialize<T>(this string json)
  11. 11        {
  12. 12            using (var mstream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
  13. 13            {
  14. 14                var serializable = new DataContractJsonSerializer(typeof(T));
  15. 15                return (T)serializable.ReadObject(mstream);
  16. 16            }
  17. 17        }
  18. 18
  19. 19        /// <summary>
  20. 20        /// 序列化对象JSON字符串
  21. 21        /// </summary>
  22. 22        /// <param name="obj">对象序列化</param>
  23. 23        /// <returns>序列化字符串</returns>
  24. 24        public static string JsonSerialize(this object obj)
  25. 25        {
  26. 26            using (var mstream = new MemoryStream())
  27. 27            {
  28. 28                var serializable = new DataContractJsonSerializer(obj.GetType());
  29. 29                serializable.WriteObject(mstream, obj);
  30. 30                mstream.Position = 0;
  31. 31                using (var reader = new StreamReader(mstream))
  32. 32                {
  33. 33                    return reader.ReadToEnd();
  34. 34                }
  35. 35            }
  36. 36        }
  37. 37    }
  38. 38    #endregion
复制代码
其它的功能就很容易实现了,这里就不做太多的讲解了。请下载demo后自己研究吧。

Demo下载:

附件: 下载地址
Silverlight栏目的最新浏览文章:
• 通过动态构造实体在Silverlight 中给DataGrid 绑定数据
• Silverlight基于WCF双工以及.NET TCP协议即时通讯系统
• Silverlight 4 离线简体中文版帮助文档
• 使用Silverlight构建一个工作流设计器(十六)-持久化数据到数据库—数据库结构
• 最新Microsoft Expression Studio 3破解
• 微软Expression Blend 3中文教程
• 【Silverlight】利用IsolatedStorageFile实现客户端缓存
• Silverlight 的弹出窗体--展示
• Silverlight 4中使用MEF实现页面的动态装配
• Silverlight实现360度全景展示效果
• Pro Business Applications with Silverlight 4
• Silverlight实时3D渲染引擎:SilverMotion
• Silverlight中把WriteableBitmap转为Byte流并保存到本地
• Silverlight 图片局部放大效果
• Silverlight 4 User Interface Cookbook
• Silverlight 相册DEMO--ImageSnipper(V2)
查看完整版本: 使用Silverlight 4与WCF 4的Net.TCP实现的共享白板