![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Трех звенные приожения, обработка транзакций [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-интерфейс... или есть еще способы?