.Net의 싱글 톤 내부 개체

Veronica_Zotali

진짜 예를 들어 보자. 다음 클래스는 다음과 같습니다.

public class HttpClientWrapper : IHttpClientWrapper
{
    private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();
    private readonly IStatsDPublisher _statsDPublisher;
    private readonly HttpClient _client;

    public HttpClientWrapper(IStatsDPublisher statsDPublisher, string baseAddress)
    {
        _statsDPublisher = statsDPublisher;
        _client = new HttpClient();


        _client.BaseAddress = new Uri(baseAddress);
        ServicePointManager.FindServicePoint(_client.BaseAddress).ConnectionLeaseTimeout = (int)TimeSpan.FromSeconds(60).TotalMilliseconds;
    }

    public async Task PostAsync<T>(string resource, T content)
    {
        var stringContent = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8,"application/json");

        var name = typeof(T);

        using (var timer = _statsDPublisher.StartTimer($"HttpClient.{name.Name}.Post"))
        {
            try
            {
                await _client.PostAsync(resource, stringContent).ContinueWith(
                    (postTask) =>
                    {
                        postTask.Result.EnsureSuccessStatusCode();
                    });

                timer.StatName = $"{timer.StatName}.Success";
            }
            catch (Exception ex)
            {
                timer.StatName = $"{timer.StatName}.Failure";
                Logger.ExtendedException(ex, "Failed to Post.", new {Url = resource, Content = content});
                throw;
            }
        }
    }

    public async Task PutAsync<T>(string resource, T content)
    {
        var stringContent = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8,
            "application/json");

        var name = typeof(T);

        using (var timer = _statsDPublisher.StartTimer($"HttpClient.{name.Name}.Put"))
        {
            try
            {
                await _client.PutAsync(resource, stringContent).ContinueWith(
                   (postTask) =>
                   {
                       postTask.Result.EnsureSuccessStatusCode();
                   });

                timer.StatName = $"{timer.StatName}.Success";
            }
            catch (Exception ex)
            {
                timer.StatName = $"{timer.StatName}.Failure";
                Logger.ExtendedException(ex, "Failed to Put.", new { Url = resource, Content = content });
                throw;
            }
         }
    }

}}

IoC에서 우리는 다음을 수행합니다.

 Bind<IHttpClientWrapper>()
                .To<HttpClientWrapper>()
                .InSingletonScope()

그래서 지금은 싱글 톤입니다. HttpClientWrapper를 호출 할 때마다 HttpClient의 동일한 인스턴스를 처리하는지, 아니면 새 인스턴스를 생성 할 때마다 처리해야합니까? Singleton 임에도 불구하고 HttpClientWrapper에 액세스 할 때마다 HttpClient의 새 인스턴스를 만듭니다. 조언 해 주시겠습니까?

감사

K. 버거

Singleton은 전체 응용 프로그램에 클래스의 단일 인스턴스 만 있음을 의미합니다. 단순히 해당 클래스의 다른 인스턴스를 만들 수 없습니다. 그리고 싱글 톤 내부의 객체로 작업하면 항상 동일한 인스턴스가 반환됩니다. 그러나 싱글 톤 외부에서 다른 클래스의 새 인스턴스를 계속 만들 수 있습니다. 그래서 대답은 분명히 "아니오"입니다.

도움이되기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP의 싱글 톤 객체

분류에서Dev

iOS의 싱글 톤 객체

분류에서Dev

변수는 내 싱글 톤 객체 내부의 상태를 변경합니다.

분류에서Dev

코 틀린의 개조 싱글 톤

분류에서Dev

싱글 톤 패턴 내부의 작업 과부하 이해

분류에서Dev

Svelte의 싱글 톤

분류에서Dev

RequireJS의 싱글 톤

분류에서Dev

DependencyInjection의 싱글 톤

분류에서Dev

싱글 톤 객체 내부에 무언가를 복제

분류에서Dev

코어 데이터 개체의 NSArray가 null 인 싱글 톤

분류에서Dev

Jasmine : 싱글 톤의 내부 방법 조롱

분류에서Dev

싱글 톤 내부 스레드 내부의 파이썬 서비스

분류에서Dev

싱글 톤 객체 구문

분류에서Dev

서블릿의 싱글 톤

분류에서Dev

싱글 톤 패턴의 ClassLoader

분류에서Dev

2 개의 인터페이스를 구현하는 싱글 톤 객체 생성

분류에서Dev

싱글 톤 내부의 애플리케이션 컨텍스트에 액세스

분류에서Dev

싱글 톤을 만들 때 싱글 톤 내의 범위가 반복되는 이유는 무엇입니까?

분류에서Dev

Ruby의 싱글 톤 클래스 내에서 싱글 톤 메서드를 호출합니까?

분류에서Dev

Scala 싱글 톤 객체에서 값의 Java 직렬화

분류에서Dev

루비의 싱글 톤 메소드 체인

분류에서Dev

싱글 톤 iOS 내의 removeFromSuperview에 대한 EXC_BAD_ACCESS

분류에서Dev

매개 변수를 취하는 서비스의 싱글 톤

분류에서Dev

싱글 톤의 매개 변수로 self 사용

분류에서Dev

PowerMock-개인 생성자로 싱글 톤 모의

분류에서Dev

두 개의 인스턴스를 반환하는 싱글 톤

분류에서Dev

내 PHP 프로젝트의 싱글 톤 패턴이 두 번째로 빈 객체를 반환합니다.

분류에서Dev

자바의 싱글 톤과 C ++의 싱글 톤

분류에서Dev

싱글 톤 공개 정적 결승

Related 관련 기사

뜨겁다태그

보관