Проблема с объектами веб-сервисов ASMX - PullRequest
1 голос
/ 06 декабря 2011

В настоящее время я работаю в сети некоторых веб-сервисов (веб-сервисы ASP.NET 3.5). Мой бизнес-уровень одинаков для всех служб - это означает, что у меня одинаковые структуры с одинаковыми полями в каждой службе.

Но когда я передаю эти структуры между службами, каждый раз, когда мне нужно выполнить преобразование из глобального типа в локальный, например:

Если у меня есть метод, который возвращает экземпляр структуры.

[WebMethod]
public MyObject MyMethod () {
return new MyObject();
}

Когда я звоню из клиентской службы, я пишу что-то вроде этого:

OuterService proxy = new OuterService();
global::MyObject obj = proxy.MyMethod();

Где OuterService - это экземпляр класса, сгенерированный wsdl.exe. А затем, чтобы передать его следующему сервису, мне нужно преобразовать его из глобального типа в локальное поле типа по полю, а свойство по свойству.

Итак, мой вопрос:

Есть ли какое-нибудь элегантное решение для передачи этих объектов без трансформации на каждом уровне?

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

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Просто используйте «Добавить ссылку на сервис».По умолчанию он разделяет типы, которые находятся в сборках, на которые ссылается ваш проект.Просто добавьте ссылку на сборку, содержащую типы, используйте «Добавить ссылку на службу» или «Обновить ссылку на службу», и все будет готово.

0 голосов
/ 06 декабря 2011

По умолчанию нельзя использовать типы общего доступа через границы веб-сервисов, но есть некоторые обходные пути, например , в этой статье показано

Надеюсь, это поможет

...