WCF

2011-04-11 23 views
12

içinde varolan bir DataContract için DataMember ekleme DataMember, DataContract s sayfamdan birine eklemek istiyorum. Taraflardan biri güncellenmediyse, mevcut sunucuların ve istemcilerin yeni bir DataMember varlığında nasıl davranacağını bilmek isterim.WCF

Orada hatırlamak DataMember opsiyonel yapmak için bir yoldur, ama tüm senaryolarda çalışacak acaba:

  • güncellenmiş Müşteri => Eski Sunucu
  • eski İstemci => güncellenmiş Sunucu
  • güncellenmiş Müşteri < = eski Sunucu
  • eski İstemci < = güncellenmiş Sunucu

cevap

15

WCF, tanımadığı yeni üyeleri ele alacak. Sözleşmenin tüketicisi (istemcide veya sunucu tarafında) bu üyeyi "görmeyecek" anlamına gelir, dolayısıyla bir sonuç yeni üyenin bir IsRequired=true özelliği olmamasıdır. Ayrıca, WCF, DataContract, IExtensibleDataObject uyguladığı sürece, WCF bileşenleri arasında yeni özelliği şeffaf bir şekilde köprüleyecektir. EG, mesaj yolu giderse:

güncellenmiş client => Eski sunucu => güncellenen sunucu

sonra zincirin ucunda güncellenmiş sunucu hala yeni DataMember göreceksiniz. Ancak, "eski sunucu" yeni DataMember'i görmeyecek.

Eski bir sunucu güncelleştirilmiş bir istemciye bir ileti gönderirse, yeni istemcideki serileştirme sonrasında yeni DataMember default(type) olarak ayarlanır.

Best Practices for DataContract versioning here hakkında daha fazla bilgi var.

Ve bu makalede the difference between Breaking and Non-Breaking changes anlatılmaktadır.

+0

Sağladığınız son bağlantıdan: 'Çoğu durumda, veri üyesini eklemek veya kaldırmak bir kırılma değişikliği değildir ' –