Может ли VS.NET использовать Java WS без генерации структур-оболочек?

#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 в веб-службу. Это беспорядочный код и вся причина.Генератор СЕТЕВЫХ оболочек существует, чтобы оградить вас от этого беспорядка!