Преобразовать запрос Webservice во внутреннее представление? - PullRequest
1 голос
/ 31 мая 2011

Я реализую SOAP-Webservice, который получает различные запросы. Должен ли мой класс Manager преобразовать эти объекты Request во внутреннее представление, прежде чем делегировать их классам реализации?

Я думаю, что это было бы хорошей идеей относительно развязки. Но для этого я должен создать копию каждого класса RequestObject и назвать его InternalRequestObject, который хранит те же данные, что и исходный запрос.

Имеет ли это смысл?

1 Ответ

1 голос
/ 01 июня 2011

Имеет смысл, если вы намереваетесь использовать те классы реализации , которые я бы назвал вашим бизнес-уровнем .

В текущей настройке бизнес-уровень отображается как веб-служба. Скелет веб-сервиса - если хотите, - клиент для вашего бизнес-уровня.

Теперь возникает вопрос: должен ли ваш бизнес заботиться о том, каких клиентов он будет иметь? Должен ли контракт на данные бизнес-уровня диктоваться клиентами, или клиенты должны уважать контракт на данные, предоставляемый бизнес-уровнем?

Очевидный ответ - клиенты должны соблюдать контракт данных бизнес-уровня, поэтому ответ на ваш вопрос будет следующим: Да , вы должны сопоставить запросы SOAP с внутренним типом запроса, используемым классы реализации для того, чтобы получить лучшее разделение между ними.

Существует только один случай, в котором я бы рассмотрел возможность использования типов запросов непосредственно на моем бизнес-уровне: если бы я был абсолютно (на 101%) уверен, что мне никогда не придется выставлять свой бизнес-уровень как что-либо еще чем веб-сервис SOAP.

Идея в том, что у вас есть только два основных варианта:

1. везде сохраняйте один и тот же тип запроса . Недостатком этого является то, что вы будете страдать от множества переписываний, перебирающих ваш бизнес-уровень, если в какой-то момент вам придется добавить других (не SOAP) клиентов.

OR

2. сопоставьте тип запроса SOAP с внутренним типом . Недостатком этого будет то, что вы рискуете продублировать код и работать излишне, просто чтобы в конце выяснить, что все было напрасно, и вам не нужно было добавлять других клиентов.

Подумайте о своей ситуации и тщательно выбирайте! Но я должен сказать вам, что лично я не сталкивался с недостатком номера 2 до сих пор. Я всегда заканчивал тем, что добавлял новых клиентов к этой вещи, и с этого момента это помогло сопоставить типы с самого начала.

...