Megosztás a következőn keresztül:


Útmutató: A WCF-ügyfélalkalmazások indítási idejének javítása az XmlSerializer használatával

Azok a szolgáltatások és ügyfélalkalmazások, amelyek futtatáskor szerializálható adattípusokat használnak az XmlSerializer adott adattípusok szerializálási kódjának generálása és fordítása használatával, ami lassú indítási teljesítményt eredményezhet.

Feljegyzés

Az előre létrehozott szerializációs kód csak ügyfélalkalmazásokban használható, szolgáltatásokban nem.

A ServiceModel metadata segédprogram (Svcutil.exe) javíthatja az alkalmazások indítási teljesítményét azáltal, hogy létrehozza a szükséges szerializálási kódot az alkalmazás lefordított szerelvényekből. Svcutil.exe szerializálási kódot hoz létre a szolgáltatásszerződésekben használt összes adattípushoz a lefordított alkalmazásszerelvényben, amely szerializálható a XmlSerializer. Azokat a szolgáltatási és üzemeltetési szerződéseket, amelyek a XmlSerializerXmlSerializerFormatAttribute.

XmlSerializer szerializáló kód létrehozása

  1. Állítsa össze a szolgáltatás- vagy ügyfélkódot egy vagy több szerelvénybe.

  2. Nyisson meg egy SDK-parancssort.

  3. A parancssorban indítsa el a Svcutil.exe eszközt az alábbi formátumban.

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    Az assemblyPath argumentum megadja a szolgáltatásszerződés-típusokat tartalmazó szerelvény elérési útját. Svcutil.exe szerializálási kódot hoz létre a szolgáltatásszerződésekben használt összes adattípushoz a lefordított alkalmazásszerelvényben, amely szerializálható a XmlSerializer.

    Svcutil.exe csak C# szerializációs kódot hozhat létre. Minden bemeneti szerelvényhez egy forráskódfájl jön létre. A /language kapcsolóval nem módosíthatja a létrehozott kód nyelvét.

    A függő szerelvények elérési útjának megadásához használja a /reference lehetőséget.

  4. Tegye elérhetővé az alkalmazás számára a létrehozott szerializációs kódot az alábbi lehetőségek egyikével:

    1. Állítsa össze a létrehozott szerializációs kódot egy külön szerelvénybe [eredeti szerelvény] néven. XmlSerializers.dll (például MyApp.XmlSerializers.dll). Az alkalmazásnak képesnek kell lennie betölteni a szerelvényt, amelyet ugyanazzal a kulccsal kell aláírni, mint az eredeti szerelvény. Ha újrafordítjuk az eredeti szerelvényt, újra kell generálni a szerializálási szerelvényt.

    2. Fordítsa le a létrehozott szerializálási kódot egy külön szerelvénybe, és használja a XmlSerializerAssemblyAttribute szolgáltatást használó XmlSerializerFormatAttributeszolgáltatási szerződést. Állítsa be a AssemblyNameCodeBase tulajdonságokat úgy, hogy a lefordított szerializálási szerelvényre mutasson.

    3. Fordítsa le a létrehozott szerializációs kódot az alkalmazásszerelvénybe, és adja hozzá a XmlSerializerAssemblyAttribute szolgáltatást használó szolgáltatási szerződéshez.XmlSerializerFormatAttribute Ne állítsa be a AssemblyName tulajdonságokat.CodeBase A rendszer feltételezi, hogy az alapértelmezett szerializálási szerelvény az aktuális szerelvény.

XmlSerializer szerializáló kód létrehozása a Visual Studióban

  1. Hozza létre a WCF szolgáltatást és az ügyfélprojekteket a Visual Studióban. Ezután adjon hozzá egy szolgáltatáshivatkozást az ügyfélprojekthez.

  2. Adjon hozzá egy XmlSerializerFormatAttribute szolgáltatási szerződést az ügyfélalkalmazás-projekt reference.cs fájljában a serviceReference ->reference.svcmap alatt. Vegye figyelembe, hogy a fájlok megtekintéséhez meg kell jelenítenie az összes fájlt a Megoldáskezelő.

  3. Hozza létre az ügyfélalkalmazást.

  4. A ServiceModel metadata segédprogrammal (Svcutil.exe) hozzon létre egy előre létrehozott szerializáló .cs fájlt a parancs használatával:

    svcutil.exe /t:xmlSerializer  <assemblyPath>*  
    

    A assemblyPath argumentum megadja a WCF-ügyfélszerelvény elérési útját.

    Mint:

    svcutil.exe /t:xmlSerializer wcfclient.exe  
    

    A WCFClient.XmlSerializers.dll.cs fájl létre lesz hozva.

  5. Állítsa össze az előre létrehozott szerializálási szerelvényt.

    Az előző lépésben szereplő példa alapján a fordítási parancs a következő lenne:

    csc /r:wcfclient.exe /out:WCFClient.XmlSerializers.dll /t:library WCFClient.XmlSerializers.dll.cs  
    

    Győződjön meg arról, hogy a létrehozott WCFClient.XmlSerializers.dll ugyanabban a könyvtárban található, mint az ügyfélalkalmazás, amely ebben az esetben WCFClient.exe .

  6. Futtassa az ügyfélalkalmazást a szokásos módon. A rendszer az előre létrehozott szerializálási szerelvényt használja.

Példa

Az alábbi parancs szerializálási típusokat hoz létre az olyan típusokhoz XmlSerializer , amelyeket a szerelvényben lévő szolgáltatásszerződések használnak.

svcutil /t:xmlserializer myContractLibrary.exe  

Lásd még