Настройте свои службы, добавив ссылку на службу к одной из них (ссылаясь на другую службу).Для этого убедитесь, что служба, на которую ссылаются, запущена и работает, затем щелкните правой кнопкой мыши дочерний проект службы и выберите Добавить ссылку на службу.Теперь вы можете выполнять вызовы методов, предоставляемых родительской службой.
Для обратных вызовов вам потребуется конечная точка, настроенная с дуплексным связыванием.См. здесь для получения информации о дуплексном связывании.Обновите ссылку на службу при добавлении новых конфигураций конечных точек в родительскую службу.Вам нужно будет разместить свои услуги.
Похожий вопрос был поднят здесь .
Ваша точка зрения будет выглядеть следующим образом:
<endpoint address="http://localhost:61775/DUPLEXFUN/" binding="wsDualHttpBinding"
bindingConfiguration="" name="DUPEND" contract="IDuplexCallback" />
Обратите внимание наВажным примечанием является wsDualHttpBinding.
Ваш контракт на обслуживание будет выглядеть следующим образом:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IDuplexCallback))]
public interface IDuplexService
{
[OperationContract(IsOneWay = true)]
void FormatString(string institution);
}
, а реализация службы будет выглядеть следующим образом:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class DuplexService : IDuplexService
{
IDuplexCallback _callback;
string _requestString = String.Empty;
public DuplexService()
{
_callback = OperationContext.Current.GetCallbackChannel<IDuplexCallback>();
}
public void FormatString(string text)
{
//Make the thread to sleep for 10 seconds
Thread.Sleep(4000);
//Format the input data
_requestString = string.Format("Welcome to {0}", text);
//Pass the string to the client through the call back function
_callback.DuplexCallbackFunction(_requestString);
}
}
и, наконец, IDuplexCallback будет объявлен как:
public interface IDuplexCallback
{
[OperationContract(IsOneWay = true)]
void DuplexCallbackFunction(string requestString);
}