2012-03-22 5 views
1

У меня есть клиент-серверное приложение. Клиент - приложение .NET 4.0. Сервер - это служба WCF без учета состояния (.NET 4.0). Служба WCF делает некоторые CRUD с базой данных SQL Server 2005. WCF настроен для поддержки транзакций. Услуги должны быть безгражданны для масштабируемости. Существует несколько примеров службы WCF на разных физических машинах. Они находятся за балансиром нагрузки. Если мы имеем следующий код клиента:WCF распределенные транзакции с балансировкой нагрузки

using (var scope = new TransactionScope()) 
{ 
    var proxy1 = new WCFServiceProxy(); 
    proxy.DoSomeDBStuff1(); 
    proxy.DoSomeDBStuff2(); 

    scope.Complete(); 
} 

эти два запроса службы могут обслуживаться различными экземплярами WCF службы. Будут ли эти операции работать надлежащим образом?

ответ

2

Они должны работать должным образом. 2-х фазовая фиксация транзакции должна работать на разных машинах, независимо от того, находятся ли они под одним балансиром нагрузки или нет.

+0

Спасибо! Ты прав. Я сделал прототип (1 клиент, 2 сервера за балансировкой нагрузки), и все в порядке. Проблемы возникают, когда я пытаюсь использовать WS-Atomic (вместо OleTx): для этого требуется SSL, а конфигурация WCF сложна, когда серверы находятся за балансировщиком нагрузки. Но сейчас OleTx для меня достаточно. –

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