首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

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

2013-12-13 
WCF传递dataset 或datatable 一定要序列化吗WCF传递dataset 或datatable 一定要序列化吗?如果不序列化的话

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需要

热点排行