Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Servizi e applicazioni client che utilizzano tipi di dati serializzabili tramite il XmlSerializer generano e compilano codice di serializzazione per tali tipi di dati al runtime, il che può provocare un rallentamento delle prestazioni di avvio.
Annotazioni
Il codice di serializzazione pregenerato può essere usato solo nelle applicazioni client e non nei servizi.
Lo strumento Utilità metadati ServiceModel (Svcutil.exe) può migliorare le prestazioni di avvio per queste applicazioni generando il codice di serializzazione necessario dagli assembly compilati per l'applicazione. Svcutil.exe genera codice di serializzazione per tutti i tipi di dati utilizzati nei contratti di servizio nell'assembly dell'applicazione compilato che possono essere serializzati utilizzando il XmlSerializer. I contratti di servizio e operativi che usano il XmlSerializer sono contrassegnati con il XmlSerializerFormatAttribute.
Per generare codice di serializzazione XmlSerializer
Compilare il codice del servizio o del cliente in uno o più assembly.
Aprire un prompt dei comandi dell'SDK.
Al prompt dei comandi avviare lo strumento Svcutil.exe usando il formato seguente.
svcutil.exe /t:xmlSerializer <assemblyPath>*L'argomento
assemblyPathspecifica il percorso di un assembly che contiene tipi di contratto di servizio. Svcutil.exe genera codice di serializzazione per tutti i tipi di dati usati nei contratti di servizio nell'assembly dell'applicazione compilato, che può essere serializzato utilizzando XmlSerializer.Svcutil.exe può generare solo codice di serializzazione C#. Viene generato un file di codice sorgente per ogni assembly di input. Non è possibile usare l'opzione /language per modificare la lingua del codice generato.
Per indicare il percorso degli assembly dipendenti, usare l'opzione /reference.
Rendere il codice di serializzazione generato disponibile per l'applicazione usando una delle opzioni seguenti:
Compilare il codice di serializzazione generato in un assembly separato con il nome [assembly originale].XmlSerializers.dll (ad esempio, MyApp.XmlSerializers.dll). L'applicazione deve essere in grado di caricare l'assembly, che deve essere firmato con la stessa chiave dell'assembly originale. Se si ricompila l'assembly originale, è necessario rigenerare l'assembly di serializzazione.
Compilare il codice di serializzazione generato in un assembly separato e usare il XmlSerializerAssemblyAttribute nel contratto di servizio che utilizza il XmlSerializerFormatAttribute. Impostare le proprietà AssemblyName o CodeBase in modo che puntino all'assembly di serializzazione compilato.
Compila il codice di serializzazione generato nell'assembly della tua applicazione e aggiungi il XmlSerializerAssemblyAttribute al contratto di servizio che usa il XmlSerializerFormatAttribute. Non impostare le proprietà AssemblyName o CodeBase. Si presuppone che l'assembly di serializzazione predefinito sia l'assembly corrente.
Per generare codice di serializzazione XmlSerializer in Visual Studio
Creare il servizio WCF e i progetti client in Visual Studio. Aggiungere quindi un riferimento al servizio al progetto client.
Aggiungere un XmlSerializerFormatAttribute al contratto di servizio nel file reference.cs nel progetto dell'app client sotto serviceReference ->reference.svcmap. Si noti che è necessario visualizzare tutti i file in Esplora soluzioni per visualizzare questi file.
Compilare l'app client.
Usare l'utilità dello strumento metadati ServiceModel (Svcutil.exe) per creare un file di serializzatore pregenerato .cs usando il comando:
svcutil.exe /t:xmlSerializer <assemblyPath>*L'argomento assemblyPath specifica il percorso dell'assembly client WCF.
Ad esempio:
svcutil.exe /t:xmlSerializer wcfclient.exeVerrà generato il fileWCFClient.XmlSerializers.dll.cs .
Compilare l'assembly di serializzazione pregenerato.
In base all'esempio nel passaggio precedente, il comando di compilazione sarà il seguente:
csc /r:wcfclient.exe /out:WCFClient.XmlSerializers.dll /t:library WCFClient.XmlSerializers.dll.csAssicurarsi che il WCFClient.XmlSerializers.dll generato si trova nella stessa directory dell'app client, che in questo caso è WCFClient.exe .
Eseguire l'app client come di consueto. Verrà utilizzato l'assembly di serializzazione pregenerato.
Example
Il comando seguente genera i tipi di serializzazione per i tipi XmlSerializer usati da qualsiasi contratto di servizio nell'assembly.
svcutil /t:xmlserializer myContractLibrary.exe