2010-12-01 4 views
1

Я представляю себе следующее использование WCF службы: (кассовый акцептор)WCF сделка

Service Consumer 1       Service Consumer 2 
cashAcceptorService.BeginTransaction();  cashAcceptorService.StopDevice(); 
              //this should throw exception: device is locked/used in a transaction          
cashAcceptorService.AcceptMoney();   

cashAcceptorService.EndTransaction(); 

потребительских услуг 1 и 2 используется один и тот же WCF один экземпляр. Интересно, реализована ли эта функциональность. Предлагают ли транзакции WCF?

Как вы это видите?

ответ

0

Если верно следующее:

  • Служба взаимодействует с транзакционной объекта (например, база данных)
  • Услуга позволила поток транзакций

Тогда WCF действительно предлагает это ,

Затем клиент может использовать класс TransactionScope. Любые транзакции, инициированные клиентом, будут автоматически передаваться в службу.

using(TransactionScope transactionScope = new TransactionScope()) 
{ 
    // Do stuff with the service here 
    cashAcceptorService.AcceptMoney(); 
    // 
    // 
    transactionScope.Complete(); 
} 

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

+1

Не использовать базу данных. Думаю, я могу настроить службу wcf для включения потока. Но что, если другой потребитель службы вызывает стоп, пока устройство находится в транзакции. Я не хочу, чтобы другие беспокоили устройство во время использования. (вызов некоторых конкретных методов должен быть неудачным) Спасибо! – Zapacila 2010-12-01 01:25:47

Смежные вопросы