Многопоточность, Сеть

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

fire_on_line
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 16.04.2009 (Чт) 22:58

Многопоточность, Сеть

Сообщение fire_on_line » 16.04.2009 (Чт) 23:35

Помогите выработать план действий:

Есть порядка 150 устройств (контроллеры системы контроля доступа в помещение) с ethernet интерфейсом, протоколом udp или tcp/ip выступающих в роли серверов. Мне необходимо к ним подключиться и получать данные (приблизительно одно сообщение в 2 секунды с каждого контроллера, при пиковой нагрузке) иногда отправлять команды, полученную инфу писать в ms sql server 2005.

Единственное что мне приходит в голову:

создать 150 tcp/ip подключений, каждое в отдельном потоке, и при получении данных создавать отдельных поток для связи с sql сервером и сохранения оных. Правда сей вариант кажется мне слишком ресурсоемким, или по другому не как?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Многопоточность, Сеть

Сообщение Williams » 17.04.2009 (Пт) 9:18

Мне кажется, что можно обойтись меньшим колличеством потоков. Кстати, в .NET можно создавать тредпулы
И вы думаете, что вас оставят в живых после прочтения этого поста?

fire_on_line
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 16.04.2009 (Чт) 22:58

Re: Многопоточность, Сеть

Сообщение fire_on_line » 17.04.2009 (Пт) 12:21

Williams писал(а): Мне кажется, что можно обойтись меньшим колличеством потоков.


Можно по подробней :?:



Williams писал(а): Кстати, в .NET можно создавать тредпулы


Я так понимаю имеется в виду:

Код: Выделить всё
     
        Dim t As New Thread(AddressOf ThreadProc)
        t.Start()


или что то другое?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Многопоточность, Сеть

Сообщение Williams » 17.04.2009 (Пт) 12:55

Имелся в виду ThreadPool Class (System.Threading).

"По-подробнее" зависит от тебя, ну и во многом от времени обработки каждого сообщения. Нужно больше информации, на вскидку сказать трудно
И вы думаете, что вас оставят в живых после прочтения этого поста?

fire_on_line
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 16.04.2009 (Чт) 22:58

Re: Многопоточность, Сеть

Сообщение fire_on_line » 17.04.2009 (Пт) 13:49

Контроллер системы безопасности посредством RS232 подключён к модулю TCP/IP сервера последовательных устройств (http://www.tibbo.ru/item/6/4/) который позволяет или создать на ПК виртуальный ком порт, или в терминальном режиме напрямую передавать/принимать данные.Возможно как UDP так и TCP/IP соединение.

Алгоритм такой : Я создаю и поддерживаю TCP/IP соединение с контроллером , в какой то момент времени, человек проводит карточкой по считывателю, контроллер считывает и передаёт номер карточки, я должен:
1. принять номер карточки
2. создать запрос к ms sql server для сохранения времени обращения и получения прав пользователя
3. в соответствии с полученными правами, послать команду контроллеру на отклонение или разрешение доступа.
Плюс мне надо вложиться в 2-3 секунды
Я прекрасно понимаю как всё это сделать с одним подключением. Но для 150 я могу придумать только 150 потоков…. :(

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Многопоточность, Сеть

Сообщение ANDLL » 17.04.2009 (Пт) 16:05

Williams писал(а): Кстати, в .NET можно создавать тредпулы

Нет, нельзя создавать. Он один есть.

создать 150 tcp/ip подключений, каждое в отдельном потоке, и при получении данных создавать отдельных поток для связи с sql сервером и сохранения оных.
Зачем отдельный поток для связи с сервером? А в плане чтения - все равно никуда ты не денешься от 150 потоков, но если они правильно организованы, то это не так и страшно
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

fire_on_line
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 16.04.2009 (Чт) 22:58

Re: Многопоточность, Сеть

Сообщение fire_on_line » 17.04.2009 (Пт) 16:31

ANDLL писал(а):
Williams писал(а): Кстати, в .NET можно создавать тредпулы

Нет, нельзя создавать. Он один есть.

создать 150 tcp/ip подключений, каждое в отдельном потоке, и при получении данных создавать отдельных поток для связи с sql сервером и сохранения оных.
Зачем отдельный поток для связи с сервером? А в плане чтения - все равно никуда ты не денешься от 150 потоков, но если они правильно организованы, то это не так и страшно


Я вот тут подумал: а если вместо tcp/ip подключений сделать масив UDP соединений, проверять их на наличие данных в одном потоке, простым перебором, а в случае обнаружения выносить обработку для каждого подключения в отдельный поток.Таким образом 150 потоков будет только при пиковой нагрузке, правда я не могу найти у класса UdpClient аналог свойства Available класса TcpClient

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Многопоточность, Сеть

Сообщение Dmitriy2003 » 20.04.2009 (Пн) 15:27

fire_on_line писал(а):Есть порядка 150 устройств (контроллеры системы контроля доступа в помещение) с ethernet интерфейсом, протоколом udp или tcp/ip выступающих в роли серверов. Мне необходимо к ним подключиться и получать данные (приблизительно одно сообщение в 2 секунды с каждого контроллера, при пиковой нагрузке) иногда отправлять команды, полученную инфу писать в ms sql server 2005.


сдается мне эта схема изначально уязвима. "контроллеры системы контроля доступа в помещение" - имеют ли возможность отпровлять запрос на определенный адресс + порт ? (по хорошему ведь так должно быть, зачем серверу опрашивать клиентов это не рационально :!: )

fire_on_line
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 16.04.2009 (Чт) 22:58

Re: Многопоточность, Сеть

Сообщение fire_on_line » 21.04.2009 (Вт) 21:50

Могут, но только по UDP, в принципе я уже с этим смирился.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 70

    TopList