Дуплексный контракт WCF

Допустим, у меня есть такой контракт службы WCF

[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
  // some methods
}

Реализация службы имеет InstanceContextMode.Single , установленное для InstanceContextMode и ICallback1 - это что-то вроде

public interface ICallback1
{
    [OperationContract]
    void Report(int someValue);
}

Теперь на стороне клиента я могу иметь класс, который реализует ICallback1, например

class Callback1 : ICallback1
{
    public void Report(int someValue)
    {
        // alert client
    }
}

, и я создаю ссылку на клиентскую службу, подобную этой

Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1())); 

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

 Service1Client serviceClient = new Service1Client(null);

и

 Service1Client serviceClient = new Service1Client(new InstanceContext(null));

, оба сообщили, что параметр не может быть нулевым . Мой вопрос в том, как я могу создать ссылку на службу без передачи объекта обратного вызова, если клиент не заинтересован в обратном вызове. Единственное требование - все клиенты должны разговаривать с одной и той же службой, но в противном случае я могу реструктурировать службу. Есть мысли?

РЕДАКТИРОВАТЬ:

Я также пробовал SessionMode = SessionMode. Разрешено для ServiceContract вместо SessionMode.Required , но это тоже не помогло.

6
задан Bala R 16 March 2011 в 04:36
поделиться