小编und*_*ned的帖子

node.js与ASP.NET核心性能测试的意外结果

我正在用编写的两个(有点)hello world项目进行快速压力测试.它们都在生产模式下运行,并且没有连接记录器.结果令人惊讶!即使在做了一些额外的工作之后,ASP.NET核心也优于node.js应用程序,而node.js应用程序只是渲染视图.

应用1: http://localhost:3000/nodejs node.js

使用:node.js,express和vash渲染引擎.

nodejs app

此端点中的代码是

router.get('/', function(req, res, next) {
  var vm = {
    title: 'Express',
    time: new Date()
  }
  res.render('index', vm);
});
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,除了通过time变量将当前日期发送到视图之外,它什么也没做.

应用2: http://localhost:5000/aspnet-core asp.net core

使用:ASP.NET Core,默认模板定位dnxcore50

然而,这个应用程序不仅仅是渲染一个带有日期的页面.它生成5段各种随机文本.从理论上讲,这应该比nodejs app重一点.

asp.net核心应用程序

这是呈现此页面的操作方法

[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
[Route("aspnet-core")]
public IActionResult Index()
{
    var sb = new StringBuilder(1024);
    GenerateParagraphs(5, sb);

    ViewData["Message"] = sb.ToString();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

压力测试结果

Node.js App压力测试结果

更新:遵循Gorgi Kosev的建议

运用 npm install -g recluster-cli && …

c# performance stress-testing node.js asp.net-core

164
推荐指数
2
解决办法
8万
查看次数

C#中的MVC控制器是否有nameof()运算符?

新引入的nameof运算符可以使我的代码成为"打字".

代替

return RedirectToAction("Edit");
Run Code Online (Sandbox Code Playgroud)

我们可以写

return RedirectToAction(nameof(Edit));
Run Code Online (Sandbox Code Playgroud)

但是要获得控制器的名称并不是那么简单,因为我们有一个Controller后缀.只是想知道我是否想要一个

return RedirectToAction(nameof(Index), controllernameof(Home));
Run Code Online (Sandbox Code Playgroud)

代替

return RedirectToAction("Index", "Home");
Run Code Online (Sandbox Code Playgroud)

我们如何实现controllernameof运营商?

c# asp.net-mvc

21
推荐指数
5
解决办法
4428
查看次数

无法在Windows PC上加载ASP.NET Core上的文件或程序集"Microsoft.AspNetCore.Connections.Abstractions"

这个ASP.NET Core 2.1项目在我的Mac OS上运行良好.但是,当我从Windows PC运行它时会抛出此异常.我试图使用相同版本的.NET Core SDK从两台Windows机器上运行它.

我尝试重新安装.NET Core SDK 2.1.302,也尝试升级到2.1.401.感谢任何帮助.

错误是

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore.Connections.Abstractions, Version=2.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)

.csproj文件中使用Nuget包

<PackageReference Include="HangFire" Version="1.6.19" />
<PackageReference Include="Hangfire.LiteDB" Version="0.1.0" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.3.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="2.1.1" />
<PackageReference Include="LiteDB" Version="4.1.4" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0" />
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪

> dotnet run

Using launch settings from …
Run Code Online (Sandbox Code Playgroud)

.net-core asp.net-core

17
推荐指数
3
解决办法
2万
查看次数

SQL Server查询优化 - 简单查询中的意外缓慢

可能的解释在评论中

在SQL Server 2014企业版(64位)中 - 我试图从视图中读取.标准查询只包含一个ORDER BY和这样的OFFSET-FETCH子句.

方法1

SELECT

    *

FROM Metadata
ORDER BY
    AgeInHours      ASC, 
    RankingPoint    DESC, 
    PublishDate     DESC
OFFSET 150000 ROWS
FETCH NEXT 40 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

但是,这个相当简单的查询比以下返回相同结果的查询执行快9倍(在跳过大量行(如150k)时显而易见).

在这种情况下,我首先读取主键,然后将其用作WHERE...IN函数的参数

方法2

SELECT 
    * 
FROM Metadata
WHERE NewsId IN (
    SELECT

        NewsId

    FROM Metadata
    ORDER BY
        AgeInHours      ASC, 
        RankingPoint    DESC, 
        PublishDate     DESC
    OFFSET 150000 ROWS
    FETCH NEXT 40 ROWS ONLY
)
ORDER BY
    AgeInHours      ASC, 
    RankingPoint    DESC, 
    PublishDate     DESC
Run Code Online (Sandbox Code Playgroud)

这两个基准标记显示了这种差异

(40 row(s) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server database-performance query-performance sql-server-2014

9
推荐指数
1
解决办法
418
查看次数

ASP.NET Core日志记录不适用于生产环境

事实证明,该问题与NLogASP.NET日志记录系统无关。日志配置正确,但是Debug由于配置错误,构建服务器正在将构建发布到生产中。

我试图在我的ASP.NET Core 2.0(SDK 2.1.401)项目中设置第三方记录器。到目前为止,我曾尝试SerilogNLog。但是我对两个都有同样的问题。总结一下问题,

  • 当我运行该应用程序时,它可以按预期工作dotnet run(例如,在Development环境中)
  • 但是当我运行二进制文件时dotnet MyApplication.dll(即在Production环境中)却没有。
  • 我的文件中没有"Logging"Development环境部分定义任何内容appsettings.Development.json

下面描述的问题是针对的NLog。我尝试过SeriLog并遇到相同的问题。

这是来自的相关部分 Program.cs

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseApplicationInsights()
        .UseStartup<Startup>()
        .ConfigureLogging((env, logging) =>
        {
            logging.ClearProviders();
            logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
        })
        .UseNLog()
        .Build();
Run Code Online (Sandbox Code Playgroud)

注意我已经清除了所有提供程序并添加NLognlog.config文件定义:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseApplicationInsights()
        .UseStartup<Startup>()
        .ConfigureLogging((env, logging) =>
        {
            logging.ClearProviders();
            logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
        }) …
Run Code Online (Sandbox Code Playgroud)

c# logging nlog serilog asp.net-core-logging

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