Я создаю конечную точку HttpPost для API, который принимает тело XML, выполняет некоторую обработку полученных данных, отправляет запрос на внешний API и возвращает данные из внешнего API в формате XML.
Во время этого процесса я сериализую и десериализую в несколько различных классов. У меня проблема в том, что конструктор для этих сериализаторов загружается относительно долго и влияет на время отклика моего API.
Вот текущий код для сериализации / десериализации:
public static T DeserializeObject<T>(Stream objectStream)
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StreamReader stream = new StreamReader(objectStream))
{
return (T)serializer.Deserialize(stream);
}
}
catch (Exception ex)
{
HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.InternalServerError);
message.Content = new StringContent("Error deserializing type: " + typeof(T).ToString() + Environment.NewLine
+ ex.Message
+ (ex.InnerException != null ? Environment.NewLine + ex.InnerException.Message : string.Empty));
throw new HttpResponseException(message);
}
}
public static string SerializeObject<T>(T objectToSerialize)
{
try
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))
{
xmlSerializer.Serialize(writer, objectToSerialize);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
catch (Exception ex)
{
HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.InternalServerError);
message.Content = new StringContent("Error serializing type: " + typeof(T).ToString() + Environment.NewLine
+ ex.Message
+ (ex.InnerException != null ? Environment.NewLine + ex.InnerException.Message : string.Empty));
throw new HttpResponseException(message);
}
}
У меня есть довольно сложные классы, к которым сериализуются, но это неизбежно из-за необходимости отправки запроса во внешний API. Я также привязан к использованию XML из-за интеграции третьих сторон с API
Как я могу улучшить производительность сериализатора XML и ускорить время отклика моего API?