Blazor Web에는 세가지의 서비스가 있습니다. 서비스 세개인 'Singleton, Transient, Scoped'의 차이점을 살펴보겠습니다.
· Singleton
많이 알려진 싱글톤 타입과 동일하게 프로그램 내에 단 한개의 싱글 인스턴스만 존재하여 갱신되지 않습니다.
· Transient
'일시적인' 이라는 뜻으로 스크립트 또는 요청마다 갱신되어 새로운 인스턴스를 가지게 됩니다.
· Scoped
Singleton과 Transient의 중간 형태로 사용자가 웹에 접속한 시점에 갱신이 됩니다. Singleton과 다르게 전역으로 모두에게 동일한 인스턴스가 아닌 개개인마다 각각의 인스턴스를 가지도록 합니다.
·예시
세개의 서비스를 생성하고 GUID를 가지고 있도록하고 이것이 어떻게 바뀌는지 보도록 하겠습니다.
public class SingletonService : IDisposable
{
public Guid ID { get; set; }
public SingletonService()
{
ID = Guid.NewGuid();
}
public void Dispose()
{
Console.WriteLine("SingletonService Disposed");
}
}
public class TransientService : IDisposable
{
public Guid ID { get; set; }
public TransientService()
{
ID = Guid.NewGuid();
}
public void Dispose()
{
Console.WriteLine("TransientService Disposed");
}
}
public class ScopedService : IDisposable
{
public Guid ID { get; set; }
public ScopedService()
{
ID = Guid.NewGuid();
}
public void Dispose()
{
Console.WriteLine("ScopedService Disposed");
}
}