Aracılığıyla paylaş


.NET Core'da dotnet-svcutil.xmlserializer kullanma

dotnet-svcutil.xmlserializer NuGet paketi .NET Core projeleri için bir serileştirme derlemesi önceden oluşturabilir. İstemci uygulamasında WCF Hizmet Sözleşmesi tarafından kullanılan ve XmlSerializer tarafından seri hale getirilebilen türler için C# serileştirme kodunu önceden oluşturur. Bu, bu türlerdeki nesneleri seri hale getirme veya seri durumdan çıkarma sırasında XML serileştirmenin başlangıç performansını artırır.

Önkoşullar

Komutunu dotnet --info kullanarak .NET SDK ve çalışma zamanının hangi sürümlerini zaten yüklediğinizi de kontrol edebilirsiniz.

Başlangıç Yapmak

.NET Core konsol uygulamasında dotnet-svcutil.xmlserializer kullanmak için:

  1. .NET Framework'te varsayılan 'WCF Hizmet Uygulaması' şablonunu kullanarak 'MyWCFService' adlı bir WCF Hizmeti oluşturun. Hizmet yöntemine aşağıdaki gibi öznitelik ekleyin [XmlSerializerFormat] :

     [ServiceContract]
     public interface IService1
     {
         [XmlSerializerFormat]
         [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
         string GetData(int value);
     }
    
  2. .NET Core 2.1 veya sonraki sürümleri hedefleyen WCF istemci uygulaması olarak bir .NET Core konsol uygulaması oluşturun. Örneğin, aşağıdaki komutla 'MyWCFClient' adlı bir uygulama oluşturun:

    dotnet new console --name MyWCFClient
    

    Projenizin .NET Core 2.1 veya üstünü hedeflediğinden emin olmak için proje dosyanızdaki XML öğesini inceleyin TargetFramework :

    <TargetFramework>netcoreapp2.1</TargetFramework>
    
  3. Aşağıdaki komutu çalıştırarak, System.ServiceModel.Http paketine bir paket başvurusu ekleyin:

    dotnet add package System.ServiceModel.Http
    
  4. WCF İstemci kodunu ekleyin:

    using System.ServiceModel;
    
        class Program
        {
            static void Main(string[] args)
            {
                var myBinding = new BasicHttpBinding();
                var myEndpoint = new EndpointAddress("http://localhost:2561/Service1.svc"); //Fill your service url here
                var myChannelFactory = new ChannelFactory<IService1>(myBinding, myEndpoint);
                IService1 client = myChannelFactory.CreateChannel();
                string s = client.GetData(1);
                ((ICommunicationObject)client).Close();
            }
        }
    
    [ServiceContract]
    public interface IService1
    {
        [XmlSerializerFormat]
        [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
        string GetData(int value);
    }
    
  5. Aşağıdaki komutu çalıştırarak dotnet-svcutil.xmlserializer paketine bir referans ekleyin:

    dotnet add package dotnet-svcutil.xmlserializer
    

    komutu çalıştırıldığında proje dosyanıza şuna benzer bir girdi eklenmelidir:

    <ItemGroup>
      <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
    </ItemGroup>
    
  6. komutunu çalıştırarak dotnet builduygulamayı oluşturun. Her şey başarılı olursa, çıkış klasöründe MyWCFClient.XmlSerializers.dll adlı bir derleme oluşturulur. Araç derlemeyi oluşturamadıysa derleme çıkışında uyarılar görürsünüz.

  7. WCF hizmetini, örneğin tarayıcıda çalıştırarak http://localhost:2561/Service1.svc başlatın. Ardından istemci uygulamasını başlatın; çalışma zamanında önceden oluşturulmuş seri hale getiricileri otomatik olarak yükleyip kullanır.