мой вопрос: имея кусок кода, как этот (связь через контракт обратного вызова)Передача данных в обратный вызов, гарантируется ли получение данных?
private void BroadcastMessage(DataEventArgs e)
{
DataEventHandler temp = DataEvent;
if (temp != null)
{
foreach (DataEventHandler handler in temp.GetInvocationList())
{
handler.BeginInvoke(this, e, EndAsync, null);
}
}
}
и контракт обратного вызова
interface IDataCallback
{
[OperationContract(IsOneWay = true)]
void EntityUpdateReceived(Entity entity);
[OperationContract(IsOneWay = true)]
void EntitiesUpdateReceived(List<Entity> entities);
[OperationContract(IsOneWay = true)]
void EntityDeleteReceived(Entity entity);
[OperationContract(IsOneWay = true)]
void EntitiesDeleteReceived(List<Entity> entities);
[OperationContract(IsOneWay = true)]
void SendLogOffMessage(string message);
[OperationContract(IsOneWay = true)]
void Logoff();
[OperationContract(IsOneWay = true)]
void UpdatePlan(int userId);
}
Есть ли у меня уверенность, что сообщение будет транслироваться на все клиенты успешно, даже если бы были некоторые, допустим, сетевые проблемы на пути? Я имею в виду, что служба автоматически пытается доставить сообщение раз за разом до тех пор, пока это не удастся, предполагая, что клиент подключен все время, но были некоторые проблемы во время первой доставки. Я спрашиваю, потому что я не знаю, нужно ли мне писать дополнительный код, чтобы он гарантировал (сообщения подтверждения обслуживания и т. Д.) У меня есть надежный сеанс, включенный в app.config, надежный сеанс решает проблему?
Заранее спасибо за Ваш ответ
Спасибо, что сдуло мои проблемы и решило мою проблему. У меня он настроен так, как говорится в статье из вашей ссылки (пользовательская привязка с надежным сеансом). Мне не нужен MSMQ, потому что у меня есть собственная процедура синхронизации после долгой недоступности клиента, и мне нужно знать, могу ли я разрешить кратковременную доставку сообщений. Теперь я знаю, так что еще раз спасибо. – Tobiasz