Действительно ли это возможно к эхо-сигналам от WebService?

Следите за проблемами упаковки. В примере, который вы указали, все поля находятся на очевидных смещениях, потому что все находится на 4 байтовых границах, но это не всегда так. Visual C ++ пакеты по умолчанию на 8 байтов.

6
задан Chris 23 August 2008 в 18:41
поделиться

11 ответов

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

Однако, если у Вас есть составные типы, необходимо отметить объект с [сериализуемым] атрибутом. То же идет с составными типами как свойства.

Так, например, Вы должны иметь:

[Serializable]
public class MyClass
{
    public string MyString {get; set;}

    [Serializable]
    public MyOtherClass MyOtherClassProperty {get; set;}
}
7
ответ дан 8 December 2019 в 05:24
поделиться

Если объект может быть сериализирован к XML и может быть описан в WSDL затем да, это возможно к эхо-сигналам от веб-сервиса.

5
ответ дан 8 December 2019 в 05:24
поделиться

Да: в.NET они называют эту сериализацию, где объекты сериализированы в XML и затем восстановлены сервисом потребления назад в его тип исходного объекта или суррогат с той же структурой данных.

3
ответ дан 8 December 2019 в 05:24
поделиться

Где возможно, я транспонирую объекты в XML - это означает, что веб-сервис является более портативным - я могу затем получить доступ к сервису на любом языке, я просто должен создать транспроблему синтаксического анализатора/объекта на том языке.

Поскольку у нас есть файлы WSDL, описывающие сервис, это почти автоматизировано в некоторых системах.

(Например, нам записали сервер в чистом Python, который заменяет сервер, записанный в C, клиент, записанный в C++/gSOAP и клиенте, записанном в Cocoa/Objective-C. Мы используем soapUI в качестве среды тестирования, которая записана в Java).

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

@Brian: Я не знаю, как вещи работают в Java, но в .NET объекты сериализируются вниз к XML, не base64 строки. Веб-сервис публикует wsdl файл, который содержит метод и определения объектов, требуемые для Вашего веб-сервиса.

Я надеялся бы, что никто не создает веб-сервисы, которые просто создают строку base64

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

.NET автоматически делает это с объектами, которые являются сериализуемыми. Я - вполне уверенные работы Java тот же путь.

Вот статья, которая говорит о сериализации объекта в.NET: http://www.codeguru.com/Csharp/Csharp/cs_syntax/serialization/article.php/c7201

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

JSON является довольно стандартным способом передать объекты вокруг сети (как подмножество JavaScript). Много языков показывают библиотеку, которая преобразует код JSON в собственный объект - посмотрите, например, simplejson в Python.

Для большего количества библиотек для использования JSON посмотрите веб-страницу JSON

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

Это возможно к эхо-сигналам от веб-сервиса с помощью XML. Но веб-сервисы, как предполагается, являются агностиком платформной и операционной системы. Сериализация объекта просто позволяет Вам хранить и получать объект от потока байтов, такого как файл. Например, можно сериализировать объект Java, преобразовать тот двоичный поток (возможно, через Кодировку Base 64 в поле CDATA) и передача это клиенту сервиса.

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

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

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

Daniel Auger:
Как другие сказали, это возможно. Однако, если и сервис и клиент используют объект, который имеет то же самое доменное поведение с обеих сторон, Вам, вероятно, не был нужен сервис во-первых.

lomax: Я должен не согласиться с этим, поскольку это - несколько узкий комментарий. Используя веб-сервис, который может сериализировать объекты области к XML, означает, что он помогает клиентам, которые работают с теми же объектами области, но это также означает, что те клиенты ограничиваются использованием, что конкретный веб-сервис, который Вы выставили и он также, работает наоборот, позволяя другим клиентам не знать о Ваших объектах области, но все еще взаимодействовать с Вашим сервисом через XML.

Lomax: Вы описали два сценария. Сценарий 1: клиент повторно гидратирует сообщение XML назад в тот же самый объект области. Я полагаю, что это "возвращает объект". По моему опыту, это - плохой выбор, и я объясню это ниже. Сценарий 2: клиент повторно гидратирует сообщение XML во что-то другое, чем тот же самый объект области: Я - 100% позади этого, однако я не полагаю, что это возвращает объект области. Это действительно отправляет сообщение или DTO.

Теперь позвольте мне объяснить, почему true/pure/not сериализация объекта DTO через веб-сервис обычно является плохой идеей. Утверждение: чтобы сделать это во-первых, Вы или должен быть владельцем и клиента и сервиса, или предоставить клиенту библиотеку для использования так, чтобы они могли повторно гидратировать объект назад в, он - истинный тип. Проблема: Этот объект области как тип теперь существует в и принадлежит двум полусвязанным доменам. Со временем поведения, возможно, должны быть добавлены в одном домене, которые не имеют никакого смысла в другом домене, и это приводит к загрязнению и потенциально болезненным проблемам.

Я обычно значение по умолчанию к сценарию 2. Я только использую сценарий 1, когда существует подавляющая причина сделать так.

Я приношу извинения за то, что был настолько кратким с моим начальным ответом. Я надеюсь, что это разрешает вещи в известной степени до того, каково мое мнение. Lomax, это казалось бы нами, половина соглашается ;).

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

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

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

0
ответ дан 8 December 2019 в 05:24
поделиться

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

0
ответ дан 8 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

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