《实战 Web Service 压缩传输》的PPT和Demo

2006年4月9日下午在 Bamboo 参加广州 .net 俱乐部的活动,并讲了一节《实战 Web Service 压缩传输》的课,很多听众对这节课的内容很感兴趣。我现在把 ppt 和 demo code 放上来,大家先下载回去研究!有什么问题请回复该贴或EMail我!
WebSvcCompression_ppt.rar
CompactDataSet.rar
CompressDataSet.rar

日程
分析目前 Web Service 的局限
揭开 DataSet 序列化的内幕
介绍 DataSetSurrogate 类
利用 SharpZipLib 压缩数据
利用 WS-Attachment 传输二进制数据

目标
能够结合 Binary Serialization, DataSetSurrogate, SharpZipLib 和 WS-Attachment
实现一个 Web Service 的数据传输优化方案。


EMail: china.libo at gmail.com
posted @ 2006-04-10 10:28 黎波 阅读(5160) 评论(24)  编辑 收藏 网摘 所属分类: Smart ClientWeb ServiceMy Lectures

  回复  引用  查看    
#1楼2006-04-10 10:35 | 萧远山      
感谢~~~
  回复  引用  查看    
#2楼2006-04-10 10:39 | 呆在呆呆的家      
不错~~~
  回复  引用  查看    
#3楼2006-04-10 10:48 | Ооo酷鱼      
thx
  回复  引用  查看    
#4楼2006-04-10 10:57 | jackyrong的世界      
不错,支持
  回复  引用    
#5楼2006-04-10 10:59 | gane[未注册用户]
值得看看
  回复  引用  查看    
#6楼2006-04-10 11:30 | 一蓑烟雨任平生      
怎么不早出呢,我前几天,才搞出一个来.看看谁好吧.
  回复  引用  查看    
#7楼2006-04-10 13:53 | 一路向北      
thx
  回复  引用  查看    
#8楼2006-04-10 19:52 | 双鱼座      
@黎波:

很喜欢听你的课,你的课讲得很好,条理性很强。不过我觉得有点意犹未尽。主要体现在两点:
1.对WSE的阐述不够,包括WSE对WS的改进、与WSDL的关系。据我所知WSE并没有完全放弃开发性,至少我觉得不应该象你讲的那么糟糕,就好象WSE只能用在.net上一样。我觉得你可以再翻阅一些资料。
2.稍微少了一些动手上的内容,好象讲述比较多,实践比较少。

  回复  引用  查看    
#9楼[楼主]2006-04-10 21:53 | upto      
@双鱼座
不好意思,可能我没有表达清楚我的意思。其实我说我的方案放弃了开放性,主要原因在于使用了二进制序列化和DataSet。首先二进制序列化是深层序列化,它的反序列化过程是需要CLR的支持,也就是说,在反序列化一个对象的时候,代码的上下文要可以找到该对象所对应的类型的元素据。再加上DataSet是.NET里面特有的类型,所以其他语言是无法从序列化数据流还原原始对象的。
关于二进制序列化的可移植性问题,您可以参考这里的说明:
http://msdn.microsoft.com/library/CHS/cpguide/html/cpconBasicSerialization.asp">http://msdn.microsoft.com/library/CHS/cpguide/html/cpconBasicSerialization.asp
所以,该方案的可移植性主要是在序列化这里,而不是在WSE,其实WSE是开发标准来的。

由于该节课的内容比较多,相关的知识点都稍微有点深入,要在1个小时内将该方案讲的很透彻是不可能的。记得9个月前我在公司是用了两节课的时间来讲解。因此我大部分时间在于讲解原理性的东西,而没有仔细分析演示的代码,我希望听众能够自己去运行一下这些demo,并仔细体会里面为什么要这么做。

另外的的ppt里面还有一些课外学习资料的链接,如果你们对相关的知识点有一些质疑,可以先看看这些资料。一定会有不少意外收获。

本来想演示我那个SmartClient程序的,回到家里发现我的机关掉了,不知道是不是被黑了:(

  回复  引用  查看    
#10楼2006-04-11 14:42 | Tam      
那天来看你演讲了,可惜后面的例子运行不了。
  回复  引用    
#11楼2006-04-18 15:56 | vnet[未注册用户]
你好,看了一下你的DEMO很不错,但是美中不足的就是没有提供反序列化的DEMO,希望你可以提供一下这方面的资料,谢谢。(VNET)
  回复  引用    
#12楼2006-06-05 18:58 | VNET[未注册用户]
DataSet dataSet = GetChemInfoDataSet(TimeStampValue,type,tblName);

DataSetSurrogate dss = new DataSetSurrogate( dataSet );

BinaryFormatter ser = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, dss);

byte[] buffer = ms.ToArray();

zipBuffer = new CompressionHelper(CompressionLevel.BestSpeed).CompressToBytes( buffer );

  回复  引用    
#13楼2006-06-16 09:19 | TestDemo[未注册用户]
天下文章一大抄,就看会抄不会抄!
  回复  引用    
#14楼2006-08-17 16:58 | pjz[未注册用户]
using Microsoft.Web.Services2;
using Microsoft.Web.Services2.Dime; 这个引用那里有呀,我运行通不过

  回复  引用  查看    
#15楼[楼主]2006-08-17 22:56 | upto      
需要在开发机器安装WSE2
  回复  引用    
#16楼2006-08-18 08:53 | pjz[未注册用户]
压缩后,是通过一个变量传到服务器上,我可以通过OPENXML来打开这个压缩后的变量吗,或者用什么办法打开?
  回复  引用  查看    
#17楼[楼主]2006-08-18 10:18 | upto      
压缩后是一个数据流(Stream),这个流的内容是你要传输的对象的二进制序列化产物.传到服务器之后,需要进行反序列化,得到原始对象.
  回复  引用  查看    
#18楼2007-02-01 09:08 | 风云      
不错,很好!
  回复  引用  查看    
#19楼2007-02-05 09:11 | Nina      
有沒2005的web service的講座啊?
  回复  引用  查看    
#21楼2008-04-17 18:33 | 皓月      
windows mobile 中不支持dataset 二进制序列化,请问可以怎么解决?
  回复  引用  查看    
#22楼[楼主]2008-04-17 21:38 | 黎波      
@皓月

看看这篇文章吧:

http://www.codeproject.com/KB/cs/CF_serializer.aspx">CompactFormatterPlus : generic serializer for full and Compact Framework

  回复  引用  查看    
#23楼2009-02-06 16:18 | 外城      
look a look



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 371064




相关文章:

相关链接: