Alat dotnet-svcutil WCF untuk .NET Core
Alat dotnet-svcutil Windows Communication Foundation (WCF) adalah alat .NET yang mengambil metadata dari layanan web di lokasi jaringan atau dari file WSDL, dan menghasilkan kelas WCF yang berisi metode proksi klien yang mengakses operasi layanan web.
Mirip dengan Metadata Model Layanan - alat svcutil untuk proyek .NET Framework, dotnet-svcutil adalah alat baris perintah untuk menghasilkan referensi layanan web yang kompatibel dengan proyek .NET Core dan .NET Standard.
Alat dotnet-svcutil adalah opsi alternatif untuk penyedia layanan terhubung WCF Web Service Reference Visual Studio yang pertama kali dikirim dengan Visual Studio 2017 versi 15.5. Alat dotnet-svcutil sebagai alat .NET, tersedia lintas platform di Linux, macOS, dan Windows.
Penting
Anda seharusnya hanya mereferensikan layanan dari sumber tepercaya. Menambahkan referensi dari sumber yang tidak dipercaya dapat membahayakan keamanan.
Prasyarat
- .NET Core 2.1 SDK atau versi yang lebih baru
- Editor kode favorit Anda
Memulai
Contoh berikut memancang Anda melalui langkah-langkah yang diperlukan untuk menambahkan referensi layanan web ke proyek web .NET Core dan memanggil layanan. Anda akan membuat aplikasi web .NET Core bernama HelloSvcutil dan menambahkan referensi ke layanan web yang mengimplementasikan kontrak berikut:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
Untuk contoh ini, mari kita asumsikan layanan web akan dihosting di alamat berikut: http://contoso.com/SayHello.svc
Dari jendela perintah Windows, macOS, atau Linux lakukan langkah-langkah berikut:
Buat direktori bernama HelloSvcutil untuk proyek Anda dan jadikan direktori Anda saat ini, seperti dalam contoh berikut:
mkdir HelloSvcutil cd HelloSvcutil
Buat proyek web C# baru di direktori tersebut
dotnet new
menggunakan perintah sebagai berikut:dotnet new web
dotnet-svcutil
Instal paket NuGet sebagai alat CLI:dotnet tool install --global dotnet-svcutil
Jalankan perintah dotnet-svcutil untuk menghasilkan file referensi layanan web sebagai berikut:
dotnet-svcutil http://contoso.com/SayHello.svc
File yang dihasilkan disimpan sebagai HelloSvcutil/ServiceReference/Reference.cs. Alat dotnet-svcutil juga menambahkan ke proyek paket WCF yang sesuai yang diperlukan oleh kode proksi sebagai referensi paket.
Menggunakan Referensi Layanan
Pulihkan paket WCF menggunakan
dotnet restore
perintah sebagai berikut:dotnet restore
Temukan nama kelas klien dan operasi yang ingin Anda gunakan.
Reference.cs
akan berisi kelas yang mewarisi dariSystem.ServiceModel.ClientBase
, dengan metode yang dapat digunakan untuk memanggil operasi pada layanan. Dalam contoh ini, Anda ingin memanggil operasi Halo layanan SayHello.ServiceReference.SayHelloClient
adalah nama kelas klien, dan memiliki metode yang disebutHelloAsync
yang dapat digunakan untuk memanggil operasi.Startup.cs
Buka file di editor Anda, dan tambahkanusing
direktif untuk namespace referensi layanan di bagian atas:using ServiceReference;
Configure
Edit metode untuk memanggil layanan web. Anda melakukan ini dengan membuat instans kelas yang mewarisi danClientBase
memanggil metode pada objek klien: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); }); }
Jalankan aplikasi menggunakan
dotnet run
perintah sebagai berikut:dotnet run
Navigasi ke URL yang tercantum di konsol (misalnya,
http://localhost:5000
) di browser web Anda.
Anda akan melihat output berikut: "Halo dotnet-svcutil!"
Untuk deskripsi terperinci tentang dotnet-svcutil
parameter alat, panggil alat yang meneruskan parameter bantuan sebagai berikut:
dotnet-svcutil --help
Umpan balik & pertanyaan
Jika Anda memiliki pertanyaan atau umpan balik, buka masalah di GitHub. Anda juga dapat meninjau pertanyaan atau masalah yang ada di repositori WCF di GitHub.
Catatan rilis
- Lihat Catatan rilis untuk informasi rilis yang diperbarui, termasuk masalah yang diketahui.