[C# PL/SQL] 15.C#과 오라클 프로시저를 이용한 API 개발, ASP.NET Core와 ODP.NET 연동, RESTful API 설계.

현대의 소프트웨어 개발에서 데이터베이스와의 상호 작용은 매우 중요한 요소입니다. 특히, 오라클 데이터베이스는 다양한 산업에서 많이 사용되며, C#과 ASP.NET Core를 사용하여 RESTful API를 설계하는 것이 일반적입니다. 이 글에서는 오라클 프로시저와 C#을 이용한 API 개발, ASP.NET Core와 ODP.NET의 통합, RESTful API 설계의 원리에 대해 자세히 설명하겠습니다.

1. 오라클 프로시저란?

오라클 프로시저는 데이터베이스 서버에서 실행되는 저장 프로시저로, 특정 작업을 수행하는 SQL 코드 블록입니다. 이러한 프로시저는 실행 계획을 미리 컴파일하여 성능을 향상시킬 수 있으며, 복잡한 비즈니스 로직을 데이터베이스 내에서 처리할 수 있습니다. 예를 들어, 고객 정보를 업데이트하는 프로시저는 다음과 같이 정의될 수 있습니다.

        
        CREATE OR REPLACE PROCEDURE UpdateCustomer(
            p_CustomerID IN NUMBER,
            p_Name IN VARCHAR2,
            p_Email IN VARCHAR2)
        AS
        BEGIN
            UPDATE Customers
            SET Name = p_Name, Email = p_Email
            WHERE CustomerID = p_CustomerID;
        END UpdateCustomer;
        
        

2. ODP.NET 소개

ODP.NET (Oracle Data Provider for .NET)은 마이크로소프트 닷넷 애플리케이션이 오라클 데이터베이스와 상호 작용할 수 있게 해주는 데이터 공급자입니다. 이 라이브러리를 사용하면 강력한 성능과 기능을 바탕으로 데이터베이스 작업을 손쉽게 수행할 수 있습니다.

3. ASP.NET Core란?

ASP.NET Core는 마이크로소프트가 개발한 오픈 소스 웹 프레임워크로, 웹 애플리케이션과 웹 API를 구축하는데 사용됩니다. 경량이고 성능이 뛰어나며, 플랫폼에 구애받지 않는 특징이 있습니다. 이 프레임워크는 DI(의존성 주입), 미들웨어, 라우팅 등 다양한 기능을 지원합니다.

4. C#과 오라클 프로시저를 이용한 API 개발

C#과 오라클 프로시저를 연동하여 API를 개발하는 과정은 다음과 같은 단계로 이루어집니다.

  1. ODP.NET 설치: ODP.NET 라이브러리를 NuGet 패키지 관리자에서 설치합니다.
  2. 프로시저 호출을 위한 데이터베이스 연결: C# 코드에서 오라클 데이터베이스에 연결합니다.
  3. 프로시저 호출: C#에서 정의한 프로시저를 호출합니다.

4.1 ODP.NET 설치

Visual Studio에서 새 프로젝트를 생성하고, NuGet 패키지 관리자를 열어 “Oracle.ManagedDataAccess” 패키지를 설치합니다.

4.2 데이터베이스 연결

        
        using Oracle.ManagedDataAccess.Client;

        string connectionString = "User Id=;Password=;Data Source=";
        using (var connection = new OracleConnection(connectionString))
        {
            connection.Open();
            // 프로시저 호출 코드를 여기에 추가
        }
        
    

4.3 프로시저 호출

선언한 프로시저를 호출하는 코드는 다음과 같습니다.

        
        using (var command = new OracleCommand("UpdateCustomer", connection))
        {
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.Add("p_CustomerID", OracleDbType.Int32).Value = 1;
            command.Parameters.Add("p_Name", OracleDbType.Varchar2).Value = "John Doe";
            command.Parameters.Add("p_Email", OracleDbType.Varchar2).Value = "john.doe@example.com";

            command.ExecuteNonQuery();
        }
        
    

5. ASP.NET Core Web API 설계

이제 RESTful API를 설계해보겠습니다. ASP.NET Core에서 Web API를 만드는 기본적인 구조를 살펴보겠습니다.

5.1 Web API 프로젝트 생성

  1. Visual Studio에서 “ASP.NET Core Web Application”을 선택합니다.
  2. API 템플릿을 선택하여 새 프로젝트를 만듭니다.

5.2 Controller 생성

        
        using Microsoft.AspNetCore.Mvc;

        [Route("api/[controller]")]
        [ApiController]
        public class CustomersController : ControllerBase
        {
            private readonly string connectionString = "User Id=;Password=;Data Source=";

            [HttpPut("{id}")]
            public IActionResult UpdateCustomer(int id, [FromBody] Customer customer)
            {
                using (var connection = new OracleConnection(connectionString))
                {
                    connection.Open();
                    using (var command = new OracleCommand("UpdateCustomer", connection))
                    {
                        command.CommandType = CommandType.StoredProcedure;
                        command.Parameters.Add("p_CustomerID", OracleDbType.Int32).Value = id;
                        command.Parameters.Add("p_Name", OracleDbType.Varchar2).Value = customer.Name;
                        command.Parameters.Add("p_Email", OracleDbType.Varchar2).Value = customer.Email;

                        command.ExecuteNonQuery();
                    }
                }
                return NoContent();
            }
        }
        public class Customer
        {
            public string Name { get; set; }
            public string Email { get; set; }
        }
        
    

5.3 RESTful API 테스트

Postman이나 cURL을 사용하여 API를 테스트할 수 있습니다. API의 PUT 엔드포인트에 고객 정보를 JSON 형식으로 전송하여 프로시저를 호출할 수 있습니다.

        
        PUT http://localhost:5000/api/customers/1
        Content-Type: application/json

        {
            "name": "John Doe",
            "email": "john.doe@example.com"
        }
        
    

6. 결론

C#과 오라클 프로시저를 이용한 API 개발은 데이터베이스 작업을 효율적으로 처리할 수 있는 강력한 방법입니다. ASP.NET Core와 ODP.NET의 연동을 통해 RESTful API를 간단하게 설계할 수 있으며, 이를 통해 클라이언트 애플리케이션이 편리하게 데이터베이스와 상호작용할 수 있습니다. 미니멀한 코드와 높은 성능을 갖춘 구성으로, 이러한 구조는 확장성 있는 소프트웨어 아키텍처를 만들어줍니다.

앞으로도 데이터베이스와의 연동, API 설계, 성능 최적화 등 다양한 주제를 가지고 글을 이어나가겠습니다.