|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
.NET 4.x Асинхронное клиент серверное приложение05.09.2017, 16:33. Показов 3724. Ответов 20
Метки нет (Все метки)
Всем доброго времени суток, а так же спасибо всем кто загляну и не прошёл мимо.
Сразу предупреждаю, вопросов от меня будет много, но все они будут по порядку и по мере продвижения проекта. Слать меня в гугль, «курить» маны, в соседние ветки не нужно (разве что только в перуанскую деревню если что %) ) Всё что можно было нагуглено – прочитано, но остались сомнения или недопонимания чего то, поэтому вопросы и будут идти по порядку возникновения проблем, кроме того что то придётся мне изучать на лету. Почему обращаюсь к вам: 1) Ранее никогда не писал асинхронные клиент-серверные приложения на шарпе в общем то и на других языках ибо как бы не было нужды, поэтому острая нужда в направлении меня в нужную сторону, примеры и т.д. (а может уже кто то поделится уже реализованными вещами) 2) меня заставили, так уж сложились звёзды %)) Вопрос: Подскажите, пожалуйста, какую реализацию сервера лучше (оптимально) всего взять в качестве каркаса для будущего приложения. Рассматривается 1) https://docs.microsoft.com/en-... et-example 2) https://msdn.microsoft.com/ru-... 35942.aspx (Листинг 4. Асинхронный сервер)
0
|
|
| 05.09.2017, 16:33 | |
|
Ответы с готовыми решениями:
20
Клиент-Серверное приложение, асинхронное программирование Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
|
|
|
||
| 05.09.2017, 17:10 | ||
|
Это повлияет на то, как его удобнее будет реализовывать.
0
|
||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 05.09.2017, 17:35 [ТС] | |
|
Задача, которую следует решить: Имеется стороннее ПО (нет у него ни апи, ни сетевых функций и прочих вкусностей) стоящее в сегменте ТКСПД (телекоммуникационная корпоративная сеть передачи данных) которое юзает в качестве БД SQLite, необходимо создать свой сервер (который может быть ещё и подчинённым) который будет творить свои «тёмные» вещи с этим сторонним ПО (работать с его гуи по команде и лесть в его БД) и отдавать труды своего творения на клиенты (примерное кол-во будет 2-3к). Всё что касается трудов сервера в отношении стороннего ПО вопросов у меня не вызывает, а вот вопросов о передачи «трудов» у меня много. При этом всём нагромождении юзать WCF нельзя многое бы решил через него, написано должно быть на нет 4.0 с использованием асинхронного сервера и клиентов. По факту как выглядит в глазах заставивших меня - посылается команда на сервер он отрабатывает действие лезит с гуи стороннего по забирает из него что надо и отдаёт это клиенту запросившему инфу, скажем на ПО произошло событие сервак должен взять его и разослать всем подключенным клиентам + ещё они хотят через это сервер ещё обмениваться сообщениями + кое что будет передаваться из SQLite. Ну в общем как то так
0
|
|
|
|
||
| 05.09.2017, 17:44 | ||
|
0
|
||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
||||||
| 05.09.2017, 18:01 [ТС] | ||||||
|
Проблемы по факту:
1) во мне так как ранее не работал с асинхронными клиентами и серверами - но это восполнится быстро, хотелось бы изначально выбрать правильный каркас с которого начать и двигаться, а не перепиливать потом. Поэтому пересмотрел все варианты (во многих что то понятно а что то нет) приглянулись 2 указанных из них решил выбрать но открыт и для других предложений в примере от майкрософта напрягло
2) Проблема в моём начальстве которое не шарят в программировании но зато умеет придумывать всякие вкусности прикрываясь словами "в тренде", "инновации" и т.д. 3) В ОЗИ (отделе защиты информации) которые запретили юзать WCF, сервак и клиент должен быть написан полностью от и до без использования сторонних библиотек с использованием асинхронных сокетов и т.д. и тп. + не облегчает жизнь то что всё это ещё под надзором VipNet координатора в общем все сложно PS: сразу предвкушавшая вопрос где я работаю - ПФР в мухосранске в должности автоматизатора, а так как я единственный который хоть что то пишет пнули в меня
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||
| 05.09.2017, 18:11 | ||
|
2
|
||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 05.09.2017, 18:22 [ТС] | |
|
Я сказал что нельзя пользоваться сторонними библиотеками которые уже реализуют создание сокетов для клиента или сервера, а так же любые другие сторонние библиотеки не входящие в состав .Net 4.0 ну короче если кто то чёто написал и засунул в длл юзать уже нельзя с точки зрения начальства сервак и клиент должен вообще выглядеть в виде одного экзе файла + ини файл настроек и всё, поэтому приходится сочинять собственное говно для работы с файлами экзеля на прямую а не юзать какую нить вкусность аля NPIO. что касается WCF то его тупо нельзя юзать и всё хоть убейся - правила игры сочиняю не я сказали не юзать ни чего из WCF и всё на этом разговор закончен.
В общем пока не получил ответа какую конструкцию лучше юзать 1 или 2 а вопрос пока стоит в этом что лучше взять в качестве каркаса 1 вариант или 2 ну или вообще посмотреть в какую то другую сторону.
0
|
|
|
14289 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,330
|
|
| 05.09.2017, 19:02 | |
|
Coroners, WCF тупо удобнее, чем ручная низкоуровневая работа через TCP, так что рекомендую его (конечно, если не идёт речи о выдумывании своего протокола, или работе с существующим).
Не по теме:
1
|
|
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 05.09.2017, 19:23 [ТС] | |
|
Usaga спасибо конечно за пост но как я уже сказал WCF юзать НИ КАК от слова СОВСЕМ и это уже не обсуждается ни под каким соусом ОЗИ сказали нет значит нет и на их мнение я повлиять не могу и тараканов со стразиками травить в их головах тоже. Так же вам да и наверное мне да и конечному пользаку тоже плевать сколько будет файлов и каких в папке приложения но начальство моё не согласно их видение тупо 1 экзешник + 1 инишник так оно видит, так оно хочет, так оно секурно, безгеморно и т.д. - это их требования а не мои, поэтому я сижу и выдумываю как бы всё это замутить, собственно за этим я сюда и пришёл и пока с единственным вопросом что лучше взять из указанного в первом моём посте, какой сервак из примеров сможет держать больше клиентов, быстрее отрабатывает, стабильнее, не будет разрывать соединение после того как принял данные, не будет рвать соединение по таймауту и т.д. если при дальнейшей реализации будут возникать вопросы я их пошагово и задам, а пока мы остановились на 0 шаге что выбрать в виде каркаса....
0
|
|
|
|
||
| 05.09.2017, 19:44 | ||
|
0
|
||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|||||||||||
| 05.09.2017, 20:03 [ТС] | |||||||||||
|
insite2012 огромное спасибо, но меня настораживает в первом примере использование бесконечного цикла
0
|
|||||||||||
|
|
||||
| 05.09.2017, 20:14 | ||||
Сообщение было отмечено Coroners как решение
Решение
1
|
||||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 05.09.2017, 20:24 [ТС] | |
|
уже 2 ночи и может туплю но означает ли это что всего только 10 клиентов сможет подключится к серверу или это одновременно 10 а пока не умрёт пул ?
0
|
|
|
|
||
| 05.09.2017, 20:47 | ||
|
0
|
||
|
14289 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,330
|
|
| 06.09.2017, 03:12 | |
|
Coroners, я понимаю, что это ни на что не повлияет, но я просто обязан заметить три вещи относящиеся к WCF (можете передать их в отдел ОЗИ):
1) WCF является частью .NET Framework, лежит в GAC (соответственно, имеет строгое имя и подпись); 2) WCF умеет в шифрование и сжатие трафика, TCP - нет, так что кто тут секьюрнее очевидно невооружённым глазом; 3) Ваш отдельностоящий EXE один чёрт будет использовать сборки (DLL-ки) .NET Framework-а, так что, если ОЗИ боится подмены сборки WCF-а, то ему нужно и бояться подмены сборки System.Net.Socket, в которой лежат классы для работы с TCP; Так что смысла неиспользовать WCF нет. Чисто с технической точки зрения он - такая же часть .NET как и простые сокеты. Но имеет куда больше возможнойстей, в том числе и шифрование трафика, проброс исключений, прозрачная для пользователя сериализация. Но, видимо, ОЗИ виднее, кто я такой, что бы оспаривать
3
|
|
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 06.09.2017, 05:39 [ТС] | |
|
Usaga с вашими доводами я полностью согласен и всё сказанное вами тоже прозвучало из моих уст и да мне легче было бы использовать WCF а не изобретать новые велосипеды обтачивая их напильником, при этом реализация безумного плана моего начальства мной в одну каску было бы быстрее и т.д. но к сожалению я тоже особо ни кто в ОЗИ и тут как в армии сказали капать - какаю, сказали не копать ни капаю, а всё остальное от лукавого - такова политика партии (вообще хочу уйти из этой конторы нафиг но к сожалению некуда - напряженка с рабочими местами из за мухосранска). Не знаю чего там ОЗИ боится а может оно им технически не алё я не знаю по крайне мере внятных и вразумительных ответов я от них не получил. На всю секурность и шифрование ответ один мы под управлением випнет координаторов и випнет мониторов которые по факту (а так оно и есть) шифруют любой входящий и исходящий трафик, юзают виртуальние ипы и т.д. так что шифрование, сжатие трафика для них не аргумент ни разу. Как я вообще понял вся эта затея из разряда "хочух", на серваке соит моя тулза которая делает всё чё надо но вот им "прихотелось" чтобы оно ещё слало данные в толстые клиенты.... в общем борюсь и пытаюсь донести до их умов ... но пока безрезультатно
1
|
|
|
14289 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,330
|
|
| 06.09.2017, 05:53 | |
|
Coroners, ну, тогда выбора у вас нет (или есть - использовать WCF и никому об этом не сказать, я так понял, что всё равно никто не шарит, чтобы это проверить).
Какая из реализаций лучше для вас подойдёт сказать сложно. От вашей задачи зависит. Я бы рассматривал вариант с работой с сетью полностью в отдельном потоке. Так было бы больше места для манёвра. Если общения с сетью мало и оно простое, то можно и асинхронный вариант рассмотреть, но лично мне он не особо нравиться. Запустил отдельный поток - и всё. Если данные придут - дёрнется event. Надо отправить что-то - положи в очередь на отправку. Всё просто.
0
|
|
|
|
||
| 06.09.2017, 20:10 | ||
), а потом пройтись по программе обфускатором+протектор, и тогда там сам черт не разберет, на чем там реально написано.
0
|
||
|
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
|
|
| 07.09.2017, 13:54 [ТС] | |
|
в общем 2 дня боёв с боевыми садамитами из ОЗИ и прочего начальства результата не принесли.... развернул их же метадами в лоб используя их же бумажки, сказал чтобы они разрабатывали протокол который будет поверх TCP коль они такие секурные, чтоб утвердили этот протокол и внесли его в список ФАП, предоставили мне список библиотек среды .Net которые я могу юзать и подключать в using а так же все классы, методы и т.д. находящиеся в них, чтобы они потом могли позырить чё я накодил и ненафигачил ли им левого, которое могу заюзать в своих коварных целях - всё оформил официальной бумажкой.....
Надо было видеть как зашевелился этот муравейник "хочух".... ждёмс результата
2
|
|
| 07.09.2017, 15:10 | |
|
Не по теме: Coroners, ну ни фига себе... Это ж надо так не хотеть делать тупую работу! Похвально!
0
|
|
| 07.09.2017, 15:10 | |
|
Помогаю со студенческими работами здесь
20
Клиент-серверное приложение Закрывается клиент-серверное приложение Как написать клиент-серверное приложение Клиент-серверное приложение по Интернету с динамическим IP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|