Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
demsev
0 / 0 / 0
Регистрация: 14.07.2010
Сообщений: 58
1

Вопрос по сетевой программе

30.03.2012, 22:58. Просмотров 1927. Ответов 15
Метки нет (Все метки)

Всем доброго времени суток!

Меня попросили написать сетевую программу, но опыта по ним нет, т.к. раньше с таким не сталкивался.
Заказчик просит использовать базу MS SQL. Я понимаю, что она намного лучше для работы с сетью, чем Acсess, но я с ней никогда не работал.
Из выше сказанного возникают вопросы.
1. Подскажите, стоит ли писать сетевую прогу, работающую с базой Access?
2. Подскажите, пожалуйста, основные нюансы при создании сетевых программ.
3. Какой протокол лучше использовать?

Всем заранее огромное спасибо!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 22:58
Ответы с готовыми решениями:

Как создать кнопку Следующий вопрос в программе тестирования
у меня есть два файла, один файл с вопросами, другой с ответами, мы их считываем в два массива,...

Как в программе тестирования избежать создания формы под каждый вопрос
Уважаемые опЫтные и не очень программисты, кто делал тестирование на вб, подскажитее как делали,...

вопрос про сетевой адрес
Здравствуйте! Я слышал, что все сетевые устройства имеют MAC-адрес - это такой уникальный сетевой...

Вопрос про сетевой фильтр
Наткнулся на интереснейший пост на блоге товарища CS (наверняка он обитает тут, не уверен под этим...

Сетевой доступ под паролем. Вопрос...
Доброго времени суток всем, кто читает эту тему. Ситуация: одноранговая сетка на ХР Proff....

15
ORST
1 / 1 / 0
Регистрация: 01.05.2011
Сообщений: 203
31.03.2012, 21:10 2
Я думаю что лучше всего используй TCP/IP .
А лучше зайди на VBStreets.ru, там помоему чтото есть из исходников по данной теме.
0
igor_c
0 / 0 / 0
Регистрация: 04.03.2008
Сообщений: 250
01.04.2012, 13:56 3
Сетевая - это, как я понимаю, для локальной сети, а не для Сети. Тогда TCP/IP можно не трогать.
Access-формат я бы не рекомендовал по ряду причин. MS SQL, или его бесплатный вариант MSDE.
Нюансы связаны с тем, что надо а) экономить трафик б) учитывать многопользовательский режим работы
Подключаться к базе лучше посредством ADO
0
NickStaves
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
01.04.2012, 15:41 4
хм ... сетевую программу.

уточни плз требования чего она должна делать

потому если это должно быть нормальное разделение UI/BL (бизнес логика), то в принципе и аксес подойдет потому как сие разделение подразумевает создание 1го сервера (обрабатывающего BL) и кучу клиентов. Этот сервер спокойно может стать на классной производительной машинке и преспокойно может иметь доступ к mdb файлу аксеса.
А если сервера как такового не нада и вся логика выполняется клиентами - то при использовании аксеса файл базы приходицца шарить, что не есть хорошо.
А при использовании MSSQL ты получаешь торчащий в мир сервак, к токорому можешь подключится с любоко клиента на прямую.
0
01.04.2012, 15:41
demsev
0 / 0 / 0
Регистрация: 14.07.2010
Сообщений: 58
01.04.2012, 18:11  [ТС] 5
Всем огромное спасибо за помощь!

Уточняю смысл программы.
Программа должна:
- поддерживать до 30 клиентов;
- работать в режиме реального времени,т.е. все изменения должны быть видны сразу.

Вся работа происходит в пределах локальной сетки.
На одном кампе должна быть программа-сервер, а на остальных-клиенты, которых может быть до 30, т.е. все запросы от клиентов обрабатывает сервак.
Программа основана на работе с единой базой данных.

И еще.
При коннекте клиента добавляем в массив еще один Winsocket.
Как правильно организовать одновременную обработку запросов от клиентов, если все запросы обрабатывает одна и та же процедура.

Всем респект!
0
NickStaves
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
02.04.2012, 12:10 6
уже лучче

токо мой тебе совет - трижды подумай перед тем как писать аля свой сервак приложений через сокеты. VB имеет большой рак с потоками. Их реализация подобна хождению по минному полю и если тебе важен результат - советую от них отказаться. Если же их не использовать - получаешь то, собственно, о чем спрашиваешь

Советую создавать серкак как COM+ приложение. Родная вещь для VB - работает сносно - уж поверь - потом легче решать проблемы с ней, чем со своей реализацией обмена данными через сеть (у сокетов своих муравьев хватает).
0
Messir
02.04.2012, 14:19 7
Ну, по-хорошему вообще неплохо клиентам коннектиться непосредственно к БД, без всяких программ-серверов. Так будет и быстрее, и надежнее.
Но если без программы-сервера не обойтись - то куда проще и удобнее использовать именованные пайпы, т.к.:
а) работать с нима куда проще, чем с сокетами.
б) не надо отлавливать кучу сетевых ошибок.
в) (самое главное) они поддерживают транзакции.
Mz@2
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
07.04.2012, 19:05 8
[bold]to Messir:[/bold]
[italic]"...неплохо клиентам коннектиться непосредственно к БД, без всяких программ-серверов."[/italic] - А как на счет многопользовательского доступа и возможных коллизий (ведь вопрос был про Access)?

