Herança WCF e interface - isso é uma coisa terrível a se fazer?

Meu aplicativo possui 2 "serviços", digamos que um seja uma calculadora básica (inteira) e um seja uma calculadora de ponto flutuante. Eu os expresso como interfaces assim:

public interface IBasicCalculator
{
    int Add( int a, int b );
}

public interface IFloatingPointCalculator
{
    double Add( double a, double b );
}

Eu quero expô-los via WCF. Infelizmente, o WCF parece estar intimamente ligado à noção de que toda operação possível que você deseja expor deve passar por uma única interface de serviço - você não pode compartilhar sessões entre serviços; isso é complicado do lado do cliente, pois você precisa criar um proxy separado para cada um, não parece haver nenhum "sub-serviço", etc ...

Então, concluí que preciso apresentar uma interface "combinada" (pode-se chamar também de fachada), assim:

[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 );
}

Se eu fizer isso, o WCF expõe os dois métodos ao cliente, que pode chamá-los, e tudo realmente funciona.

No entanto, "herdar as interfaces" assim parece desagradável.Particularmente anew int Add enew double Add. Estritamente falando,new em um método indica ocultar um método subjacente, o que realmente não estou fazendo. Eu posso omitir onew, mas recebo apenas avisos do compilador que equivalem a "Acho que estou ocultando esse método, você precisa renomeá-lo ou colocar 'novo' nele".

Portanto, esta é uma pergunta em duas partes:

Estou no caminho certo com minha lógica 'combinar tudo em uma interface' ou existe realmente uma maneira de expor "sub-serviços" ou "vários serviços vinculados" usando o WCF?

Se é isso que precisa ser feito, existe uma maneira melhor?

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion