Как организовать обработку сообщений от нескольких серверов?
Подскажите, есть ли какое-то проверенное решение, для данной задачи.
Дано: 1 сервер, который "слушает" 3 других сервера, этот сервер может так же отправлять запросы ко всем 3-м серверам, которые он "слушает".
У всех этих серверов есть куча различных команд, которые они просят выполнить сервер #1.
Команды могут быть разными, от удаления файлов, до запуска процессов и оповещения о проделанной работе.
Как можно грамотно, с возможностью расширения организовать работу на C#? Помогут ли какие нибудь паттерны из GoF в решении данного вопроса?
Общая концепция и модель: раз и два.
Конкретные реализации и протоколы: обмен сообщениями в чистом виде, независимо от платформы: AMQP, ZeroMQ; также, если речь про дотнет, можно попробовать WCF.
public void RecieveAll(IRemoteMessage message)
{
switch (message.Type)
{
case Type.FILE_DELETE:
// ... very big processing
break;
case Type.FILE_OPEN:
// ... very big processing
break;
case Type.PROCESS_KILL:
// ... very big processing
break;
// ... and etc.
}
}
Есть ли способы упросить и улучшить это? Допустим, тут будет 50+ различных типов сообщений, для обработки большинства используются классы.
Михаил "это" - что конкретно? блок switch? Ну простейший вариант - поменять на мапу тип_сообщения -> обработчик. Например, IDictionary>. Не пойму только, как это соотносится с изначальным вопросом.