Большие, сложные объекты как результат веб-службы

Привет снова дамы и господа!

ОК, следуя моему другому вопросу о результатах веб-службы ASP.NET, прокси-классах и преобразовании типов. Я пришла к участию в моем проекте, где мне нужно, чтобы моя мыслящая крышка.

В принципе, у нас есть большой, сложный пользовательский объект, который нужно вернуть из веб-службы и использовать в клиентском приложении.

Теперь, основываясь на предыдущем обсуждении, мы знаем, что это будет затем принимать форму прокси-класса (es) в качестве возвращаемого типа. Чтобы преодолеть это, нам нужно в основном скопировать свойства из одного в другое.

В этом случае, это то, что я действительно, действительно, действительно! как бы избежать!

Итак, это заставило меня думать, , как еще мы могли бы это сделать?

Мои текущие мысли состоят в том, чтобы включить объект для полной сериализации в XML и затем вернуть XML в виде строки из веб-службы. Затем мы де-сериализуем на клиенте. Это будет означать справедливую бит декорирования атрибутов, но по крайней мере код на обеих конечных точках будет легким, а именно, просто используя .NET XML Serializer.

Что вы думаете об этом?

Ответ 1

Сериализация .Net XML (de) довольно хорошо реализована. Сперва подумал, я не думаю, что это плохая идея.

Если два приложения импортируют те же определения (ов) класса (ов) класса С#, то это относительно хороший способ получить поведение конструктора-копии бесплатно. Если структура класса изменится, тогда все будет работать, когда обе стороны получат новое определение класса, без каких-либо дополнительных изменений на стороне потребления/строительства веб-сервиса.

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

Ответ 2

Я люблю JSON для такого рода вещей. Я только что завершил создание портала POC drop-things для моей компании, используя jQuery, чтобы связаться с веб-службами с включенной услугой script. Сообщения легкие, а синтаксический анализ и т.д. В значительной степени обрабатывается. jQuery ajax материал, который я читал, был здесь (любя его!): статья jquery ajax

Ответ 4

Роб, глядя на ваш другой вопрос, а также на этот вопрос, это похоже на то, что мы имеем в нашей среде. Однако мы сделали переход от веб-служб ASP.Net к веб-сервисам WCF и в этом процессе (по большей части) была решена эта проблема.

Если есть вероятность, что ваш веб-сервис может быть реализован как веб-служба WCF, это может сработать и для вас. Следует отметить, что в то же время мы поддерживали обратную совместимость с некоторыми клиентскими приложениями, которым нужен стиль веб-сервиса ASP.Net, с использованием привязки basichttp WCF для транспорта услуг. Конечным результатом является то, что наши "новые" клиентские приложения могут использовать наши реальные бизнес-объекты (посредством ссылки на сборку, содержащую только эти общие объекты), в качестве возвращаемых типов из вызовов веб-сервисов, потому что они выполняют фактические вызовы WCF.

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

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