新手提问:利用webservice传输数据,一般都是怎么做?
我是需要webservice查询本地数据库,供远程的系统调用,这样把本地数据送到远端,那边在把传过去的数据入库。
请问我是需要把数据库的数据生成一个xml文件发送过去,由那边解析。
还是这边返回一个dataset??我看了好多文章都看晕了。
也就是webservice的方法的返回值是XmlDataDocument,还是一个DATASET??
最好哪位高人有个例子给我,谢谢了
问题点数:100、回复次数:30Top
1 楼Knight94(愚翁)回复于 2006-06-29 13:43:43 得分 0
to 也就是webservice的方法的返回值是XmlDataDocument,还是一个DATASET??
用dataset来进行返回要方便些Top
2 楼Knight94(愚翁)回复于 2006-06-29 13:47:19 得分 40
to 最好哪位高人有个例子给我,谢谢了
你把webmethod中的参数或者返回值的类型用dataset即可。Top
3 楼Knight94(愚翁)回复于 2006-06-29 13:50:02 得分 0
不过为了简化向服务器传递数据,在客户端传递dataset的时候,如果是为了更新操作,可以用
DataSet.GetChanges()来进行传递Top
4 楼Radar2006(中华英雄)回复于 2006-06-29 15:24:33 得分 0
老大来了,没我说话的份,来学习的~~~Top
5 楼teieikun(白⊙♀梦♂)回复于 2006-06-30 16:48:52 得分 0
web方法的返回值是不是不能使SortedList类型的,在本地引用的时候总是出错Top
6 楼inzaghizxm(锈刀)回复于 2006-06-30 17:10:14 得分 0
To----Knight94(愚翁)直接返回Dataset速度很慢的,序列化后不会快点么?Top
7 楼oldcsdn()回复于 2006-06-30 18:02:33 得分 20
如果是用.net 调用.net的webservice的话 ,返回dataSet , 我一直这样用,没发现什么问题,
如果是用其他语言调用.net的webservice的话 ,使用dataSet.GetXml()方法 生成xml字符串 返回string 也很方便使用。Top
8 楼amandag(高歌)回复于 2006-06-30 18:19:31 得分 0
白天就看到那么多星星
upTop
9 楼Knight94(愚翁)回复于 2006-07-01 08:24:51 得分 0
to 直接返回Dataset速度很慢的,序列化后不会快点么?
看返回数据个数了,如果单个,自己做序列化后传递,这样调用段可以明确知道是什么内容,不用进行数据转换;
否则用dataset,它已经支持序列化,而不用单独序列化。Top
10 楼ying1234()回复于 2006-07-23 18:01:48 得分 0
我们是返回xmldocumnet返回,生成xmldocumnet类自已生成,因为该服务delphi也要用。Top
11 楼winner2050(winner)回复于 2006-07-24 06:21:43 得分 0
我从来都是返回DATASETTop
12 楼szc21(卖炭翁)回复于 2006-07-24 06:49:33 得分 0
直接返回DS,我一直有这样做Top
13 楼canserly(没啥不好意思)回复于 2006-07-24 11:57:38 得分 0
返回的内容的格式是XmlDataDocument,至于内容什么都可以。不过不同语言的话可能就解析不了某些非基本参数。Top
14 楼sh_caizicheng(每天一小步,成就一大步)回复于 2006-07-24 16:26:54 得分 0
学习中Top
15 楼tdtdtdtdtd123(飘)回复于 2006-07-24 16:57:08 得分 0
xue xiTop
16 楼mmens(快乐中前行!)回复于 2006-07-26 18:05:39 得分 20
序列化是自动完成的.
你只管返回DataSet或DataTable就可以了。Top
17 楼bejon(阿牛[如果我懂,必坦诚相告;如果您懂,请不吝赐教。])回复于 2006-07-26 22:12:01 得分 0
dddTop
18 楼szc21(卖炭翁)回复于 2006-07-27 06:05:57 得分 0
upTop
19 楼jinbingg(bing)回复于 2006-07-27 08:32:27 得分 0
如果客户端和服务器端都是 .net 的话 用二进制速度会快很多Top
20 楼gmsboss2020()回复于 2006-07-31 10:30:42 得分 20
用DataSet进行返回;Top
21 楼Kshatriya(何以解忧,惟有杜康)回复于 2006-07-31 17:49:33 得分 0
DataSet 方便.
序列化好像用强类型数据集的时候会出现错误.Top
22 楼iland9876543210(我要求助)回复于 2006-08-02 09:46:36 得分 0
dingTop
23 楼jinbingg(bing)回复于 2006-08-02 16:54:38 得分 0
用二进值传输速度会很快。dataset传送很方便处理数据。如合宾排序等Top
24 楼hanchi8008(寒池)回复于 2006-08-02 18:14:41 得分 0
markTop
25 楼xlxb12345(xlxb1234)回复于 2006-08-02 23:38:35 得分 0
不太懂,学习学习
==================================
= CSDN助手 全面支持CSDN论坛 =
= 监视、收藏、历史、签名走马灯 =
==================================Top
26 楼luo_12yan()回复于 2006-08-03 18:39:09 得分 0
webservice倒底是指什么?我用VS.net写网站的时候,有WEB应用程序和 WEB service可选!不过写起来。。没什么不同呀!Top
27 楼jijl2001(jijl2001)回复于 2006-08-03 23:31:31 得分 0
用自定义的实体吧,只要能序列化就行,你如果不是.net平台 ,最好不要用datasetTop
28 楼fds2003(Hunter)回复于 2006-08-04 10:33:10 得分 0
http://www.cnblogs.com/upto/archive/2006/04/10/CompressWebService.html
上面有说明,自己看下就知道了!Top
29 楼flying310(林林)回复于 2006-08-04 12:46:11 得分 0
传输的数据最好格式化成基本数据类型,有助于效率的提高。Top
30 楼Radar2006(中华英雄)回复于 2006-08-04 16:27:39 得分 0
/// <summary>
/// 压缩数据集
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public static byte[] CompressDS(DataSet ds)
{
MemoryStream ms = new MemoryStream();
ZipOutputStream zos = new ZipOutputStream(ms);
zos.PutNextEntry(new ZipEntry(ds.DataSetName));
BinaryFormatter bf = new BinaryFormatter();
DataSetSurrogate dss = new DataSetSurrogate(ds);
bf.Serialize(zos, dss);
zos.CloseEntry();
zos.Close();
byte[] ret = ms.ToArray();
ms.Close();
return ret;
}
大数据集一定要压缩,我用一个较大的数据集测试,
原来直接传输50s,用上述方法压缩后,只用了10s.Top




