【发布时间】:2015-02-26 06:07:18
【问题描述】:
这个问题在不同的网站上问过,但我找不到任何有用的答案,而且我仍然遇到一些性能问题。 我的公共层应用程序中有两个序列化器方法
public static string Serializer(object o)
{
var x = new XmlSerializer(o.GetType());
var writer = new StringWriter();
var xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings { OmitXmlDeclaration = true });
var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
x.Serialize(xmlWriter, o, emptyNs);
return writer.ToString();
}
public static string Serializer<T>(T o)
{
var x = new XmlSerializer(typeof(T));
var writer = new StringWriter();
var xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings { OmitXmlDeclaration = true });
x.Serialize(xmlWriter, o, new XmlSerializerNamespaces( new[] { XmlQualifiedName.Empty } ));
return writer.ToString();
}
还有两种反序列化方法
public static T Deserializer<T>(string objectData)
{
var serializer = new XmlSerializer(typeof(T));
T result;
using (TextReader reader = new StringReader(objectData))
{
result =(T) serializer.Deserialize(reader);
}
return result;
}
public static object Deserializer(object o, string filename)
{
object retVal;
var ser = new XmlSerializer(o.GetType());
using (var reader = XmlReader.Create(filename))
{
retVal = ser.Deserialize(reader);
}
return retVal;
}
我在两种序列化程序方法中运行了不同的负载测试,所有这些都表明Serializer<T>(T o) 的工作速度比Serializer(object o) 慢,在我看来这必须是相反的,因为typeof() 更快并且类型已知不同于目的。我想先了解一下您的意见?
其次,在另一个名为
public static TResponse SendRequest <TRequest,TResponse>(TRequest rq, Uri requestUri)
哪个负责将请求发送到网络服务器并获取响应,有没有办法让它更高效?
【问题讨论】:
标签: c# asp.net serialization