小编g_b*_*g_b的帖子

一般来说,Node.js如何处理10,000个并发请求?

我知道Node.js使用单线程和事件循环来处理请求,一次只处理一个(非阻塞).但是,如何工作,让我们说10,000个并发请求.事件循环将处理所有请求?这不会花太长时间吗?

我无法理解它是如何比多线程Web服务器更快的.据我所知,多线程Web服务器的资源(内存,CPU)会更昂贵,但它不会更快吗?我可能错了; 请解释这个单线程如何在大量请求中更快,以及在处理大量请求(例如10,000)时它通常会做什么(在高级别).

而且,那个单线程是否能够很好地扩展?请记住,我刚刚开始学习Node.js.

node.js

345
推荐指数
8
解决办法
9万
查看次数

EntityTypeBuilder不包含EF Core中ToTable的定义

我有这个示例代码:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Models;

namespace MySampleNamespace
{
    public class MyDbContext : DbContext
    {
        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }

        public DbSet<User> Users { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            new UserMap(modelBuilder.Entity<User>());
        }

        public class UserMap
        {
            public UserMap(EntityTypeBuilder<User> entityBuilder)
            {
                entityBuilder.ToTable("User");
                entityBuilder.Property(s => s.Username).HasMaxLength(15).IsRequired();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在MS网站上测试了一些例子,但我找不到ToTable方法.在这个例子中,我检查了什么是Usings,唯一使用的例子是Microsoft.EntityFrameworkCore,除了他正在使用的模型的类项目.这改变了吗?我现在该怎么办?

entity-framework entity-framework-core

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

实现MVC 5 IAuthenticationFilter

我不理解OnAuthentication和OnAuthenticationChallenge的目的/区别,除了在执行操作之前运行OnAuthentication并且在执行操作之后但在处理操作结果之前运行OnAuthenticationChallenge.

似乎其中任何一个(OnAuthentication或OnAuthenticationChallenge)都可以完成身份验证所需的所有操作.为什么需要2种方法?

我的理解是OnAuthentication就是我们把验证的逻辑(或者应该这样的逻辑是,在实际的操作方法?),连接到数据存储和检查的用户帐户.OnAuthenticationChallenge是我们在未经过身份验证的情况下重定向到登录页面的地方.它是否正确?为什么我不能只重定向OnAuthentication而不实现OnAuthenticationChallenge.我知道有些东西我不知道; 有人可以向我解释一下吗?

另外,存储经过身份验证的用户的最佳做法是什么,以便后续请求不必连接到db以再次检查用户?

请记住,我是ASP.NET MVC的新手.

asp.net-mvc

15
推荐指数
1
解决办法
7902
查看次数

如何阻止EF Core在可空列上创建过滤索引

我有这个型号:

public class Subject
{
    public int Id { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }

    public int LevelId { get; set; }

    [ForeignKey("LevelId")]
    public Level Level { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? DeletedAt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并通过Fluent API配置索引:

entityBuilder.HasIndex(e => new { e.LevelId, e.Name, e.DeletedAt })
    .IsUnique();
Run Code Online (Sandbox Code Playgroud)

它正在创建一个具有唯一过滤索引的表.如何防止EF添加过滤器?我只想要索引,不要过滤它.

entity-framework entity-framework-core ef-core-2.0

10
推荐指数
1
解决办法
1771
查看次数

如何在DDD上使用继承

我目前正在尝试DDD并阅读埃文斯的书.我已经到达了一个模型,该模型的根是Student.现在我需要(或能够区分)RegisteredStudent和EnrolledStudent(继承RegisteredStudent).我不知道如何在DDD中处理继承.

  1. 2个继承的类应该在聚合内吗?如果是这样,它们是否也被认为是聚合根,因为它们的身份与根相同(只有添加属性)?如果没有,我如何从其他实体访问它们?

  2. 或者我应该不使用继承?为什么?

  3. 而且,如果您在聚合中有一个不是根的实体,但是您需要它来继承外部的实体呢?你应该怎么做呢?

domain-driven-design

8
推荐指数
1
解决办法
2494
查看次数

PUT POST是幂等的(REST)

我不太明白HTTP谓词是如何被定义为幂等的.我读过的只是GET和PUT是幂等的.POST不是幂等的.但是您可以使用POST创建一个REST API,它不会更改任何内容(例如在数据库中),或者为PUT创建一个每次调用时都会更改的REST API.

当然,这可能是错误的做事方式,但如果可以做到,为什么PUT在实施时被标记为幂等(或POST为非)?我不是在挑战这个想法,我可能会错过一些东西而且我要求清除我的理解.

编辑:

我想提出一个问题的方法是:如果我使用PUT进行非幂等调用而POST这样做会有什么问题?

rest post http put idempotent

8
推荐指数
1
解决办法
4755
查看次数

IIFE在$(文件).ready或其他方面

我的同事一直在他的代码中广泛使用IIFE(文件).ready.现在,我读过这篇文章:

JQuery最佳实践,在IIFE中使用$(document).ready?

这让我想到我们是否应该在IIFE中使用$(document).ready,或者在我的同事正在做的时候反过来也是如此.

所以基本上,他的代码设置如下:

jQuery(function() {
    (function($) {
        //...
        // Code here
        //...
    })(jQuery);
});
Run Code Online (Sandbox Code Playgroud)

他一般做得好吗?

javascript jquery

7
推荐指数
1
解决办法
2095
查看次数

如何使用ASP.NET Core中的JWT授权重定向到401上的登录页面

我在我的Startup.cs中有这个JWT授权配置:

services.AddAuthentication(opts =>
{
    opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(opts =>
{
    opts.RequireHttpsMetadata = false;
    opts.SaveToken = true;
    opts.TokenValidationParameters = new TokenValidationParameters()
    {
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("my_secret_key")),
        ValidIssuer = "iss",
        ValidAudience = "aud",
        ValidateIssuerSigningKey = true,
        ValidateLifetime = true
    };
});
Run Code Online (Sandbox Code Playgroud)

我的HomeController有[Authorize]属性.因此,在访问Home/Index时,我收到了401响应,并且我看到了一个空白页面.我想重定向到我的帐户/登录页面,但我不知道该怎么做.

我读到这不应该自动重定向,因为如果它们没有被授权然后你重定向它们对API调用没有意义,那么我将如何将它们带到401的登录页面的正确方法是什么.

请记住,在这个项目中,我同时拥有带有[Authorize]属性的Web API和Action方法,所以我只需要在它是一个action方法时重定向.

asp.net-core

7
推荐指数
1
解决办法
3099
查看次数

DDD并避免CRUD

在我读到的大多数文章中,似乎在DDD中要避免使用CRUD,因为我们正在处理建模业务流程而不是数据.但是,我发现很难看到不对某些实体进行CRUD操作.例如,在学校评分系统中,在教师对学生进行评分之前,必须存在SchoolYear或者可能是GradingPeriod.我看不出如何在没有CRUD的情况下管理GradingPeriods.有人可以启发我这个吗?

domain-driven-design

6
推荐指数
1
解决办法
2467
查看次数

如何将整个文件夹添加到Visual Studio Team Services(TFS Online)

我目前正在尝试Visual Studio Team Services,我想检查包含代码和更多子文件夹的整个文件夹.我在CODE-> EXPLORER选项卡中,当我右键单击右侧(主区域)时,会出现一个上下文菜单,其中有一个menuitem Add.所以,我尝试添加一个现有的项目,但是,它不会让我放入文件夹.我尝试然后拖动内容区域中的整个文件夹,但它说错误.如何在源代码管理中添加文件夹?

tfs visual-studio azure-devops

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