Поделиться через


Средство WCF dotnet-svcutil для .NET Core

WCF (Windows Communication Foundation) dotnet-svcutil — это средство .NET, которое извлекает метаданные из веб-службы в сетевом расположении или WSDL-файла, а затем создает класс WCF, который содержит клиентские методы прокси-сервера и используется для доступа к операциям веб-службы.

Как и Service Model Metadata — svcutil для проектов .NET Framework, dotnet-svcutil является программой командной строки для создания ссылки на веб-службу, совместимой с проектами .NET Core и .NET Standard.

Средство dotnet-svcutil служит альтернативой для поставщика подключенной службы Visual Studio WCF Web Service Reference, впервые представленного в Visual Studio 2017 версии 15.5. Как и .NET, средство dotnet-svcutil доступно на платформах Linux, macOS и Windows.

Внимание

Ссылаться на службы следует только из надежного источника. Добавление ссылок из ненадежного источника может нарушить безопасность.

Необходимые компоненты

Начало работы

В следующем примере описаны шаги, необходимые для добавления ссылки на веб-службу в веб-проект .NET Core и вызова службы. Вы создадите веб-приложение .NET Core с именем HelloSvcutil и добавите ссылку на веб-службу, которая реализует следующий контракт:

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

В этом примере предполагается, что веб-служба размещена по следующему адресу: http://contoso.com/SayHello.svc

В окне командной строки Windows, macOS или Linux выполните следующие действия:

  1. Создайте для проекта каталог с именем HelloSvcutil и сделайте его текущим каталогом, как показано в следующем примере:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. Создайте в этом каталоге веб-проект C# с помощью команды dotnet new, как показано ниже:

    dotnet new web
    
  3. Установите dotnet-svcutil (пакет NuGet) в качестве средства CLI:

    dotnet tool install --global dotnet-svcutil
    
  4. Выполните команду dotnet-svcutil, чтобы создать файл со ссылкой на веб-службу, как показано ниже:

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

Созданный файл сохраняется с именем HelloSvcutil/ServiceReference/Reference.cs. Средство dotnet-svcutil также добавляет в проект необходимые пакеты WCF, которые указаны в коде прокси-сервера как ссылки на пакеты.

Использование ссылки на службу

  1. Восстановите пакеты WCF с помощью команды dotnet restore, как показано ниже:

    dotnet restore
    
  2. Определите имена класса клиента и операций, которые хотите использовать. Файл Reference.cs будет содержать класс, наследующий свойства от System.ServiceModel.ClientBase, с методами, которые можно использовать для вызова операций из службы. В этом примере вызовите из службы SayHello операцию Hello. ServiceReference.SayHelloClient — это имя класса клиента с методом HelloAsync, который можно использовать для вызова операции.

  3. Откройте файл Startup.cs в редакторе и добавьте директиву using для пространства имен ссылки на службу вверху:

    using ServiceReference;
    
  4. Измените метод Configure для вызова веб-службы. Для этого создайте экземпляр класса, который наследует свойства от класса ClientBase, и вызовите метод для объекта клиента:

    public void Configure(IApplicationBuilder app, IWebHostEnvironment 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, как показано ниже:

    dotnet run
    
  6. Перейдите по указанному в консоли URL-адресу (например, http://localhost:5000) в веб-браузере.

Вы увидите такой результат: "Hello dotnet-svcutil!".

Подробное описание параметров средства dotnet-svcutil можно получить, вызвав это средство с параметром help, как показано ниже:

dotnet-svcutil --help

Отзывы и вопросы

Если у вас появились вопросы или отзывы, сообщите об этом на сайте GitHub. Вы также можете просмотреть имеющиеся вопросы или проблемы в репозитории WCF на сайте GitHub.

Заметки о выпуске

  • Актуальные сведения о выпуске, включая описание известных проблем, см. в заметках о выпуске.

Информация