IRONSOFTWAREHOME
개발자 업데이트

OData C# (개발자를 위한 작동 방식)

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

오픈 데이터 프로토콜 (OData)은 Microsoft .NET 개발에서 RESTful API를 구축하고 소비하는 것을 간소화합니다. CRUD (Create, Read, Update, Delete) 작업을 통해 데이터를 쿼리하고 조작하는 표준화 된 접근 방식을 제공합니다. 이 글에서는 .NET에서 API 개발을 간소화하는 Open Data Protocol의 예시와 주요 이점을 강조합니다. OData에 대해 더 알아보려면 소스 코드를 확인하기 위해 OData C# GitHub Repository를 확인할 수 있습니다.

에이타 OData C# (개발자를 위한 작동 방식): 그림 1 - OData C#- 데이터 접근 프로토콜

OData는 GET 및 POST와 같은 URL 및 HTTP 동사를 사용하여 RESTful 웹 API를 구축하기 위한 표준 관행을 따릅니다. 데이터를 표현하기 위해 엔터티 데이터 모델 (EDM) 및 JSON 또는 AtomPub를 메시지 인코딩으로 사용합니다. OData가 GraphQL에 비해 API 개발을 간소화하지만, 고급 기능은 적을 수 있습니다.

에이타 OData C# (개발자를 위한 작동 방식): 그림 2 - OData

.NET에서 OData 사용 이점

  • 표준화: OData는 엔터티 데이터 모델, 요청 처리 및 응답 서식을 정의하는 일관된 방법을 강요합니다. 이는 개발 복잡성을 줄이고 클라이언트 애플리케이션 통합을 단순화합니다.
  • 풍부한 쿼리 기능: OData는 CRUD 작업을 수행, 필터링($filter), 정렬(오름차순/내림차순)($orderby), 페이징($top, $skip) 기능을 위한 일관된 데이터 쿼리 방법을 지원하여 클라이언트가 특정 데이터 세트를 효율적으로 검색할 수 있게 합니다.
  • 개발자 경험 향상: .NET의 OData 라이브러리는 API 개발을 간소화합니다. 개발자는 라우팅, 쿼리 처리 및 데이터 직렬화를 위한 사전 제작된 컴포넌트를 활용하여 코드 중복 및 개발 시간을 줄일 수 있습니다.
  • 상호운용성: 다양한 플랫폼의 OData 호환 클라이언트는 .NET 기반의 OData 서비스와 원활하게 상호작용하여 더 넓은 애플리케이션 통합을 촉진합니다.

OData를 사용하여 .NET Framework 시작하기

.NET의 OData 라이브러리는 데이터를 조작하는 효율적인 방법을 제공하여 개발자 경험을 향상시킵니다. .NET 개발에서 RESTful API를 구축하고 소비하는 것을 간소화합니다. CRUD 작업(Create, Read, Update, Delete)과 같은 친숙한 작업을 통한 데이터 쿼리 및 조작에 대한 표준화 된 접근 방식을 제공합니다.

.NET 프로젝트에서 OData 설정하기

Visual Studio에서 새 프로젝트를 열고 시작하십시오. 그런 다음 솔루션 탐색기로 이동하여 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 'NuGet 패키지 관리'를 선택하십시오. Microsoft.AspNetCore.OData를 검색하고 설치하십시오. 현재 OData 버전은 8.2.5입니다.

NuGet 패키지 관리자 콘솔에서 다음 명령어를 사용하여 OData를 설치하십시오.

PM > Install-Package Microsoft.AspNetCore.OData

에이타 OData C# (개발자를 위한 작동 방식): 그림 3 - OData 설치

예제: ASP.NET Core에서 OData 서비스 생성하기

ASP.NET Core 애플리케이션에서 간단한 OData 모델 클래스를 만들어 봅시다. 다음의 코드에서는 OData 구문을 사용하여 쿼리할 수 있는 서비스 목록을 노출하는 클래스를 보여줍니다.

public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}

코드 설명

Service 클래스는 서비스를 관리하기 위한 C#의 기본 데이터 구조를 나타냅니다. 세 가지 속성을 포함합니다: Id: 서비스에 대한 정수 식별자. FirstName: 서비스와 관련된 이름을 나타내는 문자열. Price: 서비스의 가격을 나타내는 소수점 값. 이 클래스는 .NET 개발에서 보다 복잡한 서비스 관련 기능을 만들기 위한 빌딩 블록으로 사용할 수 있습니다. 상황에 따라 컬렉션 또는 내비게이션 속성을 사용할 수도 있습니다.

여기서 Visual Studio에서 ASP.NET Core 애플리케이션에서 표준 OData 엔드포인트를 통해 서비스 목록을 노출하는 OData 컨트롤러를 설정하는 방법을 소개합니다. 다음 예제는 정적 서비스 목록을 사용하는 기본 구현과 Web API에서 OData 쿼리 기능을 활성화하는 방법을 보여줍니다.

using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;

namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName = "Smartphone", Price = 2585.9M }
        };

        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}

코드 설명

