#java #.net #web-services #wsdl
#java #.net #веб-сервисы #wsdl
Вопрос:
При определении простого веб-сервиса на Java (Eclipse) и использовании сервиса в Visual Studio сгенерированный код содержит структуру запроса и ответа для каждого метода обслуживания. Созданный клиентский интерфейс имеет методы, которые принимают структуру запроса и возвращают значение из структуры ответа.
Например, если у меня есть класс сервиса SimpleTest с методом add (int a, int b), я получаю следующий сгенерированный интерфейс (аннотации удалены):
public interface ISimpleTest
{
MyNamespace.WebServiceProxy.addResponse add(
MyNamespace.WebServiceProxy.addRequest request);
}
Однако, если я создаю по существу тот же класс, что и веб-служба WCF, код генерирует следующий интерфейс:
public interface ISimpleTest
{
int Add(int a, int b);
}
Я хотел бы выяснить, есть ли способ избежать использования классов-оболочек при использовании службы Java. Позволит ли это определение типов данных в XSD или будет.NET всегда генерирует эти оболочки при использовании non-.NET сервис? Мы хотели бы обойти созданный клиент и реализовать интерфейс самостоятельно (без оболочек). Возможно ли это?
Ответ №1:
Вы определенно можете сделать это с помощью WCF. Вы должны быть в состоянии определить свой интерфейс на стороне клиента следующим образом:
[ServiceContract]
public interface ISimpleTest
{
[OperationContract]
int Add(int a, int b);
}
Оттуда вы можете настроить реализацию вашего клиента через конфигурацию клиента или с помощью кода.
Ответ №2:
Если бы мне пришлось догадываться, это потому, что Visual Studio для внешнего веб-сервиса (Java, Perl, Ruby и т.д.) Должна загрузить WSDL из этого сервиса, А затем сгенерировать .СЕТЕВЫЕ заглушки на основе WSDL, который является интерфейсом всех веб-сервисов.
С веб-сервисом WCF у него уже есть доступ к классам и т.д. Для проксирования, поэтому ему не нужно генерировать заглушки и скелеты для вызова веб-службы.
Хотя это всего лишь предположение…
Единственный способ сделать это без оболочки — это если вы сами создали все ответы на запросы SOAP и отправили их через необработанный HTTP в веб-службу. Это беспорядочный код и вся причина.Генератор СЕТЕВЫХ оболочек существует, чтобы оградить вас от этого беспорядка!