Как заставить службу WCF поддерживать множественный обратный вызов? - PullRequest
0 голосов
/ 19 июля 2009

У меня есть служба nettcp WCF, которая поддерживает один метод обратного вызова.

Я хочу добавить новые методы обратного вызова, добавив новый интерфейс, который содержит новые методы, не разрушая старый, так как есть другие вещи, которые зависят от старого интерфейса.

Я попытался добавить новый интерфейс, который наследуется от старого, но прокси-сервер с географической привязкой в ​​клиентском приложении не содержит старого интерфейса обратного вызова.

код выглядит следующим образом

interface IOldCallback
    {
        [OperationContract(IsOneWay = true)]
        void OnMethod1(int x);
    }

interface INewCallback : IOldCallback
{
[OperationContract(IsOneWay = true)]
        void OnMethod2(float x);

[OperationContract(IsOneWay = true)]
        void OnMethod3(bool x);


}
 [ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(INewCallback))]
    public interface IMyService
{
}

P.S

Я делаю быстрое и грязное решение, чтобы не сломать старые клиентские коды

interface INewCallback : IOldCallback
{
[OperationContract(IsOneWay = true)]
        void OnMethod2(float x);

[OperationContract(IsOneWay = true)]
        void OnMethod3(bool x);

[OperationContract(IsOneWay = true)]
       new void OnMethod1(int x);


}

1 Ответ

1 голос
/ 19 июля 2009

Вы не можете сделать это - вы можете иметь не более одного обратного вызова.

То, на что вы могли бы обратить внимание - это служба публикации и подписки, где ваш источник отправлял бы сообщение, которое затем направлялось бы любому, кто подписан на него. Это потребует дополнительных битов и кусочков, например, что-то вроде NServiceBus для локальных сценариев или что-то вроде .NET Service Bus для более ориентированного на Интернет решения "в облаке".

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...