La respuesta depende de su punto de vista. Digo que cambiar el contrato viola el contrato. Es por eso que los llaman "contratos".
Cambiar el contrato de servicio agregando operaciones adicionales "rompe" el cliente porque cambiará su código de proxy. En muchos entornos empresariales, dicho cambio requiere un pase de control de calidad, incluso si el código de cliente existente no llama a las nuevas operaciones. Básicamente, al agregar operaciones, está editando el código del cliente. En ese sentido, está claro que se requiere QA.
No es necesario modificar el contrato de servicio, cuando en su lugar puede crear un nuevo contrato de servicio y tener un punto final de servicio diferente para implementarlo. Incluso puede hacer que el nuevo servicio implemente tanto los contratos antiguos como los nuevos y compartir exactamente el mismo código para implementar el anterior.
También soy uno de los tipos pasados de moda que creen que debería usar un espacio de nombres diferente para un contrato diferente. En al menos un sentido delicado, los contratos viejos y nuevos son diferentes, por lo que potencialmente el mismo nombre podría significar cosas diferentes entre los dos. Esto puede mitigarse haciendo que el nuevo contrato se derive del anterior, de modo que los nombres antiguos permanezcan en el antiguo espacio de nombres, aunque aparecerán nuevos nombres en el nuevo espacio de nombres.
No, si las operaciones básicas siguen siendo las mismas (incluidos todos los parámetros), entonces el cliente existente * NO * necesita actualizar sus referencias. –