参考了 博客园 黎波的博客 在此表示感谢!
现在对WebService技术的使用已经非常多。既然是Web技术,就免不了要进行数据传输,比如传输文本、图片、Zip压缩包等等。在网络环境比较好、数据量小的情况下,传输的方式可以忽略不计,你可以选择任意的方式,不要考虑优化的问题,可以将图片、包变成二进制流进行传输,可以从数据库读出数据来,以DataSet形式进行传输。
但是如果网络条件不好,或者数据量很大的情况下,应该如何做呢?
以传输DataSet为例,解决方案如下:
1、从数据库读取DataSet
2、使用DataSetSurrogate类序列化DataSet,转换成二维数组,一般能变成原来大小的1/3
3、使用SharpZipLib压缩
此时如果在网络上传输字节数组的话,又会讲过Base64编码,造成大小的反弹
4、使用Web Services Enhancements的WS-Attachment进行传输。将包放到SOAP附件里,而不是信封里,不用经过XML序列化。封成DIME消息(Direct Internet Message Encapsulation)
这样,原来的大数据就可以被封成很小的数据了。传输也变得简单、迅速。
=======================================================
使用DIME进行传输的必要条件
1、安装Microsoft WSE 2.0 SP3.msi,可以在微软的网站上下
2、服务器端实现
1) 添加Microsoft.Web.Services2.dll Microsoft.Web.Services2.dll 引用
2) 修改修改Web.config Web.config 配置文件配置文件
<configuration><system><webservices><soapextensiontypes><add type="Microsoft.Web.Services2.WebServicesExtension,
Microsoft.Web.Services2, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35" priority="1" group="0"></add></soapextensiontypes></webservices></system></configuration>
3)WebMethod实现
using Microsoft.Web.Services2.Dime;
using Microsoft.Web.Services2;
[WebMethod]
public void CreateDimedImage()
{
SoapContext respContext = ResponseSoapContext.Current;
DimeAttachment dimeAttach = new DimeAttachment(
"image/gif", TypeFormat.MediaType,
@"C:\images\test.gif");
respContext.Attachments.Add(dimeAttach);
}
3、客户端引用
using Microsoft.Web.Services2.Dime;
using Microsoft.Web.Services2;
改变改变Reference.cs Reference.cs 文件中代理类的基类为文件中代理类的基类为
Microsoft.Web.Services2.WebServicesClientProtocol
如何找到Reference.cs?
在VS的资源管理器上选择“显示所有文件”,在Web Service下的Reference下有
实现例子
private void btnGetImage_Click(object sender, EventArgs e)
{
MyDimeServiceWse svc = new MyDimeServiceWse();
svc.CreateDimedImage();
if (svc.ResponseSoapContext.Attachments.Count == 1)
{
MessageBox.Show("Got it!\n");
pbDime.Image = new Bitmap(
svc.ResponseSoapContext.Attachments[0].Stream);
}
}
分享到:
相关推荐
WebService压缩方法整合 有整套的WebService工程 已最简单的方法体现了WebService的简化
.NET_Webservice数据压缩. 以二进制的方式压缩 以微软自带类库进行 以XML文件压缩传输
电子书的概述:webservice文件传输 源代码的说明:包括客户端和服务器端的简单介绍 文档的片段:包括客户端和服务器端的讲解
webservice 实现文件的传输。
java调用windows系统的com组件,用jacob来处理。JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32程序库。
《实战 Web Service 压缩传输》,需要通过web service传输大量的数据时采用压缩传输可提高程序的性能和减少网络的压力。
关于webservice的一点心得体会,可以看看
WebService 附件 大附件 多附件
介绍如何在WebService中进行数据压缩传输
NULL 博文链接:https://zjumty.iteye.com/blog/1889515
使用webservice传输xml数据(重点掌握) 第二天: Jaxws的深入开发: 常用注解 测试jaxws传输复杂对象类型 CXF开发webservice: CXF入门程序 Spring+cxf整合(重点) CXF发布rest的webservice。(重点)...
c# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservice
Net WebService 同步、异步、同步压缩解压和异步压缩解压实例详解(自带的Gzip) 总想抽时间把webservice 中的相关技术好好整理下,今天时间刚好,随便写了个demo跟大家分享。给刚入门的人看看,高手看了如果有什么要...
WCF自定义绑定与Webservice传输性能比较
NULL 博文链接:https://exceptioneye.iteye.com/blog/1325187
PB_WebService中必用的压缩解压技术
PHP webservice传输附件和文章源码: 有家公司专门搞PHP的写此接口,搞了个把月最后文章能传输,附件传不过去,,交给我花了2天的时间搞定。.
java调用json参数的webservice 涉及技术: JAVA JSON WEBSERVICE
C#实现基于webService 的文件传输程序,WEB服务的创建和调用,并WSE3.0、后台线程的创建模式、文件哈希校验