这篇文章与“
使用Silverlight 4与WCF 4的Net.TCP实现的简单聊天室”是一起的,同一个demo只不过我又多加了一个共享白板的功能而已。(文/
小笨蛋:Lollipop)
共享白板使用的是Json来对控件的属性序列化的,然后通过net.tcp方式传送到服务器,然后服务器使用的“推”的方式把序列化后的属性广播出去。
下图为用户"user-1"使用"笔"进行画图,同时user-2与user-3接收到同样的信息并展示到画图版中。
附件:
net.tcp-1.jpg 本示例中我使用的是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后自己研究吧。
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)