Megosztás:


Dotnet-svcutil.xmlserializer használata a .NET Core-on

A dotnet-svcutil.xmlserializer NuGet-csomag előre létrehozhat szerializálási szerelvényt .NET Core-projektekhez. Előre generálja a C# szerializálási kódot az ügyfélalkalmazás típusaihoz, amelyeket a WCF szolgáltatási szerződés használ és amelyeket az XmlSerializer képes szerializálni. Ez javítja az XML-szerializálás indítási teljesítményét az ilyen típusú objektumok szerializálása vagy deszerializálása során.

Előfeltételek

A parancs segítségével dotnet --info ellenőrizheti, hogy a .NET SDK és a futtatókörnyezet mely verzióit telepítette már.

Kezdő lépések

.NET Core-konzolalkalmazásban való használathoz dotnet-svcutil.xmlserializer :

  1. Hozzon létre egy "MyWCFService" nevű WCF-szolgáltatást a .NET-keretrendszer alapértelmezett "WCF szolgáltatásalkalmazása" sablonjának használatával. Adjon hozzá [XmlSerializerFormat] attribútumot a szolgáltatásmetódushoz, például az alábbiakhoz:

     [ServiceContract]
     public interface IService1
     {
         [XmlSerializerFormat]
         [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
         string GetData(int value);
     }
    
  2. Hozzon létre egy .NET Core-konzolalkalmazást WCF-ügyfélalkalmazásként, amely a .NET Core 2.1 vagy újabb verzióit célozza meg. Hozzon létre például egy "MyWCFClient" nevű alkalmazást a következő paranccsal:

    dotnet new console --name MyWCFClient
    

    Annak ellenőrzéséhez, hogy a projekt a .NET Core 2.1-es vagy újabb verzióját célozza-e, vizsgálja meg a TargetFramework projektfájl XML-elemét:

    <TargetFramework>netcoreapp2.1</TargetFramework>
    
  3. Adjon hozzá egy csomaghivatkozást System.ServiceModel.Http a következő parancs futtatásával:

    dotnet add package System.ServiceModel.Http
    
  4. Adja hozzá a WCF-ügyfélkódot:

    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. Adjon hozzá egy hivatkozást a dotnet-svcutil.xmlserializer csomaghoz a következő parancs futtatásával:

    dotnet add package dotnet-svcutil.xmlserializer
    

    A parancs futtatásával az alábbihoz hasonló bejegyzést kell hozzáadnia a projektfájlhoz:

    <ItemGroup>
      <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
    </ItemGroup>
    
  6. Hozza létre az alkalmazást a futtatással dotnet build. Ha minden sikeres, létrejön egy MyWCFClient.XmlSerializers.dll nevű szerelvény a kimeneti mappában. Ha az eszköz nem tudta létrehozni a szerelvényt, figyelmeztetések jelennek meg a build kimenetében.

  7. Indítsa el a WCF szolgáltatást például a böngészőben.http://localhost:2561/Service1.svc Ezután indítsa el az ügyfélalkalmazást, és futásidőben automatikusan betölti és használja az előre létrehozott szerializálókat.