相关疑难解决方法(0)

在新AppDomain中建立的第一个WCF连接非常慢

我有一个我使用的库,它使用WCF调用http服务来获取设置.通常,第一次调用需要约100毫秒,后续调用只需几毫秒.但是我发现当我创建一个新的AppDomain时,来自该AppDomain的第一个WCF调用需要2.5秒.

有没有人解释或解决为什么在新的AppDomain中首次创建WCF频道需要这么长时间?

这些是基准测试结果(当在64位版本中没有附带调试器的情况下运行时),请注意第二组数字中的第一个连接如何延长25倍

Running in initial AppDomain
First Connection: 92.5018 ms
Second Connection: 2.6393 ms

Running in new AppDomain
First Connection: 2457.8653 ms
Second Connection: 4.2627 ms
Run Code Online (Sandbox Code Playgroud)

这不是一个完整的例子,但显示了我生成这些数字的大部分内容:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Running in initial AppDomain");
        new DomainRunner().Run();

        Console.WriteLine();
        Console.WriteLine("Running in new thread and AppDomain");
        DomainRunner.RunInNewAppDomain("test");

        Console.ReadLine();
    }
}

class DomainRunner : MarshalByRefObject
{
    public static void RunInNewAppDomain(string runnerName)
    {
        var newAppDomain = AppDomain.CreateDomain(runnerName);
        var runnerProxy = (DomainRunner)newAppDomain.CreateInstanceAndUnwrap(typeof(DomainRunner).Assembly.FullName, typeof(DomainRunner).FullName);

        runnerProxy.Run();
    }

    public void Run()
    {
        AppServSettings.InitSettingLevel(SettingLevel.Production); …
Run Code Online (Sandbox Code Playgroud)

c# performance wcf appdomain c#-4.0

17
推荐指数
1
解决办法
2610
查看次数

标签 统计

appdomain ×1

c# ×1

c#-4.0 ×1

performance ×1

wcf ×1