WCF REST 服务中的响应时间问题非常重要_更多 10 分钟
Posted
技术标签:
【中文标题】WCF REST 服务中的响应时间问题非常重要_更多 10 分钟【英文标题】:Response time Issue in WCF REST Service is very important_more 10 minutes 【发布时间】:2020-03-13 15:28:38 【问题描述】:我创建了一个 WCF REST 服务来返回“WsDimension”类的列表,并且响应文件大小最大为 1 MB,
我的班级“WsDimension”:
[DataContract]
public class WsDimension
[DataMember]
public XElement DatasRefernecesValues = new XElement("ReferenceValues");
(并且在响应中:每个元素都有一个 Xelements 列表) 一个具有其他 xelement 列表的 xelement 的示例:
这是我的 REST 服务:
[OperationContract]
[WebGet]
List<WsDimension> GetAllDimensionsByXMLFile(string xmlfile);
在我的代码实现中,我有三个 FOREACH :
foreach (var dimension in DimensionsList)
//..
foreach (var reference in ReferenceList)
//..
foreach (var finalCharac in finalCharacsList)
// Here adding a List of Xelement for every Xelement
而且响应时间在10分钟到16分钟之间,
如何在服务实现中找到问题?或者他们有什么建议来解决这个问题? 谢谢,
【问题讨论】:
您可以先考虑删除 3 个 foreach 循环,也可以不返回所有文件数据,而是考虑只返回数据页。 需要详细信息,minimal reproducible example,任何东西。一个 Xml 和 3 个嵌套的 foreach 并不表示性能不佳。 【参考方案1】:序列化的性能与CPU、内存和I/O速度的性能有关。
我不认为 DataContractSerializer 对这个问题有影响。或者,我们可以考虑使用 XML 序列化程序来处理这些原始 XML 类型。
请参考以下官方建议。https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer
此外,Newtonsoft.json
在序列化和反序列化方面可能有更好的性能。但是我们需要更改项目框架来创建 REST API,例如 Asp.Net WebAPI,因为 WCF 只支持这两种序列化器。构建 Rest API 不是 WCF 的强项,序列化性能是其中之一。使用第三方序列化器替换默认的DataContractSerializer比较复杂。https://blogs.msdn.microsoft.com/carlosfigueira/2011/05/02/wcf-extensibility-message-formatters/
如果有什么我可以帮忙的,请随时告诉我。
【讨论】:
以上是关于WCF REST 服务中的响应时间问题非常重要_更多 10 分钟的主要内容,如果未能解决你的问题,请参考以下文章
来自 WCF REST 服务的 Azure 缓存间歇性响应时间
JSON 中基于 WCF REST 的响应的 JQUERY AJAX