Зависит от того, как вы настроили свой контракт данных.
В WCF, используя все значения по умолчанию, ваш сервис будет использовать DataContractSerializer (DCS) для сериализации вашего объекта в XML. DCS будет сериализовать ваши поля по порядку - сначала общедоступные, а затем частные. Внутри каждой группы видимости поля / свойства будут упорядочены в алфавитном порядке по имени.
Таким образом, если вы введете новое открытое свойство MiddleName
, и у вас уже есть FirstName
и LastName
, все будет в порядке: старый XML был бы
<YourObject>
....
<FirstName>.....</FirstName>
<LastName>.....</LastName>
</YourObject>
и ваш новый просто добавит новое свойство в конце:
<YourObject>
....
<FirstName>.....</FirstName>
<LastName>.....</LastName>
<MiddleName>....</MiddleName>
</YourObject>
Такое обновление "добавить что-то в конце" должно работать просто отлично, DCS будет просто игнорировать дополнительные теги в XML.
Однако: если бы вы ввели свойство под названием Gender
, оно застряло бы между <FirstName>
и <LastName>
и, таким образом, нарушило бы порядок данных в вашем XML и, таким образом, нарушило бы Договор передачи данных - ни один «старый» клиент не сможет позвонить на ваш новый сервис.
Для того, чтобы взять это под контроль, вы можете добавить конкретные атрибуты Order=
к вашим членам данных в вашем контракте данных:
[DataContract]
public class SomeAddress
{
[DataMember(Order=0)]
public string FirstName;
[DataMember(Order=1)]
public string LastName;
}
Тогда вы можете легко добавить новое свойство - просто добавьте его в конец списка!
[DataContract]
public class SomeAddress
{
[DataMember(Order=0)]
public string FirstName;
[DataMember(Order=1)]
public string LastName;
[DataMember(Order=2)]
public string Gender;
}
Таким образом, используя атрибут Order=
в ваших контрактах на данные, вы можете контролировать макет XML и создавать простые расширения существующих контрактов на данные, не нарушая их обновления.
Для получения дополнительной информации и подробных ноу-хау вам следует прочитать Сериализация в Windows Communication Foundation на веб-сайте журнала MSDN - настоятельно рекомендуется.