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;}
...
}
[解决办法]
//服务端契约实现:
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