Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Прошу прощения у модератора, что поднимаю этот вопрос в НАШЕМ форуме, но у меня остались неясности из топика "Есть люди отказавшиеся от Delphi?", причем оппоненты Фокса, на мой взгляд весьма знающие в своем деле и вполне адекватно реагирующие на критику. Прошу не удалять, хотелось бы услышать/увидеть ответы Для начала хочу ответить на заданные мне вопросы. pkarklin pkarklin PaulWistНапример, планирование - надо "поиграться" с результатами нашего видения скажем выпуска и в заисимости от результата вычислений изменить начальные условия (т.е. юзер видит у себя на клиенте продукцию какого-то производства или её часть и решает а давайка выпуск этого изделия/группы или всего увеличим в два раза, что получиться с процентом в общем выпуске, ага процент мал, тогда дайка я увеличу в три раза относительно первоначального), те в данном случае гонять данные на сервер и получать обратно смысла нет, хотя и такой вариант возможен и реализуем. Т.е. Вы хотите сказать, что гараздо лучше сначал ВСЕ данные, необходимые для расчета подтянуть на клиента, и там уже считать??? Простите, а для чего тогда собственно сервер СУБД нужен? Чтоб эмулировать dbf? Давайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? pkarklinСтранно однако слышать, что обработка данных для сервера СУБД - это "несвойственная ему задача". Их обычно "молотилками данных" называют - ибо это прямое их предназначение. У японцев популярен замечательный тест Super PI 1.1e здесь http://www.overclockers.ru/files/index.shtml?dir=33 попробуйте запустить его пару-тройку экземпляров на сервере и один на дохлом селероне и посмотрите на результат (у меня получился сравним по времени) Теперь конкретные вопросы - каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) - каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) - каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Спасибо за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:02 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторДавайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? Если я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д. Обновляем данные общего объема. Не понял, что тут такого? Или не то ответил? :) автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец. Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе. А у вас как это делается? автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) Собственно у меня и pkarklin через компонент Query дергается нужная хранимая процедура с установленными параметрами. Все. Обратно получаем результат, если нужно. автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Тоже все через ХП. Кто-то работает и не через ХП (но это не наш путь :)), но посылают на сервер те же команды. Я дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:17 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ tygraЕсли я правильно понял смысл, то меняем объем выпуска - выполняем ХП на сервере, где update и т.д. Обновляем данные общего объема. Не понял, что тут такого? Или не то ответил? :) И да и нет. Попробую разложить как сам понял Ваш ответ. - через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения) - пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то - затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры) Я правильно понял? tygra автор - каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Зависит вообще от того, нужно это вам или нет. У нас нигде не используется. Кто последний - тот и молодец. Но если нужно - при начале редактирования пишется в лог, что данная запись на редактировании (вообще в форуме MS SQL приводилось несколько алгоритмов, на 100% готовых к работе для таких ситуаций). Кто следующий хочет редактировать, проверяем лог, если запись есть - сообщение, что Вася эту запись забрал себе. Понял, это одно из трех решений для разрешения конфликтов модификации, ладно. tygraА у вас как это делается? в фоксе для этого есть функция (хотел написать штатная) TableUpdate(), в которой в качестве параметров можно выставить какой тип разрешения конфликтов использовать (надо сказать она тоже далека от совершенства и работает только для простого применения, для сложных задач приходиться использовать примерно такую же технологию описанную Вами) tygra автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) Тоже все через ХП. Вот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция. Давайте на простом примере Фокса расскажу, что хочу спросить, в Фоксе можно сформировать символьную строку, скажем такого вида Код: plaintext 1. 2. 3. 4. 5. и затем эту строку ф-ей SQLEXEC затолкать на сервер, те вы видите, что при формировании строки можно явно прописать параметры как для INSERT, так и для EXEC (мы здесь рассматриваем простой пример передачи параметров, есть и другие может даже ещё проще) Каким образом это делается в дельфи. tygraЯ дкмаю, что к-с в Фокспро ничем не отличается от к-с в Дельфи Да у меня такое же мнение и повторюсь, я написал пост после Ваших слов "а как это делается в Фоксе" и мне тоже стало интересно "а как это делается в Дельфи" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:13 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторИ да и нет. Попробую разложить как сам понял Ваш ответ. - через интерфейс, что-то изменили в данных (например, прошли циклом по датасету и присвоили новые значения) - пересылаем данные на сервер (наверное через компонент, который реализует эту функциональность, например создает временную табличку на сервере), затем вызываем ХП, которая знает про временную табличку и производит модификацию (здесь скорее рассчет) основных данных и возвращает результат, в виде изделие №1 процент выпуска стал такой-то, для др. изделия такой-то Если менять у многих товаров сразу... То все-равно: как только у каждого товара изменили данные, они для этого товара сразу же посредством ХП идут на сервер (ниже, как это делается через ХП). Т.е. каждый раз для каждого товара. автор- затем все эти расчеты надо показать юзеру (не утверждаю, просто не знаю как это реализуется в дельфи - проходим по датасету и добавляем новые полученные цифры) Да нет, вызывается ХП, которая там внутри считает, если до этого еще не было посчитано, и выдает select на клиента. Датасет просто закрывается и открывается с новыми данными. На клиенте ничего не меняется в датасете - все приходит из сервера. авторВот об этом по подробнее (свое представление об этом я написал выше), каким образом в ХП передаются параметры и каким образом оформляется транзакция. Ну как это будет в дельфи. Например, на сервере есть ХП ClientUpdFIO (изменить фио клиента). Соответственно входящие параметры - фамилия, имя, отчество и ID клиента. В компоненте Query прописывается текст: Код: plaintext Потом параметрам присваиваем соответствующие значения Код: plaintext 1. 2. авторQuery.Exec --или Open, если нам обратно нужно получить рекордсет. это для тех ХП, где обратно выдается select .... Транзакцию можно открыть внутри ХП. Откат, коммит там же. Любые действия, которые нужно произвести над данными, там же, что при изменении, что при select. Да и вообще вся работа только через ХП, есть много ХП, которые вызываются только из ХП (рассчеты разные и т.д.) Если чего нужно поправить, обычно правится ХП - клиента вообще не касается, если только не меняются входящие параметры. Вроде ответил? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:45 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
так выделить надо: Код: plaintext ошибся кнопкой :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 15:46 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraтак выделить надо: Код: plaintext ошибся кнопкой :) -- Tygra's -- Тигра, а можно ли в Дельфи передать в ХП XML-документ как параметр ХП ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:06 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Можно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:11 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraВроде ответил? Да, вполне доходчиво, спасибо. У меня остался один маленький вопрос. tygraЕсли менять у многих товаров сразу... То все-равно: как только у каждого товара изменили данные, они для этого товара сразу же посредством ХП идут на сервер (ниже, как это делается через ХП). Т.е. каждый раз для каждого товара. Вот здесь не понятно, а если произошла ошибка, то каким образом откатываются изменения у уже модифицированных данных? tygraНапример, на сервере есть ХП ClientUpdFIO (изменить фио клиента). Соответственно входящие параметры - фамилия, имя, отчество и ID клиента. В компоненте Query прописывается текст: exec ClientUpdFIO @ID = :ID, @FName = :Fname, @LName = :LName и т.д... Собственно, он там еще с момента разработки - раз уж мы тут обычно меняем фио клиентов, то есть на форме компонент с этой ХП. Потом параметрам присваиваем соответствующие значения Query.Params("ID").AsInteger := 11111; Query.Params("FName").AsString := 'Вася'; Query.Params("LName").AsString := 'Петров'; и т.д. Потом дергаем процедуру Для одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:12 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Выше про разбор XML - это о MS SQL. Ну наверное и в других можно разбирать. Правда смотря для чего передается XML в ХП. Собственно параметра у ХП с типом XML нет. Тип text - запросто. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:13 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Буду отвечать постепенно. авторДавайте разберем/разложим этот пример Что надо показать пользователю - наверное нужен список продукции кот. мы выпускаем с её количеством (соответственно подтянули кусок справочника изделий обьединенный с кол-вом выпуска), наверное понятно что бы юзер мог указать что для изделия №1 выпуск планируем такой-то, а для др. изделия такой-то - нужен общий обьем выпуска (тоже на сервере посчитали и подтянули на клиента), что бы получить искомый процент Понятно, что данных цифр достаточно, что бы получить результат. Теперь, как это реализуется в дельфи или как Вы бы реализовали, исходя из архитектуры КС для получения результата ? И так, как бы это делал я. на сервере должна как минимум быть таблица: tblProdPlan( colPeriod, -- период плана (месяц) colProductID, -- код продукции из спарвочника продукции colAmount, -- планируемое кол-во colPercantage -- процент данной продукции по отношению к общему выпуску.) еще бы мне понадобились хранимые процедуры: usp_ProdPlanChange -- отвечающая за вставку, изменение, удаление позиций usp_ProdPlanSelect -- отвечающая за выборку плана за определеный период usp_ProdPlanRecal -- отвечающая за пересчет плана. На клиенте, с помощью usp_ProdPlanSelect в гриде открываем набор. пользователь вносит изменения, которыйкэшируются локально, пока пользователь не нажмет кнопочку сохранить. Когда он нажимает на эту кнопку, для каждой измененной, удаленной, добавленной записи происходит вызов usp_ProdPlanChange с необходимыми параметрами. Все это в одной транзакции. В этой же транзакции в самом конце происходит вызов usp_ProdPlanRecal, которая и пересчитывает план. после этого идет переоткрытие набора. Это так, на скорую руку, не шипко сильно обдумывая. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:15 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторВот здесь не понятно, а если произошла ошибка, то каким образом откатываются изменения у уже модифицированных данных? авторДля одного понятно, так вот, вопрос следующий - а если нам надо изменить ФИО у двух человек, причем либо у двух, либо ни у кого, как поступают в таком случае, как такую модификацию вкладывают в транзакцию? Ну если так, то тогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак. Либо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо (вообще лучше избегать клиентских транзакций) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:23 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
автор- каким образом в дельфи разрешается конфликт модификации данных (например, два пользователя редактируют одну запись - первый сохранил, а потом второй сохранил, какие данные получатся в итоге. Или для этих целей используется ХП сервера, тогда какой принцип в этом случае применяете ) Вот тут я приводил готовое решение, проверенной практикой, которое не нагружает сервер открытыми транзакциями, как это пытаются делать начинающие при работе с сервером. ADO & SQL Server , блокировка записей автор- каким образом в дельфи происходит посылка команды на сервер (меня устроит ответ есть такая ф-ия/компонент) Я использую компонент TClientDataSet, суть которого понятна из названия - а основное назначение - кэшировать изменения, вносимые пользователем на клиенте. К TClientDataSet привязан компонент TClientUpdate (собственной разработки) который имеет три свойства UpdateSQL, InsertSQL, DeleteSQL. В котором на этапе дизайна прописывают хп или инсрукции SQL с параметрами. при вызове метода TClientDataSet.ApplyUpdates для каждой измененной (I, U, D) записи происходит подстановка параметров из клиентского датасета и отправка инструкции на сервер. Все инструкцуии в одной транзакции. В случаи успешного коммита кэш TclientDataSet сбрасывает признак модификации записей. автор- каким образом в дельфи реализован механизм внесения новых данны (т.е. создание новых записи в табличке, вводим накладную - как строки передаются на сервер) В приниципе, Выше описал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:25 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygraМожно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:26 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Диченко tygraМожно. Как просто текст. А там, в ХП, разбирать как XML. Правда я такое не делаю. Не очень я люблю XML :) -- Tygra's -- А можно ли открытый датасет, связанный с гридом, преобразовать в XML ? Или XML-документ нужно ручками набивать ? Да, если это TClientDataSet , то с помощью его метода Код: plaintext где Код: plaintext ValuеMeaningdfBinaryInformation is encoded in binary format.dfXMLInformation is encoded in XML with extended characters encoded using an escape sequence.dfXMLUTF8Information is encoded in XML with extended characters represented using UTF8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:31 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
tygra Всё, понял. tygraтогда можно либо открыть клиентскую транзакцию и сделать так, как у pkarklin - отправить одно за одним изменения на сервер - и если все ОК, то закоммитить, если Ошибка, то роллбак. Надо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции tygra(вообще лучше избегать клиентских транзакций) И я тоже так считаю tygraЛибо можно запихать данные во временную таблицу на сервере - тоже через ХП один за одним, а потом вызвать соответствующую ХП, которая используя временную таблицу сделает все изменения, тогда транзакцию открывать только в ХП, с клиента не надо Тоже использую такой прием. Так получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья. ("Мы с тобой одной крови" (с) Р.Киплинг ) pkarklin pkarklinИ так, как бы это делал я. на сервере должна как минимум быть таблица: Да, ладно не до такой же степени, конечно в дельфи меня и начинающим назвать трудно. Спасибо, вроде основные моменты понятны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:34 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
авторНадо же, Borland ни чем не отличается от MS, в фоксе тоже есть такое понятие клиентской транзакции Клиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Например, в документе (шапка, табличная часть, связанные документы...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:38 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
pkarklinКлиентская транзакция означает только то, что инструкции BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN оправляются с клиента. Что в принципе не есть гуд. Но без этого никуда при реализации кэшированных изменений, да еще в более чем одном датасете. Вот это жаль, хотя в Фоксе тоже примерно также обстоят дела, просто там немного полегче и можно извернуться по другому, но это уже тонкости о которых и Вы мне можете нарасказывать целую кучу подробностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:45 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
PaulWistТак получается , что Фокс и Дельфи если уж не родные, то во всяком случае двоюродные братья... А причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал? P.S. Для разрботчиков FoxPro - примеры как использоваит ADO находятся в общей справке в разделе - "OLE DB Provider for Visual FoxPro" (это я так, на всякий случай для начинающих написал)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 16:56 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Sergey ChА причем здесь Фокс и Дельфи? Все изложенное выше относится к описанию принципов работы с данными ADO (ADOX) - который одинаков для многих сред разработки и немного отличается синтаксисом этих сред... В свое время он позиционировался как универсальным... Неужели стал? Ээ... простите, и где в этом топике, кроме Вашего упоминалось ADO? Хотя да для получения Forwardonly курсоров на клиенте для заполнения датасетов я использую TADODataSet,а для отправления команд, не возвращающих данных TADOCommand. Но функционал ADORecordset не используется, ибо невозможно его использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:10 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
А в чем преимущество ADO над ODBC ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:12 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
В том, что ADO - родное для MS SQL (отсюда много возможностей и т.д.). А ODBC - надстройка над ... (функционал урезан, т.к. универсальность нужна и т.д.) Точнее и в терминах может кто другой расскажет :)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:34 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Ну да , ну да. ADO, c его навигацие, и особенно его юзание через DataSet ,а счас(NET, в котором может лежать коллекция DataTable) - это наверное круто ;) А для не особо одаренных в фоксе есть компонента COMUTIL(так по моему?) , причем мелкомягкая. Элементарно конвертит RS->CURSOR, наслаждайся после этого и навигацие и свободой манипуляций. А ты тут трешь ност своим дельфи. Это вообще что такое ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 22:02 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Вопрос у меня... Тигра упомянул, что в технологии КС все делается через ХП (ну может не все но я так понял) То есть: у меня кнопка "сохранить данные" я пишу ФС (фокспровщик я) там я делаю INSERT INTO ... VALUES (то что в контрролах формы) (утрированно написал но понятно надеюсь) то есть команда выполняется на клиенте, что и подразумевает ФС если сделать КС то: под той же кнопкой ишется "Эй Сервер - выполни ХП номер 25 с параметрами (то что есть в контролах данной формы)", а уже в ХП номер 25 будет этот инсерт написан Тигра я правильно понял? или же это во мне наследие мышления ВФоуспровщика говорит? Надеюсь, что я правильно все понял, в сторону такого подхода работы давно присматриваюсь... так как понимаю метод хорош НО.. однажды на каком-то форуме прочел сообщение: "желательно не перегружать сервак Хранимками..."а, исходя из моих пониманий при таком подходе ХП-шек будет немало... так как же так? 1 - надо юзать ХП и это удобно 2 - не перегружайте... Поясните??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 09:01 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Если Вы не возражаете - то я немного отвечу про ХП (близко к ним триггеры). Их основное назначение придать любой операции изменения данных "осмысленный характер" - то есть там прописывается вся логика (например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... Далее - все клиенты базы данных удаляют счета только через эту процедуру путем передачи параметров (если они знают о существовании этой ХП ) По поводу неперегружать - каждое действие требует ресурсов - и сервер баз данных очень легко "ставят на колени" десяток активных пользователей - отсюда резко лезет вверх цена на серверное железо и на саму программу обслуживания - SQL Server В технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... В принципе прагматичные американцы подсчитали, что при числе клиентов менее 50 - выгодны и эффективны во всех отношениях файл - серверные системы, но (большое НО) у Microsoft остался только FoxPro в этом классе задач... и все (Access - не в счет - так как это несерьезно)... Вот и насаждается везде идеология КС - там где надо и не надо... P.S. Это мое сугубо личное мнение и не претендует на истину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 11:30 |
|
||
|
Технология КС в дельфи
|
|||
|---|---|---|---|
|
#18+
Sergey Ch(например, удаляя заголовок счета - Вы удаляете и все записи из этого счета). Оформляете это в виде процедуры с параметрами - единственное отличие от файл-сервера в том, что данная процедура сохранена в самой базе данных... ... это мне известно конечно же... Sergey Ch(В технологии КС уже не дашь просто так свободу просмотра данных как мы привыкли давать клиентам в наших приложениях FoxPro... В идеале - там надо работать так: послал запрос на одну запись, получил ее, обработал, послал обновление на серер... и все... ... да но можно же и в ВФП послать команду выполнения ХП с параметрами, или же написать обновление на клиенте... значит ли это, что при использовании ХП, я, как бы перекидываю мостик к технологии КС??? Ведь по идее - я перехожу напрочь на ХП (в идеале, ибо не будет этого.. так как с ВФП мне не слезть...) СУБД меняется, но на клиенте-то у меня кода минимум, все в ХП, которые портируются на другую СУБД и вперед... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 13:20 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32889349&tid=1594953]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 400ms |

| 0 / 0 |