제공된 코드는 ASP.NET Core 애플리케이션에서 ODataController라는 ServiceController을 정의하여 OData 프로토콜을 사용하여 데이터를 쿼리하고 조작할 수 있게 합니다. 이것은 요청을 odata/Service로 라우팅하고 노트북과 스마트폰을 포함한 Service 객체의 정적 목록을 제공합니다. Get 메소드은 [EnableQuery]로 장식되어 있으며, 클라이언트가 제품 목록에 대해 OData 쿼리(필터링, 정렬, 페이징)를 수행할 수 있게 하며, HTTP GET 요청에 대한 결과를 IActionResult로 반환합니다.

Program.cs에서 OData 서비스를 등록합니다

.NET 6 애플리케이션에 OData를 통합하려면 필요한 OData 패키지를 설치하고 구성해야 합니다. 이는 OData 모델 정의, OData 미들웨어 설정, 필터링, 정렬, 확장과 같은 OData 기능을 지원하도록 서비스를 구성하는 것을 포함합니다.

using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}

builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );

코드 설명

이 코드는 .NET 6 애플리케이션에서 OData 지원을 구성합니다. 먼저 필요한 네임스페이스를 가져오고 WebApplicationBuilder 인스턴스를 생성합니다. GetEdmModel 메소드는 ODataConventionModelBuilder를 사용하여 OData 모델을 정의하며, 이는 Service 엔티티에 대한 엔티티 세트를 지정합니다. 그런 다음 AddOData 메소드를 호출하여 선택, 필터, 정렬, 카운트, 확장 및 쿼리 결과에 대한 최대 상위 값을 20으로 설정하는 것을 포함하여 OData 서비스를 구성합니다. 이 설정은 애플리케이션이 OData 쿼리를 효과적으로 처리할 수 있도록 보장합니다.

AddOData() 메소드는 GetEdmModel() 메소드를 사용하며, 이는 OData 서비스를 형성하는 데이터 모델을 검색하고, 노출된 데이터를 정의하기 위한 Entity Data Model (EDM)이라고 불리는 추상 데이터 모델을 사용하는 OData 서비스를 기반으로 합니다. ODataConventionModelBuilder 클래스는 기본 명명 규칙을 통해 EDM을 생성하여 코드 요구를 최소화합니다. 또는 개발자는 EDM에 대한 더 큰 제어를 위해 ODataModelBuilder 클래스를 활용할 수 있습니다.

코드의 스크린샷

에이타 OData C# (개발자를 위한 작동 방식): 그림 4 - Visual Studio에서의 코드

서비스 실행하기

서비스를 실행한 후 다양한 OData 쿼리 옵션을 사용하여 서비스를 쿼리할 수 있습니다. 예를 들어:

https://localhost:7131/odata/Service
Text

프로그램의 출력

에이타 OData C# (개발자를 위한 작동 방식): 그림 5 - OData 서비스 출력

IronPDF 소개

IronPDF는 파일을 PDF로 변환, PDF 페이지를 분할, PDF에서 페이지를 제거하는 작업을 .NET 애플리케이션 내에서 간소화하도록 설계된 포괄적인 C# 라이브러리입니다. HTML, CSS, 이미지, JavaScript로부터 PDF를 생성할 수 있는 기능을 포함하며, 개발자가 웹 콘텐츠를 고품질 PDF 문서로 손쉽게 변환할 수 있게 합니다. 사용하기 쉬운 API와 강력한 렌더링 엔진을 통해 IronPDF는 개발자가 PDF 생성 프로세스를 간소화하여 응용 프로그램에 동적 문서 생성 기능을 쉽게 통합할 수 있도록 합니다.

에이타 OData C# (개발자를 위한 작동 방식): 그림 6 - IronPDF

프로젝트에 IronPDF 추가하기

Visual Studio에서 IronPDF를 설치하려면 NuGet 패키지 관리자 콘솔로 이동하고 다음 명령을 사용합니다.

PM > Install-Package IronPdf

PDF 생성하기

.NET 애플리케이션에서 HTML 콘텐츠에서 PDF 문서를 생성하려면 DinkToPdf와 같은 라이브러리의 ChromePdfRenderer 클래스를 사용할 수 있습니다. 이 예제는 직원 레코드의 세부 정보를 포함하는 PDF를 만드는 방법을 보여줍니다.

public record Employee (string FirstName, string LastName);

class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}

이 예제는 간단한 직원 기록을 생성한 후, IronPDF를 사용하여 사람의 이름을 표시하는 PDF 문서를 생성합니다. 이는 C# 레코드가 .NET 애플리케이션에서 PDF 생성과 얼마나 매끄럽게 통합될 수 있는지를 보여줍니다.

에이타 OData C# (개발자를 위한 작동 방식): 그림 7 - PDF 출력

결론

OData는 .NET에서 RESTful API의 개발 및 소비를 표준화 된 쿼리 및 조작 기능을 제공하여 간소화합니다. Entity Framework와 통합하여 데이터 액세스와 관리를 간소화하여 개발 효율성을 향상시킬 수 있습니다. OData는 풍부한 쿼리 기능과 개선된 개발자 경험을 통해 다양한 플랫폼 간의 무결성 및 상호 운영성을 제공하여 API 개발을 간소화 합니다. 또한 IronPDF는 .NET 애플리케이션 내에서 강력한 PDF 조작을 위한 포괄적인 기능과 지원을 제공합니다.

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

제이콥 멜러는 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일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.