Bagikan melalui


Menggunakan dotnet-svcutil.xmlserializer pada .NET Core

Paket dotnet-svcutil.xmlserializer NuGet dapat membuat rakitan serialisasi sebelumnya untuk proyek .NET Core. Ini tahap awal menghasilkan kode serialisasi C# untuk tipe-tipe pada aplikasi klien yang digunakan oleh Kontrak Layanan WCF dan yang dapat diserialisasikan dengan XmlSerializer. Ini meningkatkan performa startup serialisasi XML saat membuat serialisasi atau deserialisasi objek dari jenis tersebut.

Prasyarat

Anda dapat menggunakan perintah dotnet --info untuk memeriksa versi .NET SDK dan runtime mana yang sudah Anda instal.

Memulai Langkah Pertama

Untuk digunakan dotnet-svcutil.xmlserializer dalam aplikasi konsol .NET Core:

  1. Buat Layanan WCF bernama 'MyWCFService' menggunakan templat default 'Aplikasi Layanan WCF' di .NET Framework. Tambahkan [XmlSerializerFormat] atribut pada metode layanan seperti berikut ini:

     [ServiceContract]
     public interface IService1
     {
         [XmlSerializerFormat]
         [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
         string GetData(int value);
     }
    
  2. Buat aplikasi konsol .NET Core sebagai aplikasi klien WCF yang menargetkan pada .NET Core 2.1 atau versi yang lebih baru. Misalnya, buat aplikasi bernama 'MyWCFClient' dengan perintah berikut:

    dotnet new console --name MyWCFClient
    

    Untuk memastikan proyek Anda menargetkan .NET Core 2.1 atau yang lebih baru, periksa TargetFramework elemen XML dalam file proyek Anda:

    <TargetFramework>netcoreapp2.1</TargetFramework>
    
  3. Tambahkan referensi paket ke System.ServiceModel.Http dengan menjalankan perintah berikut:

    dotnet add package System.ServiceModel.Http
    
  4. Tambahkan kode Klien WCF:

    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. Tambahkan referensi ke dotnet-svcutil.xmlserializer paket dengan menjalankan perintah berikut:

    dotnet add package dotnet-svcutil.xmlserializer
    

    Menjalankan perintah harus menambahkan entri ke file proyek Anda yang mirip dengan ini:

    <ItemGroup>
      <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
    </ItemGroup>
    
  6. Bangun aplikasi dengan menjalankan dotnet build. Jika semuanya berhasil, rakitan bernama MyWCFClient.XmlSerializers.dll dihasilkan di folder output. Jika alat gagal menghasilkan rakitan, Anda akan melihat peringatan dalam output build.

  7. Mulai layanan WCF dengan, misalnya, berjalan http://localhost:2561/Service1.svc di browser. Kemudian mulai aplikasi klien, dan akan secara otomatis memuat dan menggunakan serializer yang telah dibuat sebelumnya pada runtime.