ASP.NET Core에서 SOAP 서비스를 만드는 방법

CChatGPT8
6 Min Read

[ad_1]

분산 애플리케이션을 구성하는 서비스는 데이터나 정보를 교환하기 위해 서로 통신해야 합니다. 이러한 통신에는 공통 데이터 형식이 필요합니다. 이는 분산 애플리케이션이 이기종 플랫폼에 걸쳐 있는 경우 옵션의 범위를 좁힙니다. DCOM, RPC, IIOP와 같은 이전 프로토콜은 동종 환경으로 제한되었습니다.

이기종 환경의 경우 서로 다른 플랫폼에서 지원되는 통신 프로토콜이 필요합니다. SOAP(Simple Object Access Protocol)가 등장하는 곳입니다.

SOAP는 시스템 간 데이터 교환을 용이하게 하기 위해 XML을 사용하는 경량 프로토콜입니다. SOAP를 사용하면 다양한 플랫폼과 프로그래밍 언어로 개발된 개체가 원활하게 통신할 수 있습니다. 따라서 SOAP를 사용하면 다양한 시스템의 서비스를 구성 요소로 통합하여 복잡한 정보 시스템을 구축할 수 있습니다.

이 문서에서는 SOAP를 소개하고 ASP.NET Core 애플리케이션에서 간단한 SOAP 서비스를 구현하는 방법을 보여줍니다. 이를 위해 ASP.NET Core용 SOAP 미들웨어 패키지인 SoapCore를 활용하겠습니다.

이 문서에 제공된 코드 예제를 사용하려면 시스템에 Visual Studio 2022가 설치되어 있어야 합니다. 아직 복사본이 없다면 여기에서 Visual Studio 2022를 다운로드할 수 있습니다.

Visual Studio 2022에서 ASP.NET Core 웹 API 프로젝트 만들기

Visual Studio 2022에서 ASP.NET Core 7 Web API 프로젝트를 만들려면 아래 설명된 단계를 따르세요.

  1. Visual Studio 2022 IDE를 실행합니다.
  2. “새 프로젝트 만들기”를 클릭하세요.
  3. “새 프로젝트 만들기” 창에 표시된 템플릿 목록에서 “ASP.NET Core Web API”를 선택합니다.
  4. 다음을 클릭하세요.
  5. “새 프로젝트 구성” 창에서 새 프로젝트의 이름과 위치를 지정합니다.
  6. 선택적으로 기본 설정에 따라 “동일한 디렉터리에 솔루션과 프로젝트 배치” 확인란을 선택합니다.
  7. 다음을 클릭하세요.
  8. 다음에 표시되는 “추가 정보” 창에서 “컨트롤러 사용(최소 API를 사용하려면 선택 취소)” 확인란을 선택된 상태로 둡니다. 이 프로젝트에서는 최소한의 API를 사용하지 않습니다.
  9. “추가 정보” 창의 다른 곳에서 “인증 유형”을 “없음”(기본값)으로 설정하고 “개방형 API 지원 활성화”, “HTTPS 구성” 및 “Docker 활성화” 확인란이 선택 해제되어 있는지 확인하세요. . 여기서는 이러한 기능을 사용하지 않을 것입니다.
  10. 생성을 클릭합니다.

아래 섹션에서는 이 ASP.NET Core Web API 프로젝트를 사용하여 SOAP 서비스 작업을 수행합니다.

SoapCore NuGet 패키지 설치

다음으로 Visual Studio에서 방금 만든 Web API 프로젝트에 SoapCore NuGet 패키지를 추가합니다. 이렇게 하려면 솔루션 탐색기 창에서 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭한 후 “NuGet 패키지 관리”를 선택하세요. NuGet 패키지 관리자 창에서 SoapCore 패키지를 검색하여 설치합니다.

또는 아래 표시된 줄을 입력하여 NuGet 패키지 관리자 콘솔을 통해 SoapCore 패키지를 설치할 수 있습니다.

PM> Install-Package SoapCore

세 번째 옵션은 다음 명령을 사용하여 dotnet CLI를 통해 SoapCore 패키지를 설치하는 것입니다.

dotnet add package SoapCore

ASP.NET Core에서 데이터 계약 만들기

먼저 데이터 계약을 정의해 보겠습니다. 분산 애플리케이션에서 데이터 계약은 교환된 데이터의 구조와 형식을 정의하여 서로 다른 시스템 간에 교환되는 데이터의 일관성과 호환성을 보장하는 데 중요한 역할을 합니다. 데이터 계약은 문자열, 숫자, 부울과 같은 기본 유형 외에도 클래스, 구조 및 컬렉션 유형과 같은 복합 유형도 지원합니다.

