小编Dmi*_*ski的帖子

为什么第一个WCF客户端调用速度慢?

我试图弄清楚为什么客户端应用程序启动后第一次WCF调用与第二次调用相比需要更多时间.

我做了什么测试:

  1. 实现了简单的自托管WCF服务器和控制台客户端.
  2. 服务器IS预热 - 我运行它并在运行测试之前多次调用方法.
  3. 绑定是basicHttpBinding为了减少网络和安全开销.
  4. 测试场景 - 启动控制台客户端应用程序,连续进行两次相同的WCF服务调用.

在我的测试中,我看到第一次呼叫约700毫秒,第二次呼叫约3毫秒.

几乎一秒似乎是JIT编译器的太多时间.我会接受,如果那个时间用于初始化一些复杂的基础设施,如ObjectContext实体框架,但我的代码非常简单,代理类已经编译.

我也试过netNamedPipeBinding绑定.结果证明模式 - 第一次调用需要~800 ms,第二次调用需要~8 ms.

如果有人能解释为什么第一次服务电话会花费这么多时间,我们将不胜感激.

在Win 7 64位中测试过.

我的实现如下.

合同:

[ServiceContract]
public interface ICounter
{
        [OperationContract]
        int Add(int num);
}
Run Code Online (Sandbox Code Playgroud)

服务实施:

public class CounterService: ICounter
{
        private int _value = 0;

        public int Add(int num)
        {
            _value += num;
            Console.WriteLine("Method Add called with argument {0}. Method  returned {1}", num, _value);
            return _value;
        }
}
Run Code Online (Sandbox Code Playgroud)

服务器实施:

class Program
{
    static void Main(string[] …
Run Code Online (Sandbox Code Playgroud)

.net performance wcf .net-4.0 basichttpbinding

14
推荐指数
1
解决办法
2万
查看次数

Sitecore FakeDB测试的最小Nugets占用空间是多少?

我开始与标准Sitecore.KernelSitecore.Nexus.Sitecore在这里提供了非常具有描述性的错误消息,所以我也添加DependencyInjection了.它带来了很多依赖项,并且它们没有显示在config belo中.如您所见,我使用*.NoReferencesSitecore软件包的版本来控制依赖项.

<packages>
  <package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net452" />
  <package id="Sitecore.FakeDb" version="1.2.2" targetFramework="net452" />
  <package id="Sitecore.Kernel.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Nexus.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
</packages>
Run Code Online (Sandbox Code Playgroud)

之后我卡住了.我收到的错误没有提供错过的内容:

System.NullReferenceException : Object reference not set to an instance of an object.
    at Sitecore.Configuration.DefaultFactory.CreateType(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
    at Sitecore.Configuration.DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, …
Run Code Online (Sandbox Code Playgroud)

sitecore sitecore8

3
推荐指数
1
解决办法
473
查看次数