正确处理 asp.net 核心中的资源

Proper handling of resources in asp.net core

我正在尝试正确管理 asp.net 核心中的资源。是否有必要注册我在依赖注入容器中创建的每个对象?如果我在依赖注入容器中注册一个对象,我在该对象中创建的对象会怎样?例如:

services.AddScoped<ISimpleObject1, SimpleObject1>();

public class SimpleObject1 : ISimpleObject1 {
        public const string Message = "Hello";
        public SimpleObject2 simpleObject2 = new SimpleObject2() { 
            Message2 = "Hello again"; 
        };
}

我对 asp.net 核心和 CLR 运行时相当陌生。我的想法是,我只需要注册 IO 密集型或网络资源密集型的 类。我想以尽可能高效的方式编写应用程序,因此我们将不胜感激任何意见或建议。

我为了向依赖服务注册一个对象,你需要在依赖服务中指定它implements/represents的类型。

您的代码可能无法正常工作,因为 class SimpleObject1 不是 inheriting/implementing ISimpleObject1.

也就是说,您在这里传递了两种类型。它表示的类型 (ISimpleObject1) 和实现类型 (SimpleObject1)。依赖服务不会查看对象来注册它们,因为它不知道它们代表什么类型。这也可能是性能问题。反射非常广阔。

我的建议是使用 services.Add*() 方法注册您需要的每项服务。

一般来说,依赖注入与解决性能或资源问题无关。它是一种使用 IoC 原则使您的 类 松散耦合和分离关注点的设计模式。

没有将所有依赖项注册为服务。这取决于您的应用程序架构。根据经验,我创建和注册服务时,类.

的责任之间有明确的界限。

您在注册的服务中实例化的对象 (SimpleObject2) 将与您的服务 (ISimpleObject1) 具有相同的生命周期。

有关使用寿命的详细信息,请参阅 https://docs.microsoft.com/en-us/dotnet/core/extensions/dependency-injection#service-lifetimes