欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

wcf传接dataset 或datatable 一定要序列化吗

更新时间: 2014-01-05 01:59:26 责任编辑: Author_N1

 

WCF传递dataset 或datatable 一定要序列化吗
WCF传递dataset 或datatable 一定要序列化吗?如果不序列化的话效率会比序列化的低很多吗?请能点参考代码,谢谢!
--参考方法--
ds.SchemaSerializationMode = SchemaSerializationMode.ExcludeSchema;
ds.RemotingFormat = SerializationFormat.Binary;

参考下面的讨论:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/088d0c74-6568-4496-8bfa-4ccf3a1ea851/

--参考方法--
必须可序列哈,这是Remoting的前提!
--参考方法--
传dataset 或datatable的时候,WCF内部会自动序列化,不用自己为序列化些代码。
--参考方法--
如使用webservice则需要为类添加序列化标签[Serializable]
示例代码:
[Serializable]
public class DataModel{
...
}

如采用WCF则采用如下
[DataContract]
public class DataModel{
[DataMember]
public DataSet Field{get;set;}
...
}

--参考方法--
引用:
传dataset 或datatable的时候,WCF内部会自动序列化,不用自己为序列化些代码。

应该是这样。
--参考方法--
已测试 确实不需要 进行序列化
例如:

 //服务端契约实现:
 public DataTable Returns(int n)
 {
     DataTable dt = new DataTable();
     dt.TableName = "Program";
     dt.Columns.Add("playTime", typeof(string));
     dt.Columns.Add("meridiem", typeof(string));
     dt.Columns.Add("tvProgram", typeof(string));
     dt.Columns.Add("tvStationInfo", typeof(string));
     DataRow newRow = dt.NewRow();
     newRow["playTime"] = "09:10";
     newRow["meridiem"] = "PM";
     newRow["tvProgram"] = "开始";
     newRow["tvStationInfo"] = "东方卫视";
     dt.Rows.Add(newRow);
     return dt;
}
//客户端:
DataTable dt = proxy.Returns(1);
string time = dt.Rows[0]["playTime"].ToString();
Console.WriteLine("编码方式自我寄宿:http://localhost:9999/calculatorservice");
Console.WriteLine("\r");
Console.WriteLine("x+y={2} when x={0} and y={1}", 1, 2, time);
Console.WriteLine("x-y={2} when x={0} and y={1}", 1, 2, time);
//得出x+y=09:10

--参考方法--
那么你就序列化后再压缩吧
--参考方法--
WebService里面,貌似DataSet可以不用序列化,DataTable需要
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:59:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4154/
本文WWW.DOC100.NET DOC100.NET版权所有。