Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Службы и клиентские приложения, использующие типы данных, которые могут быть сериализованы с помощью XmlSerializer, генерируют и компилируют код сериализации для этих типов данных во время выполнения, что может замедлить производительность старта.
Замечание
Предварительно созданный код сериализации можно использовать только в клиентских приложениях, а не в службах.
Средство служебной программы метаданных ServiceModel (Svcutil.exe) может повысить производительность запуска для этих приложений, создав необходимый код сериализации из скомпилированных сборок для приложения. Svcutil.exe создает код сериализации для всех типов данных, которые используются в контрактах служб и могут быть сериализованы в скомпилированной сборке приложения с помощью XmlSerializer. Контракты на обслуживание и эксплуатацию, использующие XmlSerializer, помечены XmlSerializerFormatAttribute.
Создание кода сериализации XmlSerializer
Скомпилируйте код службы или клиента в одну или несколько сборок.
Откройте командную строку ПАКЕТА SDK.
В командной строке запустите средство Svcutil.exe с помощью следующего формата.
svcutil.exe /t:xmlSerializer <assemblyPath>*Аргумент
assemblyPathзадает путь к сборке, содержащей типы контрактов службы. Svcutil.exe создает код сериализации для всех типов данных, используемых в контрактах служб в скомпилированной сборке приложения, которые могут быть сериализованы с помощью XmlSerializer.Svcutil.exe может создавать только код сериализации C#. Для каждой входной сборки создается один файл исходного кода. Вы не можете использовать переключатель /language для изменения языка созданного кода.
Чтобы указать путь к зависимым сборкам, используйте параметр /reference .
Сделайте созданный код сериализации доступным для приложения с помощью одного из следующих вариантов:
Компилируйте созданный код сериализации в отдельную сборку с именем [исходной сборки].XmlSerializers.dll (например, MyApp.XmlSerializers.dll). Приложение должно быть в состоянии загрузить сборку, которая должна быть подписана с тем же ключом, что и исходная сборка. При повторной компиляции исходной сборки необходимо повторно создать сборку сериализации.
Компилируйте созданный код сериализации в отдельную сборку и используйте XmlSerializerAssemblyAttribute в контракте службы, который использует XmlSerializerFormatAttribute. AssemblyName или CodeBase свойства укажите на скомпилированную сборку сериализации.
Скомпилируйте созданный код сериализации в сборку приложения и добавьте XmlSerializerAssemblyAttribute в контракт службы, который использует XmlSerializerFormatAttribute. Не устанавливайте свойства AssemblyName или CodeBase. Предполагается, что сборка сериализации по умолчанию является текущей сборкой.
Создание кода сериализации XmlSerializer в Visual Studio
Создайте службу WCF и клиентские проекты в Visual Studio. Затем добавьте ссылку на службу в клиентский проект.
XmlSerializerFormatAttribute Добавьте контракт службы в файл reference.cs в проекте клиентского приложения в разделе serviceReference ->reference.svcmap. Обратите внимание, что для просмотра этих файлов необходимо отобразить все файлы в обозревателе решений .
Создайте клиентское приложение.
Используйте средство служебной программы метаданных ServiceModel (Svcutil.exe) для создания предварительно созданного файла сериализатора .cs с помощью команды:
svcutil.exe /t:xmlSerializer <assemblyPath>*Аргумент assemblyPath указывает путь к клиентской сборке WCF.
Такие как:
svcutil.exe /t:xmlSerializer wcfclient.exeБудет создан файлWCFClient.XmlSerializers.dll.cs .
Скомпилируйте предварительно созданную сборку сериализации.
На основе примера на предыдущем шаге команда компиляции будет следующей:
csc /r:wcfclient.exe /out:WCFClient.XmlSerializers.dll /t:library WCFClient.XmlSerializers.dll.csУбедитесь, что созданный WCFClient.XmlSerializers.dll находится в том же каталоге, что и клиентское приложение, которое в данном случае WCFClient.exe .
Запустите клиентское приложение как обычно. Будет использоваться предварительно созданная сборка сериализации.
Example
Следующая команда создает типы сериализации для XmlSerializer типов, используемых любыми контрактами служб в сборке.
svcutil /t:xmlserializer myContractLibrary.exe