'Разделение' БД между клиентом и сервером
Создается клиент-серверное(TCP\IP) приложение с БД, а именно тестирование.
Насколько разумно 'вешать' всю базу целиком на сервер, если каждый клиент все-равно будет запрашивать содержание самих тестов у сервера, а редактирование тестов на клиентах невозможен.
Ответы тестируемых, естественно, будут записываться в БД на сервере..
Какое решение посоветуете?
Единственная разумная причина для такого разделения заключается, по-моему, в организации возможности оффлайн-тестирования. В этом случае ответы пишутся в базу на клиенте, а на сервер передаются при запуске синхронизации.
Если требуется дополнительная обработка - типа шифрования/дешифровка и т.п. - наиболее оптимально в такой задаче использовать трехзвенку, правда при условии, что клиенты и сервер находятся в одном домене. Тогда клиент будет запрашивать все необходимые данные на сервере.
Если же предполагается удаленная работа, тогда локальную базу иметь стоит в качестве буфера для передачи данных и хранения относительно постоянных данных. По крайней мере именно таким образом я реализовывал клиентов в своей задаче.
а почему нет? и какие альтернативы ты видишь? вполне нормальное решение.
Я вижу два способа решения данной задачи:
1) База с вопросами лежит на каждом клиенте, соответственно никаких данных они(клиенты) у сервера не запрашивают. При прохождении теста данные о пройденном тесте(тестируемом и т.д.) отсылаются клиентом на сервер и пишутся в общую таблицу(ы) в БД на сервере.
2) Базы на клиенте никакой нет.. Все данные лежат на сервере. При запуске каждого следующего теста(их несколько) клиент отсылает запрос на соответствующие данные серверу, сервер же, в свою очередь, отсылает соответствующему клиенту что он хочет..
В этом и состоит вопрос: нужно ли все данные хранить на сервере или можно хранить их у себя (на клиенте). Ведь тогда отпадет необходимость запрашивать кучу данных(я не про объем, а про разную структуру) у сервера.
Оговорюсь, что данные не confedential, т.е. 'прятать' их на сервере смысла не имеет!!
..
Единственная разумная причина для такого разделения заключается, по-моему, в организации возможности оффлайн-тестирования.
..
В оффлайне можно запустить и сервер и клиент на одной банке!..
Хранить у себя можно, но в твоём случае это не лучший вариант.
Догадываюсь ;) Но что ты будешь делать, если тебе надо проводить тестирование не на одной машине, а на десяти и они соединены в сеть? Писать новый вариант программы (вероятность так спроектировать программу для локальной работы клиент-сервер, что она не сможет работать по сети не так уж и мала)?
Имхо, лучше всё же использовать одну базу.
А под оффлайном я подразумевал работу с сервером, скажем, в другом городе и при плохом канале связи. ;)
Хранить у себя можно, но в твоём случае это не лучший вариант.
Аргументируй, пжлста.
..
Но что ты будешь делать, если тебе надо проводить тестирование не на одной машине, а на десяти и они соединены в сеть? Писать новый вариант программы (вероятность так спроектировать программу для локальной работы клиент-сервер, что она не сможет работать по сети не так уж и мала)?
..
Вот это вообще не понял!
..
А под оффлайном я подразумевал работу с сервером, скажем, в другом городе и при плохом канале связи.
..
Что это за 'оффлайн' такой?:confused: :D