.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 projeleriyle uyumlu bir web hizmeti başvurusu oluşturmaya yönelik bir komut satırı aracıdır.

dotnet-svcutil aracı, 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 üzerinde 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

  • En yeni .NET SDK
  • Sık kullandığınız kod düzenleyicisi

Başlangıç Yapmak

Aşağıdaki örnek, .NET web projesine web hizmeti başvurusu eklemek ve hizmeti çağırmak için gereken adımlarda size yol gösterir. HelloSvcutil adlı bir .NET 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 referansını 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 bir sınıf içerecek ve sınıf, System.ServiceModel.ClientBase sınıfından devralacaktır; hizmetteki işlemleri çağırmak için kullanılabilecek yöntemlere sahip olacaktır. 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. Web hizmetini çağırmak için Configure yöntemini düzenleyin. Bunu, ClientBase öğesinden devralan bir sınıf örneği oluşturarak ve istemci nesnesi üzerinde yöntemi ç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

Hizmet başvurusunu güncelleştirme

Web hizmeti değişirse, hizmet başvurusunu bu değişiklikleri yansıtacak şekilde güncelleştirebilirsiniz. seçeneği, -u oluşturulan kodu hizmet uç noktasından veya WSDL dosyasından alınan meta verileri temel alarak güncelleştirir.

Mevcut bir hizmet başvurusunu güncelleştirmek için:

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

Başvuru klasörü, hizmet başvurusunu ilk eklediğinizde ConnectedService.json oluşturulan dosyayı içermelidir. Araç, hizmet uç noktasını belirlemek için bu yapılandırma dosyasını okur ve proxy kodunu güncelleştirilmiş meta verilerle yeniden oluşturur.

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ı

  • Bilinen sorunlar da dahil olmak üzere güncelleştirilmiş sürüm bilgileri için Sürüm notlarına bakın.

Bilgi