У меня есть служба, которая будет обрабатывать асинхронный сокет. У меня будет несколько разных типов запросов, которые будут получены этой службой, но я хочу избежать того, чтобы какой-либо оператор switch определял, как обрабатывать полученные данные.Обработка различных типов асинхронных сокетов полученных данных на службе
Прямо сейчас у меня есть объект запроса, который будет содержать информацию об отправителе, тип запроса и общий объект, который будет содержать информацию, связанную с запросом.
Ex: Запрос на вход будет отправлен с хешем имени/пароля.
Единственный способ, которым я могу думать, чтобы справиться с этим, как только они были реконструированы, чтобы иметь большое заявление переключатель, который говорит
if (requestType = 0)
HandleLogin(receivedData);
else if (requestType = 1)
HandleDataRequest(receivedData);
Я думал, абстракции, но я думаю, так как классы должны быть разделены клиентом/сервером, чтобы быть сериализованным и десериализованным, клиент будет иметь логику сервера и в своем классе.
class LoginRequest : Request
{
public override void HandleRequest()
{
// Server logic here. But then client
// would have this useless logic in it's library.
}
}
Если кто-то может указать мне в правильном направлении, я был бы признателен!
Обычно я пытаюсь использовать TypeOf() в инструкции switch. – jdweng
Это определенно лучше, чем переключатель int requestType, делая его более читаемым. Но я надеюсь избежать заявлений о переключении полностью в пользу абстракции. Я не знаю, возможно ли это, или если это так, как будут работать большинство функций, получающих асинхронный сокет. – Datastream