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

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

Аналогично инструменту метаданных модели службы svcutil для проектов .NET Framework, dotnet-svcutil — это инструмент командной строки для генерации ссылки на веб-службу, совместимой с проектами .NET.

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

Это важно

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

Предпосылки

  • Последняя версия .NET SDK
  • Ваш любимый редактор кода

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

В следующем примере описаны шаги, необходимые для добавления ссылки на веб-службу в веб-проект .NET и вызова службы. Вы создадите веб-приложение .NET с именем 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 в качестве средства командной строки:

    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, с методами, которые можно использовать для вызова операций на службе. В этом примере, вы хотите вызвать операцию Hello службы SayHello. 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) в веб-браузере.

Вы увидите следующие выходные данные: "Привет dotnet-svcutil!"

Для подробного dotnet-svcutil описания параметров средства вызовите средство, передав параметр справки следующим образом:

dotnet-svcutil --help

Обновление ссылки на службу

Если веб-служба изменяется, можно обновить ссылку на службу, чтобы отразить эти изменения. Параметр -u обновляет созданный код на основе метаданных из конечной точки службы или WSDL-файла.

Чтобы обновить существующую ссылку на службу, выполните указанные действия.

dotnet-svcutil -u ./path/to/reference/folder

Папка с ссылками должна содержать файл ConnectedService.json, созданный при начальном добавлении службы. Средство считывает этот файл конфигурации, чтобы определить конечную точку службы и повторно создать прокси-код с обновленными метаданными.

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

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

Примечания к релизу

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

Информация