Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Трех звенные приожения, обработка транзакций [FB 1.0]


Term ©   (2004-03-30 10:51:00) 

Как осуществляется обработка транзакций при трехзвенной технологии.
На сервере приложений всё лежит в TRemoteDataModule, компонент TDataSetProvider и компоненты доступа к БД.

На клиенте TSoketConection и TClientDataSet. Как делать подтверждение транзации при вставке записей или обновлении?
Ведь тут нет таких методов как Commit или RollBack....


Term   (2004-04-04 13:25:00) [1]


> Да все допустимо ты делаешь. И все должно сработать :))
> Вот только CommandText - зачем? Это что, полный аналог Query.Close;
> Query.SQL := '...'; Query.Open; ?
> А нафига? ТАк и с query-то работать не рекомендуется, а
> в трехзвенке - и подавно


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


Соловьев   (2004-03-30 12:23:00) [2]


> Nikolay M. ©   (30.03.04 11:14) [5]
> Тебе же сказали: транзакции автоматом возникают на уровне
> провайдера, можешь на апп. сервере ими сам рулить, а на
> клиенте управлять транзакциями не есть гуд.

Как раз клиент токо и может решить конфликт.


Term   (2004-03-30 11:59:00) [3]

всё статью распечатал ща буду разбираться, всем спасибо


Romkin   (2004-03-30 11:41:00) [4]

Да все допустимо ты делаешь. И все должно сработать :))
Вот только CommandText - зачем? Это что, полный аналог Query.Close; Query.SQL := '...'; Query.Open; ?
А нафига? ТАк и с query-то работать не рекомендуется, а в трехзвенке - и подавно.


Term   (2004-03-30 11:31:00) [5]

методы сервера приложений раз используется COM-интерфейс, т.е.
добавить к примеру :
procedure ServApp.Login(Name:string);
begin
//ввод и обработка запроса
//и если Name не найден в БД тогда:
raise Exception.Create('Нет такого юзера');
end;


но это кажется не во всех случаях применимо.
и можно конкретно указать где и что я сделал не так, в [3]


Romkin   (2004-03-30 11:27:00) [6]

В общем, как обычно.
http://rsdn.ru/article/db/midas.xml
Клиент вообще не должен знать ничего о БД, он общается с сервером


Polevi   (2004-03-30 11:23:00) [7]

ataModule1.For_Login.CommandText:='Текст запроса';
а вот так делать не нужно, зачем нужна тогда 3-звенка если thin-client знает о структуре хранилица ?


Nikolay M.   (2004-03-30 11:21:00) [8]


> понятно значит прописать методы сервера и вызывать их на
> клиенте

О каких методах идет речь?


Term   (2004-03-30 11:19:00) [9]

понятно значит прописать методы сервера и вызывать их на клиенте


Nikolay M.   (2004-03-30 11:14:00) [10]

Тебе же сказали: транзакции автоматом возникают на уровне провайдера, можешь на апп. сервере ими сам рулить, а на клиенте управлять транзакциями не есть гуд.


Term   (2004-03-30 11:10:00) [11]

или в конце после закрытия TClientDataSet закрывать и
DataModule1.SocketConnection1.Close;

???


Term   (2004-03-30 11:09:00) [12]

а как за этим следить

я делаю так:

DataModule1.For_Login.Close;
DataModule1.SocketConnection1.Close;
DataModule1.SocketConnection1.Address:=Nastr.Edit1.Text;
DataModule1.SocketConnection1.Host:=Nastr.Edit2.Text;
DataModule1.For_Login.RemoteServer:=DataModule1.SocketConnection1;
DataModule1.SocketConnection1.Open;
DataModule1.For_Login.CommandText:='Текст запроса';
DataModule1.For_Login.Open;

///обработка рез-тов запроса;

DataModule1.For_Login.Close;


что не так и хде следить...?


Romkin   (2004-03-30 10:59:00) [13]

Как правило, провайдер сам следит за транзакциями. Перед обновлением открывает, после - закрывает. Если транзакция была уже открыта - оставит открытой. Отсюда и смотреть надо.


Term   (2004-03-30 10:56:00) [14]

или все операции вставки и обновления прописать как методы севера приложений и вызывать их с клиента использую COM-интерфейс... или есть еще способы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо