WCF y herencia de interfaz: ¿es esto algo terrible?
Mi aplicación tiene 2 "servicios", digamos que uno es una calculadora básica (entera) y una es una calculadora de coma flotante. Expreso esto como interfaces así:
public interface IBasicCalculator
{
int Add( int a, int b );
}
public interface IFloatingPointCalculator
{
double Add( double a, double b );
}
Quiero exponer estos a través de WCF. Desafortunadamente, WCF parece estar muy ligado a la idea de que cada posible operación que desee exponer debe pasar por una única interfaz de servicio: no puede compartir sesiones entre servicios, es engorroso desde el lado del cliente, ya que necesita crear un proxy separado para cada uno, no parece haber ningún "sub-servicio", etc.
Entonces, he deducido que necesito presentar una interfaz "combinada" (también podría llamarse fachada), así:
[ServiceContract]
public interface ICalculatorService : IBasicCalculator, IFloatingPointCalculator
{
[OperationContract(Name = "AddInt")]
new int Add( int a, int b );
[OperationContract(Name = "AddDouble")]
new double Add( double a, double b );
}
Si hago esto, WCF expone ambos métodos al cliente, que puede llamarlos, y todo funciona.
Sin embargo, "heredar las interfaces" de esa manera parece ser desgarbado.Particularmente elnew
int Add
ynew
double Add
. Estrictamente hablandonew
en un método indica ocultar un método subyacente, que en realidad no estoy haciendo en absoluto. Puedo omitir elnew
, pero luego recibo advertencias del compilador que equivalen a "Creo que estoy ocultando este método, debes cambiarle el nombre o poner 'nuevo' en él".
Entonces, esta es una pregunta de 2 partes:
¿Estoy encaminado con mi lógica de 'combinar todo en una interfaz', o hay realmente una manera de exponer "sub-servicios" o "servicios vinculados múltiples" usando WCF?
Si esto es lo que hay que hacer, ¿hay una mejor manera?
¡Gracias!