IRONSOFTWAREHOME
개발자 업데이트

Microsoft.Extensions.DependencyInjection .NET 9 (PDF 작업)

제이콥 멜러, 팀 아이언 최고기술책임자
Jacob Mellor
Updated: 2026년 4월 21일

Microsoft.Extensions.DependencyInjection은 Microsoft .NET에서 제공하는 강력한 라이브러리로, 종속성 주입(DI)를 용이하게 하여 응용 프로그램의 테스트 용이성을 향상시킵니다. DI는 종종 .NET Core 내장 DI 컨테이너나 Autofac 및 Unity 같은 라이브러리를 사용하여 구현됩니다. DI는 클래스가 그 자신의 종속성을 생성하는 대신 종속성(클래스가 필요로 하는 객체)을 클래스에 주입하는 것을 포함합니다. 이는 보통 생성자, 메소드, 혹은 속성 주입을 통해 이루어집니다.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF 작업): 그림 1 - Microsoft.Extensions.DependencyInjectionName 문서

종속성 주입 컨테이너

  1. 서비스 등록: 종속성들은 응용 프로그램의 구성 루트에서 DI 컨테이너에 등록됩니다. 이 등록들은 컨테이너가 종속성을 생성 및 관리하는 방법을 지정합니다.

  2. 종속성 해결: 컴포넌트가 종속성을 요청할 때, DI 컨테이너는 확장 메서드를 사용하는 등록된 유형의 인스턴스를 생성하여 종속성을 해결합니다.

종속성 주입의 유형

  • 생성자 주입: 등록된 서비스들은 클래스의 생성자를 통해 제공되며, 이는 가장 일반적이고 권장되는 DI 방법입니다.
  • 메소드 주입: 서비스들은 해결되어 메소드의 매개변수로 전달됩니다.
  • 속성 주입: 싱글톤 서비스나 스코프된 라이프타임을 가진 서비스는 클래스 속성에 할당될 수 있습니다. 그러나 이 방법은 덜 일반적이며 숨겨진 종속성을 도입할 수 있기 때문에 생성자 주입보다 열등한 것으로 간주됩니다.

DI(종속성 주입)의 라이프타임 이해하기: 스코프, 전이, 싱글톤

  1. 스코프: 스코프된 종속성들은 요청이나 라이프타임 스코프 당 한 번 생성되며, 이는 하나의 요청이나 작업 내에서 같은 인스턴스를 제공하는 것을 의미합니다. 이 일관성은 웹 요청 동안 안정된 종속성을 유지하기 위해 웹 응용 프로그램에서 특히 유용합니다.
  2. 전이: 전이 종속성들은 컨테이너에서 요청될 때마다 인스턴스화됩니다. 이는 전이 종속성이 필요할 때마다 새 인스턴스가 생성됨을 의미합니다. 보통 전이 종속성들은 가벼운 무상태 서비스나 컴포넌트에 사용됩니다.
  3. 싱글톤: 싱글톤 종속성들은 한 번만 인스턴스화되어 응용 프로그램의 전체 라이프타임 동안 공유됩니다. 이는 응용 프로그램의 모든 요청에 대해 같은 싱글톤 종속성 인스턴스가 사용되도록 보장합니다. 싱글톤 종속성들은 보통 응용 프로그램 전체에서 보편적으로 접근 가능해야 하는 상태 유지 서비스나 컴포넌트에 사용됩니다.

설치 Microsoft.Extensions.DependencyInjection 패키지

.NET Core 프로젝트에서 종속성 주입을 사용하려면 먼저 Microsoft.Extensions.DependencyInjection 패키지를 설치해야 합니다. 이는 Visual Studio의 NuGet 패키지 관리자 콘솔에서 다음 명령을 사용하여 수행할 수 있습니다:

PM > Install-Package Microsoft.Extensions.DependencyInjection

스크린샷

Microsoft.Extensions.DependencyInjection .NET 6 (PDF 작업): 그림 2 - 패키지를 설치하기 위해 터미널에 명령 입력

예제: 기본 종속성 주입

이 예제에서는 서비스 공급자를 활용하여 서비스를 해결하고 프로그램에 주입할 샘플 앱(콘솔 응용 프로그램)을 만들어 보겠습니다.

using Microsoft.Extensions.DependencyInjection;
using System;

// Define a service interface
public interface IMessageService
{
    void SendMessage(string message);
}

// Implement the service interface
public class ConsoleMessageService : IMessageService
{
    public void SendMessage(string message)
    {
        Console.WriteLine(message); // Output the message to the console
    }
}

코드 스니펫은 메시지를 보내기 위한 인터페이스 IMessageService를 생성하여 메시지가 어떻게 보내져야 하는지에 대한 계약과 같은 역할을 합니다. ConsoleMessageService 클래스는 메시지를 보내기 위해 Console.WriteLine를 사용하여 이 인터페이스를 구현합니다. 이 분리는 메시지를 전송하는 개념을 변경할 수 있어 시스템을 유연하고 관리 가능하게 합니다.

class Program
{
    static void Main(string[] args)
    {
        // Create a service provider
        var serviceProvider = new ServiceCollection()
            // Register the service implementation
            .AddTransient<IMessageService, ConsoleMessageService>()
            .BuildServiceProvider();

        // Resolve the service
        var messageService = serviceProvider.GetRequiredService<IMessageService>();

        // Use the service to send a message
        messageService.SendMessage("Hello, From Dependency Injection!");
    }
}

