|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||
Ликбез по DataSnap30.01.2015, 23:54. Показов 24724. Ответов 30
Метки нет (Все метки)
Всех приветствую,
предлагаю открыть дисскусию по теме технологии DataSnap (трехзвенка от создателей delphi) интересна любая информация по данной технологии (в идеале ссылку на рабочий проект - только не такой ,как в папке sampels, что в комплекте с delphi в котором во первых черт ногу сломит, во вторых того что нужно все равно нет, а сделанный самостоятельно ) Те кто пытался самостоятельно разобраться, по книгам и учебным примерам думаю меня поймут. И так цель: есть одноранговая локальная сеть TCP/IP 1й Компьютер: (ОС Win7. Установлена Delphi XE7 Architect) Лежит база firebird (2.5/3 диалект/win1251) в ней всего одна таблица - "clients" Запущен сервер приложений datasnap - в качестве службы Windows. На форме клиентского приложения VCL. есть таблица dbgrid и кнопки под ней "Вставить" "Изменить" "Удалить" "Найти запись" также присутствует кнопка "ПОДКЛЮЧИТСЯ/ОТКЛЮЧИТСЯ" и несколько Edit-ов для внесения параметров (логин/пароль/ip адрес сервера приложений/порт/протокол) 2й Компьютер: ОС WinXP Только тонкий клиент (приложение VCL) 3й Компьютер: ОС Win7 Только тонкий клиент (приложение VCL) Собственно просто хочу, чтобы это работало. Если бы на первом же "вэбинаре" эпизод 1 или, как там у них показали бы "на пальцах популярно " такой или подобный проект, интерес вникать в эту рекламируемую технологию дальше, был бы на много выше А вот, что я выяснил за 2 недели исследований: 1. Самое главное, данный проект можно реализовать 2мя путями "по старому" - DataSnap до delphi 2010 ( клиент на основе провайдера TDSProvidrConnection) "по новому" - DataSnap delphi 2010, XE,XE2,........ (клиент на базе компонента TSqlServerMethod) меня прежде всего интересует "по новому" ибо (цитирую Осипова ниже) (но и по старому интересно) "Использование провайдеров наборов данных TDataSetProvider и TDSProviderConnection в проектах DataSnap целесообразно лишь в том случае, когда клиентское приложение должно работать на основе интерфейса IAppServer -т.е. для совместимости со старыми проектами зависимыми от COM ..................... Основное достоинство новой DataSnap — избавление от зависимости от COM, что позволило создавать более простые и производитель-ные приложения" не буду корчить из себя знатока - совершенно не представляю, что в итоге дает мне на практике эта независимость от COM но я делаю проект с нуля и хочу, чтобы он был универсальным и актуальным. Подозреваю, что будет легче "портировать" тонкий клиент на другие оси (не мелкософтные). ТЕПЕРЬ В КРАТЦЕ: по старому: сервер Firebird - ТSQLconnection - ТSQLdataset - DataSetProvaider - SQLquery (причем у ТSQLdataset интересны 2 свойства это CommandType и Commandtext) В CommandText передается инструкция SQL если в CommandType выбранно stQuery, но надо не забыть поставить флаг poAllowCommandText в опциях. клиент ТSQLconnection - DSProviderConnection - ClientDataSet1 - DataSource1 - DBGrid (есть один нюанс клиент не будет работать если на компьютере с клиентом не зарегистрирована библиотека midas.dll) Сразу вопрос, а если "по новому" - нужна эта midas.dll на клиенте? .. нет, а что нужно? по новому: сервер Firebird - ТSQLconnection - ТSQLdataset -SQLquery клиент ТSQLconnection - SqlServerMethod - - DataSetProvaider - ClientDataSet1 - DataSource1 - DBGrid (здесь все sql запросы передаются через параметры серверных методов - ниже есть пример) (отступление) в посте (ISAPI, MySQL и DataSnap XE2. от 26/08/2012 Vlad 11 Комментарии Delphi в Web ) сказано цитирую: "Теперь настроим TSQLServerMethod. Вообще, этот компонент удобно использовать в том случае, если нам необходимо получить данные только для чтения. " и "В приведенном выше примере клиента мы создали вот такую связь компонентов: ТSQLconnection - SqlServerMethod - - DataSetProvaider - ClientDataSet1 - DataSource1 - DBGrid Для чтения данных с сервера этого достаточно, для модификации — нет. Напишем теперь клиентское приложение, которое будет и читать и модифицировать данные." Далее автор реализует вариант "по старому" причем не с механизмом Commandtext, а с пресловутым dbnavigatorom, что есть не серьезно Так вот - это не правда с помощью SqlServerMethod данные прекрасно редактируются. Совсем другой вопрос, как в реальном времени обновлять данные в DBGrid не включая и не выключая постоянно ТSQLconnection. Связь (TDSProvidrConnection-DataSetProvaider) сама рулила обновлением данных (там и команда нужная имеется ApplyUpdate) достаточно было открыть/закрыть ClientDataSet1 рвать ТSQLconnection было не нужно. Я добился конечно видимости - реальной работы с данными через тонкий клиент только при помощи SqlServerMethod но что будет дальше если я захочу встроить например механизм транзакций ? Не помешает постоянное отключение/включение ТSQLconnection ? Так как я читал все подряд, то мой проект сначала получился комбинированным т.е на форме присутствовали как компоненты - провайдеры так и SqlServerMethod и удивительное дело все это вместе работало - а точнее "Вставить" "Изменить" "Удалить" работали через SqlServerMethod в то время как DBGrid обнавляли провайдеры в тчении одного подключения ТSQLconnection ЧТО Я НЕ СМОГ ПОБЕДИТЬ 1. "Найти запись" - я не смог передать sql запрос SELECT из клиента в сервер не "по старому " не "по новому" Господин Осипов к величайшему сожалению показал только пример с Insert , по которому я и реализовал Delet и Update. как правильно обновить ClientDataSet1 через метод - не понимаю "по старому " через Commandtext не так интересно но тоже пока не получается 2. Я не могу заставить работать клиент на машине где нет delphi, сервер - могу. Т.Е 1й Компьютер (клиент) ----------- 2й Компьютер (сервер) работает 1й Компьютер (клиент) ----------- 3й Компьютер (сервер) работает 1й Компьютер (сервер) ----------- 2й Компьютер (клиент) не работает 1й Компьютер (сервер) ----------- 3й Компьютер (клиент) не работает Пишет мол Error Asess Violation xxxxxx Not READ adress 00000000000000 ну то есть имеется попытка доступа к чемуто , что пока/или уже (nil) 3. Как правильно организовать процедуру самого подключения, особенно меня интереует запрос имени и пароля
мне интересен вариант - datasnap но когда я делаю свойство ТSQLconnection Loginpromt - True то выскакивает окошко, а как сделать в своей форме ? и еще один момент, реакцию на вводимые данные в edit по портам, протоколам, ip я наблюдаю но если клиент и сервер на одной машине (где делфи) то даже если данные не вводить то все равно таблица открывается, где я только не вычищал из инспектора данные по умолчанию безполезно клиент все равно их находит - этот момент меня напрягает Вот на всякий случай кому интересно, листинг сервера и клиента:
1
|
||||||
| 30.01.2015, 23:54 | |
|
Ответы с готовыми решениями:
30
Делегаты. Ликбез Ликбез по ООП Требуется ЛикБез ^,.,^ |
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
| 04.09.2015, 17:08 | |
|
PiNorDim, привет, короче с базовыми операциями я разобрался, все летает, а вот картинки грузить - трабл... - метод ApplyUpdates - не работает. То есть, в закешированных элементах (Simpledataset, ClientDataSet) отображается загрузка картинки, а вот в реальной базе MySQL EmtyDataSet (((
kebot, я видел в соседней ветке ты мучался с загрузкой картинок - домучал в итоге?
0
|
|
|
1 / 1 / 4
Регистрация: 09.09.2013
Сообщений: 112
|
||
| 10.05.2018, 13:48 | ||
|
0
|
||
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
| 10.05.2018, 14:09 | |
|
Привет, сформулируй свою задачу
0
|
|
|
1 / 1 / 4
Регистрация: 09.09.2013
Сообщений: 112
|
||
| 11.05.2018, 10:44 | ||
|
Добавлено через 6 часов 3 минуты Есть ли у кого книга Боба Сворта "Delphi 2010 DataSnap: новые возможности в управлении и доступе к данным"? Не могу найти, ссылки не рабочие.
0
|
||
|
|
|
| 11.05.2018, 15:44 | |
|
что значит передать запрос?
запрос это просто строка. вы строку на сервер передать не можете? ответ получать можно в чем угодно, можно и автоматом в Clientdataset но современные тенденции программирования как бы намекают, что можно и без датасетов, простыми JSON обходиться весь WEB обходится, и вы справитесь )))
0
|
|
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
| 14.05.2018, 10:37 | |
|
kaz4640984, привет! На днях собираюсь обновить свои знания по Datasnap, если вопрос ещё актуален, думаю смогу тебе помочь. Маякни здесь - актуально ещё или нет.
С уважением,
0
|
|
|
1 / 1 / 4
Регистрация: 09.09.2013
Сообщений: 112
|
|
| 15.05.2018, 10:06 | |
|
GringoV, привет! С этой проблемой разобрался. Сейчас пытаюсь уменьшить Connection Timeout, при неправильном хосте выдает дефолтные 20-25 секунд.Пытаюсь решить, но пока безрезультатно!
0
|
|
|
|
|
| 15.05.2018, 10:22 | |
|
да. это есть. таймауты игнорятся
у меня только одна мысль. вынести сам коннект в поток и прекращать его ждать через нужный нам таймаут он конечно потом отвалится и все такое, но это уже просто игнорить
0
|
|
|
1 / 1 / 4
Регистрация: 09.09.2013
Сообщений: 112
|
|
| 05.06.2018, 11:34 | |
|
Всем привет!) Долго меня не было!
Очередной трабл, который не могу сам решить. В общем есть сервер к которому подключаются клиенты. Клиенты отправляют отчет на сервак. Все хорошо работает и работало, пока не добавил сворачивание в tray. Как только сверну в tray, клиент получает ошибку от БД (SQLite) "The database file is locked". Если не сворачивать в tray, то работает без ошибок. Есть у кого какие идейки по этому поводу?
0
|
|
|
|
|
| 06.03.2023, 10:52 | |
|
Прекрасно.
Единственное замечание, что в современных реалиях лучше исходники не паковать в архив и хранить непонятно где, а разместить например на GitHub. То же и с доками. Так доступ к ним будет гораздо шире.
1
|
|
|
7 / 5 / 0
Регистрация: 08.05.2009
Сообщений: 48
|
|
| 07.03.2023, 09:35 | |
|
Спасибо
0
|
|
| 07.03.2023, 09:35 | |
|
Помогаю со студенческими работами здесь
31
Qthread (ликбез) Ликбез по ТВ и apple tv DataSnap и БД Ликбез по стеку прошу ликбез по оконным приложениям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|