CHashtag

asp.net DI의 life cycle (Singleton, Scope, Transient) 본문

C#/ASP.NET

asp.net DI의 life cycle (Singleton, Scope, Transient)

HyoSeong 2024. 5. 13. 21:37
반응형

안녕하세요.

 

asp.net (혹은 core) 에는 3가지 Life cycle이 존재합니다.

 

Life cycle은 무엇이며, 어떤 경우에 적절한지 한번 알아봅시다.

 

 

Web Server에서의 Life Cycle

기본적으로 Server는, Request를 받고, Response를 내보내 줍니다.

수많은 Request들을 처리하게 되는데, 이 때 DI는 필수적이죠.

매번 새로운 객체를 생성하는 것이 불필요한 경우도 있고,

 

내부 변수를 다른 Request와는 절대 공유해서는 안되는 경우도 있을 수 있습니다.

 

또는, 하나의 Request내에서만 공유되도록 하고싶을 수도 있죠.

 

AddSingleton()

말 그대로 Inject될때 최초 만들어둔 singleton 객체로 생성됩니다.

장점이자 단점은, 매번 동일한 객체를 반환한다는 것이죠.

 

 

AddScope()

Scope는 하나의 Request에 한해서 동일한 객체를 Inject합니다.

 

 

AddTransient()

하나의 Request안에서 여러번 Inject될 때, 매번 새로운 객체가 생성됩니다.

 

 

 

 

여담으로 이런 질문을 면접 때 받은적이 있었는데,

"오픈소스를 복붙해서 잘 모르겠습니다" 라고 대답한 기억이 있네요,,;;

(어떻게 붙었지 나?)

 

구현하려는 객체 특성에 맞는 적절한 Life Cycle을 지정하는것이 정말 중요하니, 꼭 개념 알고계시면 좋을 것 같습니다.

 

 

 

+ 오랜만에 글을 쓰려니 잘 안되네요,,

다시 꾸준히 작성해보려 합니다.

 

감사합니다.

반응형