2011-05-31 3 views
1

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

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

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

ответ

1

Это имеет смысл, если вы собираетесь повторно использовать эти классы реализации, которые я назвал бы свой бизнес слой.

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

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

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

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

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

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

ИЛИ

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

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