Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 27

Переключение между стратегиями по условию

30.11.2023, 14:28. Показов 1481. Ответов 20

Студворк — интернет-сервис помощи студентам
Здравствуйте! Делаю клиент-сервер, клиент передает запрос фиксированного размера, содержащий код запроса формата byte (например 0 - запрос на вход в систему, 7 - запрос на создание сессии и так далее). На стороне сервера запрос парсится основным парсером и сервер таким образом получает код запроса. После этого клиент отправляет данные о пользователе, или о сессии и т.д. в зависимости от запроса. А сервер должен эти данные распарсить чтобы что-то с ними делать. Сущностей по типу User, Session и т.д. уже несколько, и скорее всего их количество в будущем будет увеличиваться, соответственно решил применить паттерн "Стратегия".

Итак, есть интерфейс IParser, и реализующие его классы - то есть парсеры разных используемых сущностей:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface IParser
{
    object Parse(byte[] input);
}
 
class UserParser : IParser   // для примера в общих чертах
{
    public object Parse(byte[] input)
    {
            // parsing...
 
            User user = new User();
            return user;
    }
}
ВОПРОС: как правильнее всего сделать так, чтобы сервер в зависимости от полученного кода запроса выбирал нужный парсер? И хотелось бы соблюсти следующие условия:
- Добавление новых парсеров не должно вызывать больших проблем
- Некоторые парсеры могут использоваться при разных кодах запроса (то есть например UserParser - при кодах 0,1 и 2, SessionParser при кодах 7 и 8 и т.д.)

Только начал осваивать премудрости ООП и всего что с этим связано. Подскажите, пожалуйста, в какую сторону копать? В идеале "по пунктам" какие шаги нужно пройти чтобы я это реализовал
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2023, 14:28
Ответы с готовыми решениями:

Переключение картинок по условию в PictureBox
Пытаюсь написать код, чтобы картинка в picturebox переключалась на следующую при возникновении указанного условия. Public Class Form2 ...

Редукция лямбда-термов разными стратегиями
В соседнем разделе про Haskell на вчера появилась тема с подобным содержанием и примером, и мне захотелось навелосипедить программку,...

[Logo! Soft Comfort] Управление клапанами: переключение по времени или по условию (повышение температуры)
Добрый день! Прошу помощи в решении. Клапан ИМ4 - выходы Q1 (открыть), Q2 (закрыть); вход I1 (клапан открыт) Клапан ИМ5 - выходы Q3...

20
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 27
04.12.2023, 19:38  [ТС]
Студворк — интернет-сервис помощи студентам
Wolfdp, IamRain, премного благодарен за информацию, спустя уйму гугления понял, что действительно была "проблема XY" и просто не в ту строну полез, в итоге решил попробовать пойти в сторону gRPC для связи лаунчера и главного сервера, для этой связи у меня TCP не из-за его простоты/дружелюбности, просто насколько знаю TCP дает гораздо большие гарантии что пакет дойдет, для действий а-ля "авторизация" скорость некритична, а вот чтобы данные корректно дошли - вполне важно

А сессионный сервер буду писать с использованием UDP, поскольку в случае с активными действиями в виртуальном 3д-пространстве лучше потерять часть пакетов, чем ждать и порождать тем самым фризы, тормоза и подобное. Для активных игр (в моем случае "тренировок") чаще применяют именно UDP, даже сервер, поставляемый вместе с Unreal Engine, насколько знаю, использует UDP, и да, наслышан о том какой этот протокол "веселый", ну чтож, тем интереснее... Сообщения там небольшие будут, десяток-другой байт, и локальная сеть, предполагающая подключение по проводам, так что огромных потерь вроде не ожидается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2023, 19:38

Переключение между li
Доброго времени суток. Идей полно, но с реализацией проблема, мб кто то подскажет. ...

Переключение между окнами
Доброго времени суток! Не подскажете как настроить мой Debian 9 на переключение между окнами по сочетаниям WIN+(номер от 1 до 0) как в...

Переключение между окнами???
Помогите кодом!!! Запускаю стороннюю программу system.diagnostics.process.start(''\\пример.exe''); окно моей основной программы...

Переключение между вкладками!
Здравствуйте! Как сделать чтобы при нажатии 1 строку таблице radgridviev в tabcontrol переключился 1 вкладка, при нажатии на 2 вкладка 2...

Переключение между формами
в приложении несколько форм, как переключаться между ними? т.е. допустим сначала в проекте первой конструируется Form1, потом мне надо...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru