ServiceContract определяет операции и сообщения, которые эти операции потребляют и возвращают
DataContract определяет сериализацию из объекта .NET в XML
DataContracts используются в ServiceContracts для описания XML сообщения в терминах его класса сериализации
Поэтому, если вы измените DataContract, это повлияет на сообщение, которое клиент должен отправить или получить взамен - это может быть критическим изменением для клиента.
Однако DataContractSerializer - очень простительный сериализатор (некоторые могут сказать, что он слишком прощающий). Если отправитель отправляет данные, которые получатель не ожидает, то сериализатор игнорирует эти данные. Если отправитель не отправляет данные, ожидаемые получателем, тогда, пока данные не помечены как IsRequired = true в DataContract, тогда получатель просто по умолчанию принимает значение (например, 0 для целого числа)
Таким образом, если изменение является критическим изменением для клиента, который либо вызывает сбой сериализатора, либо вызывает нежелательные побочные эффекты от сериализатора, вам придется сменить клиента. Если нет, то клиент может продолжать работать без изменений