.NET Core용 WCF dotnet-svcutil 도구WCF dotnet-svcutil tool for .NET Core

WCF(Windows Communication Foundation) dotnet-svcutil 도구는 네트워크 위치의 웹 서비스 또는 WSDL 파일에서 메타데이터를 검색하고, 해당 웹 서비스 작업에 액세스하는 클라이언트 프록시 메서드가 포함된 WCF 클래스를 생성하는 .NET Core CLI 도구입니다.The Windows Communication Foundation (WCF) dotnet-svcutil tool is a .NET Core CLI tool that retrieves metadata from a web service on a network location or from a WSDL file, and generates a WCF class containing client proxy methods that access the web service operations.

.NET Framework 프로젝트용 서비스 모델 메타데이터 - svcutil 도구와 비슷하게, dotnet-svcutil은 .NET Core 및 .NET Standard 프로젝트와 호환되는 웹 서비스 참조를 생성하기 위한 명령줄 도구입니다.Similar to the Service Model Metadata - svcutil tool for .NET Framework projects, the dotnet-svcutil is a command-line tool for generating a web service reference compatible with .NET Core and .NET Standard projects.

dotnet-svcutil 도구는 Visual Studio 2017 버전 15.5에서 처음 제공된 WCF Web Service Reference Visual Studio 연결된 서비스 공급자의 대체 옵션입니다.The dotnet-svcutil tool is an alternative option to the WCF Web Service Reference Visual Studio connected service provider that first shipped with Visual Studio 2017 version 15.5. .NET Core CLI 도구인 dotnet svcutil 도구는 Linux, macOS, Windows에서 플랫폼 간에 사용할 수 있습니다.The dotnet-svcutil tool as a .NET Core CLI tool, is available cross-platform on Linux, macOS, and Windows.

중요

신뢰할 수 있는 원본의 서비스만 참조해야 합니다.You should only reference services from a trusted source. 신뢰할 수 없는 원본에서 참조를 추가하면 보안이 손상될 수 있습니다.Adding references from an untrusted source may compromise security.

전제 조건Prerequisites

시작Getting started

다음 예제에서는 .NET Core 웹 프로젝트에 웹 서비스 참조를 추가하고 서비스를 호출하는 데 필요한 단계를 안내합니다.The following example walks you through the steps required to add a web service reference to a .NET Core web project and invoke the service. HelloSvcutil이라는 .NET Core 웹 애플리케이션을 만들고 다음 계약을 구현하는 웹 서비스에 대한 참조를 추가합니다.You'll create a .NET Core web application named HelloSvcutil and add a reference to a web service that implements the following contract:

[ServiceContract]
public interface ISayHello
{
    [OperationContract]
    string Hello(string name);
}

이 예제에서는 웹 서비스가 http://contoso.com/SayHello.svc 주소에서 호스트되는 것으로 가정합니다.For this example, let's assume the web service will be hosted at the following address: http://contoso.com/SayHello.svc

Windows, macOS 또는 Linux 명령 창에서 다음 단계를 수행합니다.From a Windows, macOS, or Linux command window perform the following steps:

  1. 프로젝트에 대해 HelloSvcutil 디렉터리를 만들고 다음 예제와 같이 현재 디렉터리로 설정합니다.Create a directory named HelloSvcutil for your project and make it your current directory, as in the following example:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. 다음과 같이 dotnet new 명령을 사용하여 이 디렉터리에서 새 C# 웹 프로젝트를 만듭니다.Create a new C# web project in that directory using the dotnet new command as follows:

    dotnet new web
    
  3. dotnet-svcutil NuGet 패키지를 CLI 도구( )로 설치합니다.Install the dotnet-svcutil NuGet package as a CLI tool:

    dotnet tool install --global dotnet-svcutil
    
  4. 다음과 같이 dotnet-svcutil 명령을 실행하여 웹 서비스 참조 파일을 생성합니다.Run the dotnet-svcutil command to generate the web service reference file as follows:

    dotnet-svcutil http://contoso.com/SayHello.svc
    

생성된 파일은 _HelloSvcutil/ServiceReference/Reference.cs_로 저장됩니다.The generated file is saved as HelloSvcutil/ServiceReference/Reference.cs. 또한 dotnet-svcutil 도구는 프록시 코드에 필요한 적절한 WCF 패키지를 프로젝트에 패키지 참조로 추가합니다.The dotnet-svcutil tool also adds to the project the appropriate WCF packages required by the proxy code as package references.

서비스 참조 사용Using the Service Reference

  1. 다음과 같이 dotnet restore 명령을 사용하여 WCF 패키지를 복원합니다.Restore the WCF packages using the dotnet restore command as follows:

    dotnet restore
    
  2. 사용하려는 클라이언트 클래스 및 작업의 이름을 찾습니다.Find the name of the client class and operation you want to use. Reference.csSystem.ServiceModel.ClientBase에서 상속되는 클래스와 서비스에서 작업을 호출하는 데 사용할 수 있는 메서드를 포함합니다.Reference.cs will contain a class that inherits from System.ServiceModel.ClientBase, with methods that can be used to call operations on the service. 이 예제에서는 SayHello 서비스의 Hello 작업을 호출합니다.In this example, you want to call the SayHello service's Hello operation. ServiceReference.SayHelloClient는 클라이언트 클래스의 이름이고, 작업을 호출하는 데 사용할 수 있는 HelloAsync라는 메서드를 갖습니다.ServiceReference.SayHelloClient is the name of the client class, and has a method called HelloAsync that can be used to call the operation.

  3. 편집기에서 Startup.cs 파일을 열고 상단에 서비스 참조 네임스페이스를 위한 using 문을 추가합니다.Open the Startup.cs file in your editor, and add a using statement for the service reference namespace at the top:

    using ServiceReference;
    
  4. Configure 메서드가 웹 서비스를 호출하도록 편집합니다.Edit the Configure method to invoke the web service. 이렇게 하려면 ClientBase에서 상속되는 클래스의 인스턴스를 만들고 클라이언트 개체에서 메서드를 호출합니다.You do this by creating an instance of the class that inherits from ClientBase and calling the method on the client object:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.Run(async (context) =>
        {
            var client = new SayHelloClient();
            var response = await client.HelloAsync();
            await context.Response.WriteAsync(response);
        });
    }
    
    
  5. 다음과 같이 dotnet run 명령을 사용하여 애플리케이션을 실행합니다.Run the application using the dotnet run command as follows:

    dotnet run
    
  6. 웹 브라우저에서, 콘솔에 나열된 URL(예: http://localhost:5000)로 이동합니다.Navigate to the URL listed in the console (for example, http://localhost:5000) in your web browser.

다음과 같은 내용이 출력됩니다. "Hello dotnet-svcutil!"You should see the following output: "Hello dotnet-svcutil!"

dotnet-svcutil 도구 매개 변수에 대한 자세한 설명을 보려면 다음과 같이 help 매개 변수를 전달하는 도구를 호출합니다.For a detailed description of the dotnet-svcutil tool parameters, invoke the tool passing the help parameter as follows:

사용자 의견 및 질문Feedback & questions

질문이나 의견이 있는 경우 GitHub에서 문제를 엽니다.If you have any questions or feedback, open an issue on GitHub. 또한 GitHub의 WCF 리포지토리에서 기존 질문이나 문제를 검토할 수 있습니다.You can also review any existing questions or issues at the WCF repo on GitHub.

릴리스 정보Release notes

  • 알려진 문제를 비롯한 업데이트된 릴리스 정보는 릴리스 정보를 참조하세요.Refer to the Release notes for updated release information, including known issues.

정보Information