이 코드는 서비스를 관리하기 위한 serviceProvider를 설정합니다. IMessageService의 구현체로 ConsoleMessageService를 등록하여 필요한 곳 어디서든 주입할 수 있도록 합니다. Main 메서드는 IMessageService의 인스턴스를 serviceProvider로부터 가져와 콘솔에 메시지를 보내는 데 사용합니다.

출력: 프로그램은 문자열 메시지 'Hello, From Dependency Injection!'을 출력합니다.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF 작업): 그림 3 - 위 코드의 콘솔 출력

IronPDF: C# PDF 라이브러리

IronPDF는 PDF 생성을 간소화하며, HTML에서 PDF 생성, PDF에 텍스트를 추가하고 이미지를 사용하여 PDF 편집하는 등 PDF 조작을 위한 다양한 기능을 제공하는 C#용 강력한 라이브러리입니다.

Microsoft.Extensions.DependencyInjection .NET 6 (PDF 작업): 그림 4 - Microsoft.Extensions.DependencyInjection C# 예제(개발자에게 작동 방식): 그림 2 - IronPDF

IronPDF를 종속성 주입과 함께 사용하기

IronPDF 라이브러리를 .NET Core 응용 프로그램에 통합하여 종속성 주입 기능 및 Microsoft.Extensions.DependencyInjection의 확장 메서드를 활용하려면 다음과 같이 진행할 수 있습니다:

  1. PDF 생성 서비스를 정의할 인터페이스를 생성합니다.
  2. 그 인터페이스를 구현합니다.
  3. 확장 메서드를 활용하여 종속성 주입 컨테이너에 서비스를 등록합니다.
  4. 필요한 대로 응용 프로그램에 서비스를 주입합니다.

인터페이스 정의

PDF 생성 서비스를 정의할 인터페이스를 생성합니다.

public interface IPdfService
{
    void GeneratePdf(string baseUrl, string query, string filePath);
}

인터페이스 구현

IronPDF를 사용하여 PDF 파일을 생성하는 인터페이스를 구현하십시오.

using IronPdf;
using System;
using System.Web;

// Implement the PDF generation interface
public class IronPdfService : IPdfService
{
    public void GeneratePdf(string baseUrl, string query, string filePath)
    {
        License.LicenseKey = "Your-License-Key"; // Set the IronPDF license key
        string encodedQuery = HttpUtility.UrlEncode(query); // Encode the query string
        string fullUrl = $"{baseUrl}?query={encodedQuery}"; // Construct the full URL
        var renderer = new ChromePdfRenderer(); // Create a PDF renderer
        var pdf = renderer.RenderUrlAsPdf(fullUrl); // Render the PDF from the URL
        pdf.SaveAs(filePath); // Save the PDF to the specified file path
        Console.WriteLine($"PDF successfully created from: {fullUrl}");
        Console.WriteLine($"Saved to: {filePath}");
    }
}

서비스 등록

귀하의 Program.cs 클래스에서 의존성 주입을 구성하십시오:

builder.Services.AddSingleton<IPdfService, IronPdfService>();

이 설정은 IPdfService 인터페이스를 IronPdfService로 구현하여, PDF 생성을 위한 단일 서비스 유형을 확립함으로써 종속성을 해결합니다. 그런 다음 응용 프로그램 전체에서 참조되어, 일관된 PDF 생성 기능을 보장합니다.

사용법

컨트롤러나 서비스에 IPdfService를 주입하고 사용하십시오:

public class MyController : Controller
{
    private readonly IPdfService _pdfService;
    
    public MyController(IPdfService pdfService)
    {
        _pdfService = pdfService;
    }
    
    public IActionResult GeneratePdf()
    {
        string baseUrl = "https://ironpdf.com/";
        string query = "Hello World from IronPDF !";
        string filePath = "Demo.pdf";
        
        // Use the injected PDF service to generate a PDF
        _pdfService.GeneratePdf(baseUrl, query, filePath);
        
        return View();
    }
}

이 설정은 IronPdfService가 Microsoft Extensions Dependency Injection 컨테이너에 의해 생성 및 관리되도록 합니다. 기본 PDF 생성 서비스를 대체 구현하여, 소비 코드에 대한 변경 없이 IPdfService 인터페이스의 대안을 제공함으로써 쉽게 대체할 수 있습니다.

PDF 파일의 스크린샷

Microsoft.Extensions.DependencyInjection .NET 6 (PDF 작업): 그림 5 - IronPDF와 함께 Microsoft Extensions Dependency Injection 컨테이너를 사용한 예제 출력

결론

Microsoft.Extensions.DependencyInjection은 .NET 6에서 종속성 주입을 구현하기 위해 강력한 도구이며, 이는 느슨한 결합을 촉진하고 애플리케이션의 테스팅 가능성을 향상시킵니다. 다양한 기능을 갖춘 C# 라이브러리 IronPDF를 통합함으로써, 개발자는 손쉽게 포괄적인 PDF 문서를 최소한의 노력으로 생성할 수 있습니다. IronPDF의 라이센스는 사용할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.