при потоковой передаче с WCF я создаю два ServiceContracts, один из которых выполняет потоковую передачу, а другой отправит уведомление в конце потоковой передачи.
В ответе ServiceContract я использую привязку дуплексного типа. Клиент должен сначала вызвать ответ ServiceContract, чтобы получить тикет для своей транзакции, а затем вызвать мой перевод ServiceContract. Затем в конце транзакции клиент получит уведомление об успехе или неудаче из ответа ServiceContract.
[ServiceContract]
public interface IStreamFileService
{
[OperationContract]
void Upload(Stream stream);
}
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ITransferCallback))]
public interface IStreamFileResponseService
{
[OperationContract(IsOneWay = false, IsInitiating = true, IsTerminating = false)]
Guid StartUpload();
}
[ServiceContract]
public interface ITransferCallback
{
[OperationContract]
void OperationComplete(ResponseMessage response);
}
Я делаю это в двух сервисах, потому что мои требования и рабочий процесс требуют от меня отслеживания многих вещей и выполнения аутентификации, проверки и т. Д.