Реализация дизайна ответа на запрос - PullRequest
1 голос
/ 29 сентября 2011

Я пытаюсь реализовать запрос / ответ клиента. Вот основная реализация для этого.

Class Request
{
    prepareRequest1();
    prepareRequest2();
}

Class Response
{
    processResponse1();
    processResponse2();
}

Class Client
{
    connect();
    sendRequest();
}

myrequest = new Request();
client = new Client (myserver);
my $rawResponse1 = client.sendRequest (myrequest.prepareRequest1());

myresponse = new Response();
myresponse.processResponse1 ($rawResponse1);

У меня есть три класса, а именно - Запрос, Ответ и Клиент. Класс запроса содержит функцию, специфичную для запроса. Эти запросы являются запросами XML. Там XML-запрос не имеет ничего общего, кроме нескольких начальных тегов (например, sessionid и т. Д.). Все остальные параметры XML зависят от типа запроса. Итак, в настоящее время я передаю его, создавая отдельную функцию для каждого запроса. Я понимаю, что это проблема масштабируемости, но, пожалуйста, предложите мне другой лучший подход, который я могу применить здесь.

Подобно запросу, ответ на каждый запрос требует особой обработки. поэтому у меня есть отдельная функция, специфичная для каждого типа ответа, который я ожидаю. Как правило, можно предположить, что между запросом и ответом существует соотношение 1: 1.

Last - это класс Client, который передает соединение.

У меня почти 50+ таких запросов и ответов, и я планирую реализовать этот подход. Поскольку я нахожусь на начальной стадии разработки, пожалуйста, предложите мне некоторые улучшения / лучшие практики для реализации такого запроса / ответа.

1 Ответ

0 голосов
/ 29 сентября 2011

Лучше всего, если вы храните отображение запроса и ответа вне вашего кода. Проще управлять. Сохраните XML-файл конфигурации, в котором хранятся имена классов вашего запроса и ответа, привязанные к определенному типу XML-сообщения. Затем вы можете получить имена классов и перейти к этому классу для обработки вашего запроса и ответа. Лучше иметь отдельные классы для обработки этих сообщений, а не отдельные методы. Это более масштабируемо. Убедитесь, что у вас есть интерфейс для всех ваших классов запросов и то же самое для ваших классов ответов. Это позволит легко поменять классы ответов на запросы, изменив конфигурационный файл xml.

Надеюсь, вы поняли:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...