[italic]"они поддерживают транзакции"[/italic] - если можно, поподробнее пожалюйста, что имеете ввиду?
0
NickStaves
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
08.04.2012, 10:22 9
уж извините, что вклиниваюсь ...

"...неплохо клиентам коннектиться непосредственно к БД, без всяких программ-серверов." - А как на счет многопользовательского доступа и возможных коллизий (ведь вопрос был про Access)?

как я понял автору просто в новинку MSSQL и он рассматривает возможность не соскакивать с родного движка. А колизии могут быть как при коннекте непосредственно к БД так и через сервер (в случае если он многопоточный)


"они поддерживают транзакции" - если можно, поподробнее пожалюйста, что имеете ввиду?

почитайте про то какие есть пайпы и все станет на свои места.
0
Mz@2
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
14.04.2012, 00:37 10
Автор топика писал про 30 пользователей и базу на Access. В таком случае, если напрямую коннектиться в Access, то неизбежны коллизии и не будет никаких средств для их разруливаний. Однако, если будет посередке сервер (естественно, многопоточный, хотя необязательно), можно сериализировать общение с Access с помощью критических секций или других средств синхронизаций. И в данном случае, хотя я очень не приветствую применение Access, только посредник-сервер может спасти от неминуемого краха базы. Я также очень не советую пытаться писать этот сервер на VB по нескоьким причинам:
-во-первых, VB (точнее объект Err) не дружит с потоками,
-во-вторых, сервер лучше писать в виде сервиса, что легче сделать например на Си
-в-третьих, сервер на VB+Winsock будет пожирать ресурсы,
наверное этого уже достаточно.

А про пайпы я кое-что и так знаю, но транзакции применительно к теме топика чего-то не врублюсь...
0
Messir
15.04.2012, 15:37 11
Цитата Сообщение от Mz@2
А про пайпы я кое-что и так знаю, но транзакции применительно к теме топика чего-то не врублюсь...
См. тут: http://msdn.microsoft.com/library/de...amed_pipes.asp
Mz@2
1 / 1 / 0
Регистрация: 22.04.2011
Сообщений: 47
16.04.2012, 00:36 12
Год назад передо мной стояла подобная задача. Я написал сервер-посредник на сокетах. Вообще-то я начинал именно с пайпов, но больше 396 байтов за 1 раз через них передавать не удавалось, а мне это не очень понравилось. В конечном итоге, спасибо Messir'у, написал многпоточный сервер в виде сервиса на Си с использованием асинхронных сокетов. Работает до сих пор и не плохо.
Правда в качестве БД у меня MySQL и соответственно, проблем с многопоточным доступом нет. А почему не дал прямой доступ к серверу: потому, что на тот момент MySQL не поддерживал хранимые процедуры, а для реализации всего функционала без этого, требовалось предоставлять слижком большие привилегии пользователям, что было недопустимо с точки зрения безопасности системы.
0
CatsTail
05.05.2012, 00:03 13
А по-моему, лучшее решение - это WEB-приложение.
demsev
0 / 0 / 0
Регистрация: 14.07.2010
Сообщений: 58
05.05.2012, 17:43  [ТС] 14
Цитата Сообщение от CatsTail
А по-моему, лучшее решение - это WEB-приложение.
Я предлагал им это, но они хотят именно прогу для сети.
У них просто свои планы на ее будущее.
0
Messir
06.05.2012, 20:39 15
Цитата Сообщение от CatsTail
А по-моему, лучшее решение - это WEB-приложение.
А без разницы
Если использовать аксесс - то и в веб-приложении коллизии будут.
А если нормальный сервер - то абсолютно все равно, как его реализовывать.
CatsTail
07.05.2012, 09:41 16
Но Web-приложение не нужно инсталлировать... А клиент-серверную самоделку придется. На каждом рабочем месте.
07.05.2012, 09:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2012, 09:41

Сетевой принтер hp 3435dn зависает в программе 1С
Подскажите пжл, есть сетевой принтер hp3435dn,доки с ОС печатают без тормозов, но с программы 1с...

Вопрос по ограничению доступа к сетевой папке из 2-х сетей
Приветствую! Ситуация: есть комп, который 2-мя сетевухами смотрит в 2 сетки, локальную...

Вопрос по сетевой базе данных в Access 2007
могут ли несколько пользователей работать с размещенным на сетевом диске файлом локальной базой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.