Преимущества использования Динамического Клиента с JAX-WS

В согласии с комментариями, уже сделанными - получают Уполномочивать подписку, она ускорена к людям как себя. Как я вспоминаю, у Вас есть 2 года для поставления продукта/решения на рынок (где рынок очень неточно определен), который использует некоторый элемент технологии MS (снова, где это довольно неточно определено). Взамен вполне скромных издержек Вы получаете MSDN, набор лицензий на ОС и доступа к средствам разработки и программам приложения конечного пользователя (XP, Vista, Office, являющийся очевидными примерами).

, Например, я разрабатываю в Дельфи, но код записи для работы SQL Express и полноценный SQL Server 2005 года 2005 +, и это дает право мне покупать Уполномочивать соглашение. Я получаю всех положительных героев, плюс вещи как Visual Studio, SQL Server, Office и лицензии на ОС. Если Вы не поставляете решение на рынок в выделенное время, можно заплатить для расширения соглашения или... хорошо, я должен признать, что я не уверен. Трудно видеть, какая плохая вещь может случиться с Вами, при попытке произвести что-то, но в конечном счете перестать работать - это - американская мечта, правильно? Необходимо прекратить использовать программное обеспечение в конце периода, и т.д.:-)

, Если Вы хотите разработать для настольного Windows, Вам действительно нужны некоторый уровень доступа MSDN, или хорошее широкополосное соединение и некоторое терпение при доступе к материалам онлайн. Уполномочьте метод довольно без боли доставления всех лучших инструментов для очень небольших издержек действительно - Вы заканчиваете с большой грудой DVD и CD и нескольких обновлений в течение года. Я сказал бы, что было важно покупка - особенно, если это просматривается как карьерные инвестиции или некоторый элемент обучения или прогрессии. Это не много денег вообще (я говорю как независимый поставщик программного обеспечения - все, что я должен выплатить, действительно прибывает из моего кармана!).

6
задан jconlin 14 November 2009 в 04:10
поделиться

5 ответов

Что ж, документация CXF довольно четко описывает преимущества динамических клиентов :

CXF поддерживает несколько альтернатив, позволяющих приложению взаимодействовать с сервисом без SEI. и классы данных. JAX-WS определил JAX-WS Dispatch API, а также интерфейс Provider для чтения и записи XML. Эта страница, однако, описывает динамические клиентские возможности CXF. С динамическими клиентами CXF генерирует классы SEI и bean-компонентов во время выполнения, а позволяет вам вызывать операции через API-интерфейсы, которые принимают объекты, или с помощью отражения для вызова полных прокси .

Другими словами, вы не делаете этого. не нужны определения классов, как показано в примере документации ниже:

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("echo.wsdl");

Object[] res = client.invoke("echo", "test echo");
System.out.println("Echo response: " + res[0]);

Что касается недостатков, они довольно очевидны (и это цена, которую нужно заплатить):

7
ответ дан 8 December 2019 в 18:37
поделиться

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

Динамический клиент работает медленнее, потому что код (из которого я написал некоторые) должен:

  1. анализировать wsdl и схему
  2. генерировать код
  3. компилировать код

Это более громоздко, потому что у вас нет классов компонентов для каких-либо сложных объектов в вашей модели данных. Вам необходимо использовать отражение.

Имейте в виду, что динамический клиент отличается от интерфейса вызова.

2
ответ дан 8 December 2019 в 18:37
поделиться

Преимущество использования динамического клиента заключается в том, что вам не нужно создавать заглушки до времени выполнения. Это позволяет вам в общем случае вызывать службы, о которых вы можете не знать во время выполнения.

1
ответ дан 8 December 2019 в 18:37
поделиться

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

Если любой из них не В этом случае вам нужно будет подумать о том, как ваш клиент будет справляться с этими ситуациями. Dispatch API дает вам возможность генерировать вызов веб-службы на лету, не имея априорных знаний о службе, к которой осуществляется доступ. Это, очевидно, происходит за счет того, что ваш код должен поддерживать параметры конфигурации, необходимые для создания этого вызова.

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

1
ответ дан 8 December 2019 в 18:37
поделиться

На днях у меня был похожий разговор с коллегой. Он использовал клиент Spring, который требует использования интерфейса для компиляции клиента, но затем Spring вводит фактический код, чтобы интерфейс работал. Это в основном сводилось к старейшей из наших пил: такие вещи, как динамические прокси-серверы, обычно вводят какой-то налог на производительность, он согласен с этим, я начал свою жизнь с написания драйверов устройств, и поэтому я полностью предвзято отношусь к скорости. Насколько я понимаю, более быстрые / меньшие победы, и поскольку я не ограничен такими ограниченными средами ... черт возьми, мой телефон Droid заставляет все системы, над которыми я работал, включая мэйнфреймы, в мои первые 10 лет профессионально выглядели ничтожными, Я предпочитаю скорость. Часто на это возражают, что есть много других узких мест, которые являются «настоящей» проблемой, и что эта проблема несущественна для них ... и это может быть правдой ... но каждый нюанс помогает. Если вы прочитаете материал из Стива Содерса и его соотечественников ... пользователи могут заметить изменение всего на 400 миллисекунд ... они не обязательно замечают, что дела идут медленнее, но их реакция другая . Так что, поскольку я ничего не могу поделать со скоростью сети, накладными расходами на индексирование базы данных и т. Д., То я могу, по крайней мере, как можно лучше работать с теми вещами, на которые я могу влиять. Уф! Извините за это !! Выходи из мыльницы сейчас же! ;)

1
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: