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

WCF Rest ERR_CONNECTION_RESET 响应不大

WCF REST 服务中的 CORS 支持

WCF REST 服务中的 CORS 支持

REST WCF 服务中的事务