Предоставление .NET WebService другой платформе (Java) - PullRequest
2 голосов
/ 22 июня 2009

Я хотел разработать веб-сервис в .NET и хотел, чтобы этот веб-сервис работал в Java. Какие шаги мне нужно следовать. Я написал пару веб-сервисов, но клиент для всех был .Net. Пожалуйста, дайте мне знать Шаги, которым я должен следовать.

Также мой веб-сервис будет принимать двоичный файл в качестве входных данных, пожалуйста, дайте мне знать, как мне этого добиться?

Ответы [ 5 ]

5 голосов
/ 22 июня 2009

Я не думаю, что вам нужно делать что-то еще, чтобы достичь этого. Основная цель веб-сервисов заключается в том, что к ним можно получить доступ с любой платформы, и это из-за основного формата XML, на котором базируются веб-сервисы.

Итак, вам просто нужно подключиться к .NET Webservice через Java-клиент так же, как вы подключаетесь к Java WebService.

Что касается ввода двоичных файлов, это может быть проблемой, поскольку сериализация двоичных файлов в Java и .NET может отличаться. т.е. только в том случае, если вы создаете двоичный файл во время выполнения. Я не помню правильно, но я думаю, что где-то читал, что есть разница в базовом механизме упорядочения байтов в .NET и Java. Одна из них является прямым порядком байтов, а другая - старшей, и поэтому сериализованные двоичные файлы обеих платформ могут отличаться, хотя они могут сериализовать одни и те же данные. (Я не уверен на 100% в этом, поэтому, если кто-то знает это, пожалуйста, поправьте меня)

3 голосов
/ 22 июня 2009

Для двоичного файла используйте строковый элемент и верните его в кодировке base64. Хотя в Java нет встроенной функции для кодирования / декодирования base 64, этого достаточно легко достичь. Таким образом, вам не нужно беспокоиться о проблемах сериализации. Для Java, PHP, Python и т. Д.

Если двоичный файл когда-либо будет очень большим (в диапазоне мегабайт), вы можете захотеть вернуть его как мыльное вложение. (DIME или MTOM) Иногда на клиенте будут действовать меры предотвращения отказа в обслуживании XML (я могу представить несколько сетевых устройств, которые делают это), и он пытается загрузить все сообщение в буфер для анализа. Если буфер недостаточно велик, вы теряете сообщение. Во избежание этого отправка большого двоичного файла в кодировке base64.

Наконец, .Net позволит вам создать целевое пространство имен, которое не может обработать клиент Java. Это вызовет проблемы. Убедитесь, что пространство имен соответствует стандартам.

2 голосов
/ 22 июня 2009

Это должно работать "из коробки", но я бы не советовал возвращать сложные структуры данных или ожидать такие, как входные аргументы. Если вам нужна такая сложность, я бы предложил вместо этого принять / принять XML.

0 голосов
/ 22 июня 2009

Для всех примитивных и сложных типов данных это будет работать из коробки. Но для двоичного файла или, вернее, для двоичных данных используйте Base64 представление .

Base64 - универсальная форма представления двоичных данных в виде строки.

0 голосов
/ 22 июня 2009

Если вы передаете примитивные типы, структуры примитивных типов, массивы или списки примитивных типов и т. Д., То любая платформа должна иметь возможность принимать ваши данные. Например:

public class Person {
    public string GivenName {get;set;}
    public string FamilyName {get;set;}
    public byte[] Photograph {get;set;}
}

public class Company {
    public int CompanyID {get;set;}
    public readonly List<Person> _employees = new List<Person>();
    public List<Person> Employees {get {return _employees;}}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...