데이터 계약 내에서 각 데이터 유형의 속성 또는 필드는 해당 데이터 유형, 이름, 제약 조건 또는 유효성 검사 규칙과 함께 지정됩니다. 이는 클라이언트와 다양한 프로그래밍 언어 또는 플랫폼으로 구현된 서비스 간의 상호 운용성을 가능하게 하는 데 도움이 됩니다.

C#에서는 다음을 활용할 수 있습니다. [DataContract] 데이터 계약을 정의하는 속성입니다. Author.cs라는 새 파일을 만들고 다음 코드를 입력하여 데이터 계약을 정의합니다.

using System.Runtime.Serialization;
namespace SoapCore_Demo
{
    [DataContract]
    public class Author
    {
        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
        [DataMember]
        public string Address { get; set; }
    }
}

ASP.NET Core에서 서비스 계약 만들기

서비스 계약은 SOA(서비스 지향 아키텍처)의 기본 부분이며 서비스에서 노출되는 인터페이스와 동작을 정의합니다. 서비스 계약은 서비스 공급자와 고객 간의 명확하고 효율적인 커뮤니케이션을 촉진함으로써 서비스 지향 아키텍처에서 중요한 역할을 합니다. 이러한 계약은 양 당사자 간의 상호 합의를 보장하여 상호 운용성과 효과적인 상호 작용을 촉진합니다.

서비스 계약은 일반적으로 서비스 인터페이스(서비스 설명)와 서비스를 설명하는 관련 메타데이터(예: 메시지 형식, 보안 요구 사항, 서비스 동작)라는 두 가지 주요 부분으로 구성됩니다. 서비스 계약은 C#의 ServiceContract 특성을 사용하여 정의됩니다. 그만큼 [ServiceContract] C#의 특성은 인터페이스나 클래스를 서비스 계약으로 지정하는 데 사용됩니다.

AuthorServiceContract.cs라는 또 다른 .cs 파일을 만들고 여기에 다음 코드를 입력합니다.

using System.Diagnostics;
using System.ServiceModel;
using System.Xml.Linq;
namespace SoapCore_Demo
{
    [ServiceContract]
    public interface IAuthorService
    {
        [OperationContract]
        void MySoapMethod(XElement xml);
    }
    public class AuthorService : IAuthorService
    {
        public void MySoapMethod(XElement xml)
        {
            Trace.WriteLine(xml.ToString());
        }
    }
}

IAuthorService 인터페이스는 [ServiceContract] 위 예에서 서비스 계약을 정의하는 속성입니다. MySoapMethod() 메서드에는 다음과 같은 주석이 추가됩니다. [OperationContract] 클라이언트가 서비스와 상호 작용하기 위해 호출할 수 있는 작업으로 표시되는 속성입니다.

ASP.NET Core에서 SOAP 서비스 등록

SOAP 서비스를 등록하려면 먼저 Program.cs 파일에 다음 코드 조각을 포함하여 컨테이너에 서비스를 추가해야 합니다.

builder.Services.AddSingleton<IAuthorService, AuthorService>();

그런 다음 다음 코드 줄을 사용하여 SOAP 끝점에 대한 HTTP 요청 파이프라인을 구성해야 합니다.

app.UseSoapEndpoint<IAuthorService>("/Service.asmx", new SoapEncoderOptions());

다음은 참조용 Program.cs 파일의 전체 소스 코드입니다.

using SoapCore;
using SoapCore_Demo;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddSingleton<IAuthorService, AuthorService>();
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseSoapEndpoint<IAuthorService>("/Service.asmx", new SoapEncoderOptions());
app.UseAuthorization();
app.MapControllers();
app.Run();

SOAP 서비스 실행

이제 애플리케이션을 실행하고 다음 엔드포인트를 찾아 그림 1과 같이 SOAP 서비스의 생성된 WSDL(Web Service Description Language)을 확인하세요.

http://localhost:5210/Service.asmx
비누 wsdl aspnet 코어 v2 IDG

그림 1: SOAP 서비스의 WSDL.

그리고 ASP.NET Core의 SOAP 서비스가 있습니다. Visual Studio IDE에서 WCF 웹 서비스 참조 도구를 사용하여 SOAP 서비스를 만들 수도 있습니다. 이 도구는 Visual Studio 서비스 확장으로 제공되며 .NET Core 애플리케이션에서 SOAP 기반 WCF(Windows Communication Foundation) 서비스를 만드는 데 사용할 수 있습니다.

저작권 © 2023 IDG Communications, Inc.

Share this Article
Leave a comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다