2009-09-17 1 views
0

У меня есть веб-сервис, который предназначен для приема данных о производительности через пользовательский объект. Пользовательский объект содержит Сбор (Общий список) показателей эффективности среди других данных. Показатель производительности состоит из простых типов данных (строки, ints и datetime). Единственный метод, предоставляемый веб-сервисом, требует, чтобы этот пользовательский объект (объект данных производительности) был передан.Использование пользовательских объектов между веб-службами

Проблема заключается в использовании этого настраиваемого объекта извне. Я хочу использовать методы Add() и Item() класса Generic List вместе с различными другими функциями этого класса в другом веб-сервисе. Если я запрашиваю объект из Web-сервиса Performance Data, он серализует внутреннюю коллекцию в arrayList. Я бы хотел, чтобы он оставался универсальной коллекцией.

Я играл с использованием метода XmlInclude, но в настоящее время havent нашел решение с ним.

Следующее, что я попытался сделать, это создать сборку этого конкретного объекта, которую могут использовать веб-служба Peformance Data, и любые спутниковые программы (т. Е. Другой веб-сервис). Проблема здесь в том, что когда я пытаюсь передать в пользовательский объект, созданный отдельной сборкой, веб-сервисы производительности передают его другим типом. (Также я применяю атрибут XmlInclude (GetType (пользовательская сборка)) для открытого метода). Однако все же считается, что типы не могут быть конвертируемыми.

Примечание. Я бы предпочел назвать Performance Data WS для получения пользовательского объекта вместо того, чтобы иметь дело с добавлением сборок в каждый проект, которому нужен доступ.

У кого-нибудь есть идея, отличная от реструктуризации программы для работы с методами, открытыми ArrayList?

+0

Веб-службы не предназначены для прохода вокруг пользовательских объектов, на самом деле они будут сериализованы для стандартных типов XML. – shivaspk

+0

Я разместил решение ниже. – 2009-09-23 15:12:26

ответ

0

Если вы используете WCF, вы можете настроить тип сбора, будь то ArrayList, фиксированный массив или общий список.

+0

Я использую .Net 2.0 к сожалению. – 2009-09-17 18:12:25

+0

Вы должны прекратить это делать. Для этого нет веской причины. По крайней мере, обновление до .NET 2.0 SP2. –

+0

Я использую 2.0 SP2. WCF - основа 3.x. – 2009-09-30 21:01:38

0

Я нашел решение, которое будет работать с .Net 2.0. При первом использовании контракта с веб-службами (WSCF http://www.thinktecture.com/resourcearchive/tools-and-software/wscf/wscf-walkthrough) Мне удалось передать общие коллекции между двумя службами. Нижняя сторона WSCF, как следует из названия, заключается в том, что подход требует использования контракта-сначала, а не более общей методологии первого кода. К счастью, не сложно изменить класс и прокси после их создания. Надеюсь, это поможет любому потерянному путешественнику ...

+0

Это не лучшая практика для изменения сгенерированного кода, так как ваши изменения будут потеряны, как только код будет сгенерирован снова. –

+0

Я согласен, что это не лучшая практика. Как только код сгенерирован в первый раз, я больше не использую автогенератор. Я просто модифицирую прокси-класс так же, как и любой другой класс. Кодирование такое же, за исключением того, что к методам применяются теги xml. Пожалуйста, предложите лучшую идею, если она у вас есть. – 2009-09-30 21:00:52

Смежные вопросы