WCF调用,内部函数调用速度较慢,但直接调用函数时速度较快

本文关键字:速度 调用 函数 函数调用 WCF 内部 | 更新日期: 2023-09-27 18:27:27

我有一个自托管的WCF服务,使用基本的http绑定。我发现,对wcf服务的调用,访问wcf公开的函数,比直接(从wcf服务)使用函数需要更长的时间才能完成(内部)。

因此,为了澄清,我并不是说要花更长的时间"接管"wcf的电话。WCF背后的内部公开函数一旦运行,在它们自己的处理中,它们需要比我直接从托管的WCF应用程序中的表单访问这些相同的函数更长的时间来完成工作并将某些内容返回到WCF服务以发送到客户端。

我为所有功能添加了大量的日志记录、日志记录开始和停止时间,而且似乎是一致的。当通过WCF激活相同的函数时,它们的"优先级"似乎比绕过WCF接口调用它们时低得多。

考虑到这一点,我确信在我用以下内容装饰我的主wcf类后,由于我的UI线程锁定,这个问题开始突出:

<ServiceBehavior(useSynchronizationContext:=False)>

线程是否是由于上述装饰而创建的,以较低的优先级运行?

WCF托管应用程序中表单的直接调用:5秒

通过WCF接口调用:20-30秒(不包括有线时间)

一旦内部功能完成,WCF服务本身的物理返回非常快。

一旦达到内部功能,我会做很多"工作"。

有什么想法吗?

感谢

WCF基本服务代码:

        Dim myservicehost As ServiceHost
        Dim myServiceAddress As New Uri("http://" & LocalIpAddress & ":" & tcp_port & "/" & servicename)
        myservicehost = New ServiceHost(GetType(myWCFFunctions), myServiceAddress)
        ' Enable metadata publishing.
        Dim smb As New ServiceMetadataBehavior()
        smb.HttpGetEnabled = True
        smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15
        myservicehost.Description.Behaviors.Add(smb)

        myservicehost.Open()

WCF调用,内部函数调用速度较慢,但直接调用函数时速度较快

我无法解决这个问题,并恢复到以前的实现。