Гарантия, что.NET Сервис WCF может быть использована клиентом Java

Просто выбросить ошибку:

async function rejectMe() {
   throw new Error("rejected!");
}

async function main() {
  await rejectMe();
}

main()
.then(() => {
  console.log("finished!")
})
.catch((e) => {
  console.error(e);
})
14
задан Richard Everett 27 March 2009 в 16:36
поделиться

4 ответа

Рекомендация запуститься с XSD является хорошей. Это не гарантирует совместимости на каждой стороне, поскольку XML-схема является действительно большой, и никакая стопка веб-сервисов не поддерживает все это. (Пример: списки).

Так, запустите с XSD, но ограничьтесь основными типами. Примитивы, complextypes состоявший из примитивов, массивов того же. Можно безопасно вложить complextypes и массивы. (массивы complextypes, complextypes, которые содержат массивы или complextypes, и т.д.).

Держитесь подальше от ограничений, групп замены, списков, дериваций и любой другой эзотерики XSD. Даже перечислений XSD нужно избежать.

О дате и времени: недостаточно использовать nullable дату и время. Там форматируют проблемы также. DateTime.NET является более высоким количеством разрешения, чем Календарь Java и в результате поставка времени.NET к Java могут привести к исключениям десериализации на стороне Java. (РЕДАКТИРОВАНИЕ: использование DataType = декоратор "даты и времени" в атрибуте XmlElement на стороне.NET может удостовериться, что Вы сериализируете правильно),

Некоторый старый совет относительно этого.

Наконец, это не верно, что Вы не можете использовать документ XML в коде о классах, которые сгенерированы. С частичными классами C# можно написать отдельный код от сгенерированных классов с документом в коде, который Вы хотите. Даже если Вы перегенерал код, Ваш частичный код класса останется неизменным.Править: Когда Вы скомпилируете, документ появится на классах.

Править: Кто-то спросил, если использования XSD сначала недостаточно для гарантии interop, почему использование это? Мой ответ: это не гарантия, но это - хороший шаг, это помогает. Это держит Вас отдельно от разработки интерфейсов в коде (или Java или C# или VB, и т.д.), которые выставляют определенные для платформы вещи как.NET DataSets, универсальные Словари, Java ResultSets, и т.д., все из которых представляют interop проблемы. Существуют все еще ловушки в более крайних частях XSD, но можно обычно избегать тех, которые имеют вдумчивый дизайн.

Я должен был упомянуть в своем исходном ответе, что можно применить итеративный процесс к разработке интерфейса. Дизайн в XSD, затем генерируйте (клиент) тупик и (сервер) скелетный код от XSD+WSDL, затем скорректируйте и сделайте это снова.

14
ответ дан 1 December 2019 в 13:22
поделиться

Используя basicHttpBinding конечную точку гарантирует, что любой SOAP 1.1 совместимый клиент сможет использовать Ваш сервис.

4
ответ дан 1 December 2019 в 13:22
поделиться

Использовать DateTime?, т.е. nullable структура. Java не имеет условных из сложных типов значения (т.е. структуры). Я полагаю, что существуют способы указать в WSDL для не разрешения, аннулирует, но я думаю, что WCF не делает этого из поля.

Используйте массивы вместо наборов. Если я вспоминаю правильно, типы набора не переводят очень хорошо по SOAP, но типы массива вполне успевают.

Необходимо получить копию Eclispe или Netbeans. После того, как Вы создаете прототип сервис WCF, запускаете мастер веб-сервиса для создания прокси. Исследуйте объектную модель на любые главные дефекты с особым акцентом на сложных объектах или нетипах примитивов (строка обработки как примитив).

Кривая обучения, чтобы сделать это с Netbeans или Eclipse довольно плоско, таким образом, это не огромная нагрузка.

Править: Другие потенциальные проблемы с привязкой. Если Вы придерживаетесь HTTP (S), необходимо быть хорошими... начинают идти в альтернативы как TCP или MSMQ, необходимо будет сделать большую работу в Java. Кроме того, некоторые средства защиты не делают interop во всех случаях, таких как использование маркеров NTLM... Проявите итерационный подход. Запустите с простого HTTP w/SOAP связывающий без безопасности и пойдите оттуда.

1
ответ дан 1 December 2019 в 13:22
поделиться

WCF обеспечивает стандартные интерфейсы SOAP? Если это делает, заставляя Java говорить это должен быть пустяк.

Ре: Edit1: WSDL / XSD будет использовать стандартный формат даты/времени (Календарь в конце Java, отформатированной строке даты и времени в SOAP, DateTime в.NET), или Вы могли вызвать его в формат строки Вашего собственного выбора.

Прочитайте на Оси Apache (1.4 и 2.0) документацию для веб-сервисов Java. Это очень просто в использовании для подъема клиентского набора веб-сервиса Java от wsdl/xsd, который обеспечит веб-сервис.

Edit3: В Java Вы определили бы модель Java (со всей Вашей привилегированной документацией), затем выполнили бы Java2WSDL (предпочтительно как задача МУРАВЬЯ/ЗНАТОКА) для создания WSDL (однако, я нашел, что Вам нужны к ручному переупорядочиванию поля в нем). Ось 2 Набора поддержек и Перечисления очень хорошо, Оси 1.4 нравятся Массивы и скрученные вручную перечисления стиля Java 1.4. От этого WSDL Вы создали бы скелет серверной стороны с помощью WSDL2Java, в котором единственная вещь необходимо сделать, реализовать бизнес-логику.

0
ответ дан 1 December 2019 в 13:22
поделиться
Другие вопросы по тегам:

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