|
|
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
Есть веб-сервис (O) и контракт в виде wsdl. Работа с веб-сервисом предполагается через веб-сервис посредник (P). Веб-сервис посредник (P) практически не отличается от оригинала (O) - различия в некоторых полях запроса и ответа. Схема работы примерно такая: 1. Приложение вызывает веб-сервис посредник, на основе данных запроса от приложения формируется и подается запрос в оригинальный веб-сервис, причем по сути этот будет тот же запрос плюс минус пара полей [Приложение] -----request-----> [Веб-сервис посредник(P)] -----request-----> [Веб-сервис(O)] 2. Оригинальный веб-сервис отвечает, веб-сервис на основе данных ответа формирует ответ для приложения, опять же по сути это будет тот же самый ответ оригинального сервис плюс минус пара полей [Приложение] <-----response----- [Веб-сервис посредник(P)] <-----response----- [Веб-сервис(O)] Посоветуйте как лучше реализовать веб-сервис посредник? В данный момент проблема в том что классы ответов очень комплексные и как следствие создавать на основе ответа (O) ответ (P) процесс довольно трудоемкий. Но wsdl (O) и wsdl (P) практически идентичны и соотвественно классы практически идентичны, есть ли какое-нибудь архитектурное решение чтобы избежать ненужной и чреватой ошибками работы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 14:56:31 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
1) XSLT - получаем сырой XML, трансофрмируем его к нужному виду, делаем POST на удаленный веб-сервис; 2) Jibx - получили сырой XML, преобразовали его к value object'ам по одному маппингу, потом преобразовали обратно в XML уже по другому мапипнгу, POST на удаленный веб-сервис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:19:53 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
svenom, Почему именно JiBX? В исходной постановке вопросе сериализация выглядит оверхедом. При выборе решения тут я бы всё же исходил из возможных будущих требований к этому посреднику. Если ограничится изначальной постановкой задачи, то возможно даже простейшая поточная обработка текста подойдёт. SAX должен ещё хорошо в концепицию вписаться, с ним легко и сбрасывать поток без изменения и накапливать в ожидании некоторых данных и анализировать конкретные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:33:59 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
JIBx это просто как идея, что можно сделать маршаллинг/анмаршаллинг, как одно из решений. SAX/StAX - это, пожалуй, самое быстродейственное решение в принципе, но в то же время и самое "грязное" с точки зрения количества java-кода, который к тому же невозможно экстернализовать. Так что тут все зависит от деталей контекста задачи автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:40:24 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
svenomJIBx это просто как идея, что можно сделать маршаллинг/анмаршаллинг, как одно из решений. когда нужно поменять "некоторые поля", то затраты на маршалинг могут быть несоизмеримыми. svenomсамое "грязное" с точки зрения количества java-кода Почему??? На SAX вообще меньше всего кода будет. Всё что не нужно обрабатывать просто копируется как есть. Всё что нужно - заменяется. Если проанализировать нужно в одном месте, а заменить в другом, то тоже делается проще некуда - дампим в буфер, пока не будет всех данных для замены. svenomкоторый к тому же невозможно экстернализовать. Это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:54:45 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczsvenomсамое "грязное" с точки зрения количества java-кода Почему??? На SAX вообще меньше всего кода будет. Всё что не нужно обрабатывать просто копируется как есть. Всё что нужно - заменяется. Если проанализировать нужно в одном месте, а заменить в другом, то тоже делается проще некуда - дампим в буфер, пока не будет всех данных для замены.Ну это и есть та самая громоздкость. Даже при средней сложности структуры XML работа с SAX быстро превращается в АДъ. Например, надо вам заменить тег с именем NAME1, вложенный в определенный тег NAME2, но при этом NAME1 встречается и в других местах. Что вы будете делать? Отслеживать "состояние" вашей позиции. А если у вас 5 таких мест? 5 состояний уже отслеживаете. Перебросить значение из одного места в другое? Еще + 1 состояние. А если вам в начало отправляемого документа надо вставить значение из конца исходного документа? Еще бОльшая жопа - SAX то у нас one-way. Как результат - трудноподдерживаемое спагетти. Поэтому самый true-подход здесь XSLT - чистенько и экстернализуемо. Но, конечно, несколько медленнее, чем SAX/StAX, которые можно потоково читать, потоково процессить (но, как я уже показал выше, не всегда), и потоково выдавать в сокет приемника. Blazkowiczsvenomкоторый к тому же невозможно экстернализовать.Это как?SAX/StAX: изменились правила обработки XML - придется править Java-код. XSLT: просто поменяли экстернализованные шаблончеги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:10:52 |
|
||
|
Как лучше реализовать прокси (типа промежуточный или посредник) веб-сервис?
|
|||
|---|---|---|---|
|
#18+
Предполагается что приложение-посредник (частью которого является веб-сервис посредник) будет заниматься контролем доступа, ведением различной истории, рассылкой писем и т.д. О, работать с чистым xml мне не приходило в голову. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:16:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37935698&tid=2131053]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 336ms |
| total: | 491ms |

| 0 / 0 |
