Сериализация .Net SqlTransaction? - PullRequest
2 голосов
/ 31 июля 2009

У нас есть интересная настройка, в которой SqlTransactions сохраняются в памяти приложения в веб-приложении. Мы стремимся перевести наше веб-приложение в сценарий NLB, поэтому нам нужен способ, чтобы эти транзакции не были привязаны к памяти одной машины. Есть ли способ, которым мы можем это сделать? Нужно ли начинать поиск в пространстве имен System.Transactions?

Ответы [ 5 ]

2 голосов
/ 31 июля 2009

Я не верю, что это может сработать. Транзакции имеют временный и локальный характер.

редактировать

Может быть, слово «переходный» лучше, чем «временный».

1 голос
/ 31 июля 2009

Нет смысла хранить SqlTransaction в Application состоянии. Транзакция не должна охватывать один запрос.


Я предполагаю, что вы знаете, что Application состояние является общим для всех пользователей.

Почему вы использовали состояние Application вместо состояния Session? Session может работать с балансировщиками нагрузки, используя State Server или формы сохранения сеанса SQL Server.

0 голосов
/ 01 августа 2009

Во-первых, сериализация предназначена только для захвата снимка значений / типов значений-sstudf, таких как числа строк и т. Д. Транзакция - это нечто «живое» в течение короткого периода времени (тайм-аута) для конкретного пользователя, с х ресурсов (как правило, соединения с базой данных). Так как эти вещи постоянно меняют serislizing, а затем их восстановление действительно испортило бы ситуацию, если бы это было возможно, так как многое изменилось бы, и вы бы получили хаос.

Если бы транзакции должны были быть сериализуемыми, они бы реализовали интерфейс, то, о чем вы просите, просто плохо / глупо.

0 голосов
/ 01 августа 2009

Я такого еще не делал, но в SqlTransaction есть метод CreateObjRef, который возвращает ObjRef, который можно сериализовать. И кажется, что ObjRef - это то, что вы должны делать взад и вперед.

Класс ObjRef

0 голосов
/ 31 июля 2009

Возможно, вы захотите взглянуть на Координатор распределенных транзакций . Я лично не использовал его для обработки транзакций по нескольким запросам, но это его цель. Ссылка является руководством разработчика для COM и Win32. Вот учебник , который, как мне кажется, может помочь вам начать работу с .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...