.NET Core için WCF dotnet-svcutil aracı

Windows Communication Foundation (WCF) dotnet-svcutil aracı, ağ konumundaki bir web hizmetinden veya WSDL dosyasından meta verileri alan ve web hizmeti işlemlerine erişen istemci proxy yöntemlerini içeren bir WCF sınıfı oluşturan bir .NET aracıdır.

.NET Framework projeleri için Hizmet Modeli Meta Verileri - svcutil aracına benzer şekilde dotnet-svcutil, .NET Core ve .NET Standard projeleriyle uyumlu bir web hizmeti başvurusu oluşturmaya yönelik bir komut satırı aracıdır.

dotnet-svcutil aracı, ilk olarak Visual Studio 2017 sürüm 15.5 ile birlikte gönderilen WCF Web Hizmeti Başvurusu Visual Studio bağlı hizmet sağlayıcısına alternatif bir seçenektir. .NET aracı olarak dotnet-svcutil aracı Linux, macOS ve Windows'da platformlar arası kullanılabilir.

Önemli

Yalnızca güvenilen bir kaynaktan gelen hizmetlere başvurmanız gerekir. Güvenilmeyen bir kaynaktan başvuru eklemek güvenliği tehlikeye atabilir.

Önkoşullar

  • .NET Core 2.1 SDK veya sonraki sürümleri
  • Sık kullandığınız kod düzenleyicisi

Başlarken

Aşağıdaki örnek, .NET Core web projesine web hizmeti başvurusu eklemek ve hizmeti çağırmak için gereken adımlarda size yol gösterir. HelloSvcutil adlı bir .NET Core web uygulaması oluşturacak ve aşağıdaki sözleşmeyi uygulayan bir web hizmetine başvuru ekleyeceksiniz:

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

Bu örnekte web hizmetinin şu adreste barındırılacağını varsayalım: http://contoso.com/SayHello.svc

Windows, macOS veya Linux komut penceresinde aşağıdaki adımları gerçekleştirin:

  1. Projeniz için HelloSvcutil adlı bir dizin oluşturun ve aşağıdaki örnekte olduğu gibi geçerli dizininiz yapın:

    mkdir HelloSvcutil
    cd HelloSvcutil
    
  2. Aşağıdaki komutu kullanarak dotnet new bu dizinde yeni bir C# web projesi oluşturun:

    dotnet new web
    
  3. dotnet-svcutil NuGet paketini CLI aracı olarak yükleyin:

    dotnet tool install --global dotnet-svcutil
    
  4. aşağıdaki gibi web hizmeti başvuru dosyasını oluşturmak için dotnet-svcutil komutunu çalıştırın:

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

Oluşturulan dosya HelloSvcutil/ServiceReference/Reference.cs olarak kaydedilir. dotnet-svcutil aracı ayrıca projeye proxy kodu için gerekli uygun WCF paketlerini paket başvurusu olarak ekler.

Hizmet Başvurusunu Kullanma

  1. Aşağıdaki komutu kullanarak dotnet restore WCF paketlerini geri yükleyin:

    dotnet restore
    
  2. Kullanmak istediğiniz istemci sınıfının ve işlemin adını bulun. Reference.cs , hizmetindeki işlemleri çağırmak için kullanılabilecek yöntemlerle öğesinden System.ServiceModel.ClientBasedevralan bir sınıf içerir. Bu örnekte SayHello hizmetinin Hello işlemini çağırmak istiyorsunuz. ServiceReference.SayHelloClient , istemci sınıfının adıdır ve işlemi çağırmak için kullanılabilecek adlı HelloAsync bir yöntemi vardır.

  3. Startup.cs Dosyayı düzenleyicinizde açın ve en üstteki hizmet başvurusu ad alanı için bir using yönerge ekleyin:

    using ServiceReference;
    
  4. Configure Web hizmetini çağırmak için yöntemini düzenleyin. Bunu, sınıfından devralan ClientBase bir örneği oluşturarak ve istemci nesnesinde yöntemini çağırarak yaparsınız:

    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. Aşağıdaki komutu kullanarak dotnet run uygulamayı çalıştırın:

    dotnet run
    
  6. Web tarayıcınızda konsolda listelenen URL'ye (örneğin, http://localhost:5000) gidin.

Şu çıkışı görmeniz gerekir: "Hello dotnet-svcutil!"

Araç parametrelerinin dotnet-svcutil ayrıntılı açıklaması için, yardım parametresini geçirerek aracı aşağıdaki gibi çağırın:

dotnet-svcutil --help

Geri bildirim ve sorular

Sorularınız veya geri bildirimleriniz varsa GitHub'da bir sorun açın. Ayrıca GitHub'daki WCF deposundaki mevcut soruları veya sorunları da gözden geçirebilirsiniz.

Sürüm notları

Bilgiler