Круто, так что вы реализуете более одного контракта на обслуживание одного сервиса. Круто, так что это означает, что ваша точка отсчета никогда не касалась количества прокси-серверов, а действительно количества сервисов, и теперь вы знаете, как выполнить то, что вы описываете. Здорово.

м приложении есть 2 «службы», скажем, один - базовый (целочисленный) калькулятор, а другой - калькулятор с плавающей запятой. Я выражаю их как интерфейсы, например:

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

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

Я хочу выставить их через WCF. К сожалению, WCF, похоже, очень тесно связан с понятием, что каждая возможная операция, которую вы хотите представить, должна проходить через один интерфейс службы - вы не можете разделять сеансы между службами, это громоздко со стороны клиента, так как вам нужно создать отдельный прокси для каждого из них, кажется, нет никаких «вспомогательных услуг» и т.д ...

Итак, я понял, что мне нужно представить «комбинированный» интерфейс (можно также назвать его фасадом), например:

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

Если я делаю это, то WCF предоставляет клиенту оба метода, которые могут их вызывать, и все это на самом деле работает.

Тем не менее, «наследование интерфейсов», как это, кажется неуклюжим.в частности new int Add а такжеnew double Add, Строго говоря,new метод указывает на то, что он скрывает базовый метод, чего я вообще не делаю. Я могу опуститьnew, но затем я просто получаю предупреждения компилятора, которые равняются «Я думаю, что я скрываю этот метод, вам нужно переименовать его в метод или добавить в него« новый »».

Итак, это вопрос из двух частей:

Я нахожусь на пути к моей логике «объединить все в один интерфейс», или на самом деле есть способ раскрыть «подуслуги» или «несколько связанных служб» с помощью WCF?

Если это то, что должно быть сделано, есть ли лучший способ?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос