Средство 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.
Внимание
Ссылаться на службы следует только из надежного источника. Добавление ссылок из ненадежного источника может нарушить безопасность.
Необходимые компоненты
- пакет SDK для .NET Core 2.1 или более поздней версии;
- Любой редактор кода
Начало работы
В следующем примере описаны шаги, необходимые для добавления ссылки на веб-службу в веб-проект .NET Core и вызова службы. Вы создадите веб-приложение .NET Core с именем HelloSvcutil и добавите ссылку на веб-службу, которая реализует следующий контракт:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
В этом примере предполагается, что веб-служба размещена по следующему адресу: http://contoso.com/SayHello.svc
В окне командной строки Windows, macOS или Linux выполните следующие действия:
Создайте для проекта каталог с именем HelloSvcutil и сделайте его текущим каталогом, как показано в следующем примере:
mkdir HelloSvcutil cd HelloSvcutil
Создайте в этом каталоге веб-проект C# с помощью команды
dotnet new
, как показано ниже:dotnet new web
Установите
dotnet-svcutil
(пакет NuGet) в качестве средства CLI:dotnet tool install --global dotnet-svcutil
Выполните команду dotnet-svcutil, чтобы создать файл со ссылкой на веб-службу, как показано ниже:
dotnet-svcutil http://contoso.com/SayHello.svc
Созданный файл сохраняется с именем HelloSvcutil/ServiceReference/Reference.cs. Средство dotnet-svcutil также добавляет в проект необходимые пакеты WCF, которые указаны в коде прокси-сервера как ссылки на пакеты.
Использование ссылки на службу
Восстановите пакеты WCF с помощью команды
dotnet restore
, как показано ниже:dotnet restore
Определите имена класса клиента и операций, которые хотите использовать. Файл
Reference.cs
будет содержать класс, наследующий свойства отSystem.ServiceModel.ClientBase
, с методами, которые можно использовать для вызова операций из службы. В этом примере вызовите из службы SayHello операцию Hello.ServiceReference.SayHelloClient
— это имя класса клиента с методомHelloAsync
, который можно использовать для вызова операции.Откройте файл
Startup.cs
в редакторе и добавьте директивуusing
для пространства имен ссылки на службу вверху:using ServiceReference;
Измените метод
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); }); }
Запустите приложение с помощью команды
dotnet run
, как показано ниже:dotnet run
Перейдите по указанному в консоли URL-адресу (например,
http://localhost:5000
) в веб-браузере.
Вы увидите такой результат: "Hello dotnet-svcutil!".
Подробное описание параметров средства dotnet-svcutil
можно получить, вызвав это средство с параметром help, как показано ниже:
dotnet-svcutil --help
Отзывы и вопросы
Если у вас появились вопросы или отзывы, сообщите об этом на сайте GitHub. Вы также можете просмотреть имеющиеся вопросы или проблемы в репозитории WCF на сайте GitHub.
Заметки о выпуске
- Актуальные сведения о выпуске, включая описание известных проблем, см. в заметках о выпуске.