Как разделить контракты операций службы WCF в режиме параллелизма как одиночные и множественные

У меня есть одна служба Service A с двумя рабочими контрактами CheckServer и AddService. Поскольку служба является одноэлементной с режимом Concurrey как Single [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]

public Class Service : Iservice
{
   public bool CheckService()
    {
       //Checks server avilabality and returns bool value
    }

   public int AddService(int a, int b)
    {
      return int i = a + b;
    }
}

Здесь мое требование состоит в том, чтобы разрешить только один экземпляр AddService, поэтому я сделал это как синглтон. Теперь CheckServvice не обязательно должен быть Singleton, так как я могу разделить эти 2 реализации метода, чтобы сделать AddService одноэлементным, а CheckService - множественным.

Заранее спасибо


person Maddy    schedule 11.10.2011    source источник


Ответы (1)


WCF не предоставляет то, что вы хотите. Поместите эту логику за пределы WCF и напишите собственную логику синхронизации. Например, реализуйте одноэлементный класс, раскрывающий CheckService и AddService, где синхронизация будет непосредственно в методе AddService, а метод CheckService будет свободен для вызова.

Сделайте стандартную службу WCF для каждого вызова, делегировав обработку вашему одноэлементному классу.

person Ladislav Mrnka    schedule 11.10.2011