|
|
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Люди, помогите. Вопрос такой! Где лучше проверять корректность данных на клиенте и максимально упростить хранимую процедуру или на сервере и максимально упростить код приложения?? Расстолкуйте, пожалуйста!!! Заранее спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 17:36:43 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Вообщето, SQL сервер специально для этого затачивался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 17:38:20 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>Александр Гладченко А если сервер тормозной? Если вы скажите всё равно лучше сервер, то встречный вопрос (заранее скажу объем данных очень больной около 2 000 000 записей) Вопрос: у меня 4 входных параметра в ХП 1 вариант- я всё проверяю на сервере, и проверяю корректность тех всех 4 вх парам в своей ХП 2-вариант нахожу золотую середину и что-то проверяю на клиенте что -то на сервере. 3-вариант- все на клиенте, увелививая таким образом код на километры. К чему я веду. Все 4 -е входных параметра участвуют в одной выборке, и если не полностью, но корректно будут указаны, то я не попаду в ключ к примеру и ХП будет выполняться до бесконечности долго, но если же я максимально упрощу ХП, и передам в неё кусок selecta к примеру передам строку: "where param1=@1 and param2=@2 ...", то она будет выполняться очень быстро! Какой вариант мне выбрать из 3х мною описаных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 17:59:04 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Заведи сервер-прилоржений (middle tier) :) Почему обязательно должна быть двухзвенка . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 18:23:15 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>Осирис Расскажи по-подробней, что это такое за сервер- приложений! если нетрудно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 18:31:17 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Сервер приложений ? Ну это тоже самое что и middle tier :) На самом деле в инете куча материалов по этому делу. Ну если коротко и сбивчиво то так: почему стоит ограничиваться двухзвенной архитектурой (сервер - клиент), почему нельзя зделать третье звено, четвертое, n-ое (n-tier) ? Мы так далеко не пойдем, а остановимся на трехзвенке. В данном случае схема взаимодействия будет выглядеть следующим образом (сервер - middle-tier - client). То есть, есть клиент (он кстати может быть толстым - GUI и тонким - web-интерфейс) - пользователь что-то выбирает и жмет клавиши. На основе этого клиент посылает middle-tier информацию о том, что пользовател ввел то то и то то и нажал то-то и то-то. Или попросту говоря вызывает какой нибудь метод этого среднего звена. Способов реализации этого до фига и многое зависит от того, на каком языке ты пишешь. Это может быть сделано и на основе Sockets, и на основе DCOM, и на основе MIDAS (в Delphi и Builder'е) точно. Middle-tier обрабатывает полученную информацию, проверяет ее и посылает запрос в БД, БД возвращает набор данных на middle-tier, а middle-tier возвращает данные клиенту. Таким образом мы можем получать очень легкого клиента (практически один интерфейс), и сравнительно мало загруженный сервер баз данных. Плюс к этому вся логика у тебя сосредоточена на middle-tier (на одном компе) и в случае изменения функциональности тебе будет достаточно изменить файла на этом компе. Плюс множество дополнительных полезных фич, таких как кэширование на middle-tier возвращаемых наборов данных и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 18:55:55 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>Осирис Спасибо, что ввёл в курс дела, будем изучать MIDAS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:02:25 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
могу добавить к выше сказанному что middle-tier можно расположить на другой машине... т.е. вы можете распределять ресурсы(нагрузку).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:06:35 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>> могу добавить к выше сказанному что middle-tier можно расположить на другой машине... т.е. вы можете распределять ресурсы(нагрузку).... Я это и подразумевал. При увеличении нагрузки на middle-tier вы можете как увеличивать характеристики машины, так и завести под это дело еще один комп. То есть, часть клиентов у вас будет коннектится к первому компу из middle-tier, часть ко второму. А каждый из них будет работать с одним и тем же SQL Server'ом. Если пойти дальше, то можно сделать такую штуку - перед коннектом клиента к middle-tier он оценивает(запрашивает) загрузку как первого компа принадлежащего middle-tier, так и второго и уже на основании этой информации решает к кому коннектиться. Есть только здесь одна тонкость, которая портит мне всю жизнь :) В случае с middle-tier SQL-Server считает, что к нему коннектится один клиент (middle-tier) (хм. мы еще и экономим на лицензии :). При этом, если возникают блокировки, то мы уже не можем определить кто конкеретно из клиентов вызвал эту блокировку. SQL Server показывает на middle-tier, а вот дальше проследить источника проблем мы уже не можем.... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:14:53 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>> Спасибо, что ввёл в курс дела, будем изучать MIDAS Работал с ним в Дельфях - там все очень хорошо и красиво реализовано. Кажется по Midas у меня была неплохая документация, так что если тебе нужно - напиши, я вышлю. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:16:25 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
При этом, если возникают блокировки, то мы уже не можем определить кто конкеретно из клиентов вызвал эту блокировку при правильной реализации - можно отследить.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:20:42 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>> при правильной реализации - можно отследить.... Вот это уже интересно. Каким образом ? Жизнь себе, я все равно не облегчу, так как наше middle-tier реализовано не нами, а мы можем его лишь слегка модифицировать. Но все равно очень интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:24:23 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Сначала автор вопроса спрашивает, где проверять данные (наверное имея ввиду данные, которые хранятся в таблице). Затем он пишет в неё кусок selecta к примеру передам строку: "where param1=@1 and param2=@2 ...", то она будет выполняться очень быстро! из чего можно заключить, что его интересует не проверка данных, а проверка входных параметров (т.е. того, что ввёл пользователь). Это абсолютно разные вещи. Что касается трёхзвенки или MIDAS, то завтра возникнет вопрос "а где лучше проверять данные, во 2-м звене или третьем? " и вопрос останется нерешённым. Данные желательно контролировать на сервере. Очень часть стандартных возможностей CONSTRAINT и приходится дописывать хранимые процедуры, функции, триггеры, которые реализуют более ложные алгоритмы контроля, чем PRIMARY KEY, CHECK или FOREIGN KEY. Параметры желательно контролировать на клиенте, до отправки на сервер. Т.е. пользователь ввёл неправильные данные в поле экранной формы - и сразу получил сообщение об ошибке. Если одинаковые фунции контроля используются в разных приложениях, то можно выносить эти функции в библиотеки общего пользования (которые можно оформлять в виде DLL или COM или OLE-объектов). COM или OLE-объект может назодиться и на сервере (т.е. можно использовать DCOM-технологию Microsoft). Но в этом случае приложение на клиенте должно знать не только имя объекта, но и имя компьютера, на котором этот удалённый объект находится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:31:07 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
имперсонате....сквозная авторизация..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 19:31:53 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Извините, мимо шел, но что такое для СКЛ сервера 2 млн. записей - может это и не сервер вовсе, а так игрушка. Если , кто мне скажет, что для 2000 СКЛ это напряг - завтра ухожу на Оркал. И не надо огород городить с МИДАСОМ (конечно классная полезняшка) - он полохо кончил, или почти. Другой вопрос , что в нашей базе 52 табл. и парочка из них содержит 120 полей , да под 4 млн., да на ОДБСи и усе пучком. 2000000 - трудно-НЕВЕРЮ!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 09:32:45 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Так человек, спросил, как будет лучше. Никто и не говорил, что невозможно. >> И не надо огород городить с МИДАСОМ (конечно классная полезняшка) - он полохо кончил, или почти. Ну это еще не известно, а потом MIDAS это еще не весь middle-tier. Или DCOM тоже близок к кончине ? :) Могу привести еще один плюс трехзвенки - независимость от сервера баз данных. При грамотно написанном среднем звене, я могу работать как с SQL Server'ом, так и с Oracle не меняя приложения. В принципе я так и делаю. Хотел бы я посмотреть, как вы будете переносить все триггеры и хранимые процедуры с MSSQL на Oracle. Опять же, не говорю, что это не возможно, но зачем, когда можно решить эту проблему меньшей кровью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 11:53:20 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
2 Осирис Могу привести еще один плюс трехзвенки - независимость от сервера баз данных. При грамотно написанном среднем звене, я могу работать как с SQL Server'ом, так и с Oracle не меняя приложения. В принципе я так и делаю. Хотел бы я посмотреть, как вы будете переносить все триггеры и хранимые процедуры с MSSQL на Oracle. А Вы что, триггеры и хранимые процедуры вообще не используете при трехзвенке? :) А зачем Вам тогда SQL Server, на dbase все также будет )))) Трехзвенка, мне так думается, прежде всего для случаев, когда напрямую к серверу нельзя подключиться - через инет, например, а все другие случаи - это так, для красоты и самовыражения. :) И никак трехзвенка на заданный вопрос не отвечает. Обработку корректности данных конечно на сервере нужно делать. Тогда все действия по добавлению в клиента еще одного вызова процедуры будут очень просты, а иначе придется везде городить городушки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 12:23:11 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Какая-то часть данных может быть проверена на клиенте, а какая-то часть данных на сервере. Все зависит от действий выполняемых при проверке данных, а также от важности кооректности данных. Если существует опасность обхода проверки и перадачи ошибочных данных, то данные должны проверяться не сервере. Если при проверке используются статические данные, то скорее всего, проверка должна выполняться на клиенте, если динамические то на сервере. К динамическим данным, я отношу данные которые или могут изменяться другими пользователями, или требуют большого числа обращений к серверу для получения данных. Использование трехзвенки с целью универсальной работы с базами данных, что позволит не учитывать специфику реализации СУБД, типа Oracle, MS SQL, так это приводит к не оптимальным решениям. Трезвенку имеет смысл использовать с целью отделения представления данных на клиенте от обработки и хранения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 13:20:11 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>> А Вы что, триггеры и хранимые процедуры вообще не используете при трехзвенке? :) А зачем Вам тогда SQL Server, на dbase все также будет )))) Ну не утрируй- это не так. А триггеры и хранимые процедуры действительно не используются. Причем не используются не потому, что мы так разработали, а потому, что покупали готовое решение. Насчет оптимальности полностью согласен с вами - действительно с триггерами и хранимыми процедурами оно-то побыстрее бедут. С другой стороны, если речь идет о коммерческом решении, которое будет применяться на крупнейших предприятиях по всему миру, то вполне возможно, что можно слегка пожертвовать оптимальностью, зато позволив клиенту работать с тем сервером БД, с которым он привык работать. >> а все другие случаи - это так, для красоты и самовыражения. :) Как сказать. Если каждый день мы дописываем ту или иную часть в приложении, то возвожность заменить на одном копмьютере middle-tier не меняя клиентов мне уже не кажется пустяком. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:11:43 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Изменить что-то, не меняя клиентов - это значит изменить это что-то в обработке данных, но не в их представлении. То же самое я могу сделать в хранимой процедуре, это даже проще. А уж если серьезное приложение и его массово продают фирмам, то уж тут не фирма диктует, на чем БД работает, потому как фирма покупает конечный продукт. Ну что-то мы уже не в ту степь пошли, человеку то другое надо было :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 16:47:45 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
>> Ну что-то мы уже не в ту степь пошли, человеку то другое надо было :) Соглсен, но вопрос был задан соответствующе. :) Решая вопрос о том, где проверять корректность данных нужно учитывать множество факторов, например таких как для чего предназначена система, как и гед ее собираются эксплуатировать, она для себя или на продажу, сколько будет пользователей и как интенсивно они будут работать, будет ли нужен доступ через интернет и т.д. Не сформулировав все эти требования человек в ответ получает лишь общие соображения и рекомендации :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 09:08:01 |
|
||
|
Что лучше- клиент или сервер?
|
|||
|---|---|---|---|
|
#18+
Я использую самый безотказный вариант - на клиенте проверяю все, что можно проверить на этапе подготовки для сервера входящих данных без сложной обработки (например значение поля заведомо не подходит), а на сервере проверяю все, в том числе даже то, что проверяется на клиенте и ошибки, которые заведомо не могут возникнуть при правильной работе, но могут серьезно повлиять на правильность данных или же логику какой-то обработки данных . Проверять на сервере надо все, потому что от этого зависит целостность и правильность данных БД и согласитесь если генерируется ошибка, которая по идее при правильной работе сервера и клиента не должна происходить, то в работе программы что то не так, и лучше такую ошибку увидеть, чем получить плавающий глюк. На клиенте тоже проверяйте все, что можно проверить без дополнительного обращения к серверу - экономия трафика, гибкость (проверка по ходу ввода документов, а не при попытки их записи в БД), и кстати тоже тестирование (т.е. если сервер возвращает ошибку на данные, которые клиент посчитал безошибочными, то явно ошибка обработки логики или в клиенте, или же в сервере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 09:44:34 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3383&tid=1819041]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 297ms |

| 0 / 0 |
