Передача классов в службу WCF - PullRequest
3 голосов
/ 30 октября 2009

У меня проблема, но сначала я хочу узнать, работаю ли я над лучшим решением.

Я создаю приложение, которое будет работать на сотнях клиентских компьютеров и отправлять данные на сервер / получать данные с сервера. Сервер получит эти данные и сохранит / обработает их.

Я хочу, чтобы клиентские приложения были как можно более легкими, поэтому я хочу, чтобы сервер передавал / принимал данные в форме классов. Например

Клиент запрашивает пользователя по userID Сервер отвечает классом UserDetails, который имеет имя пользователя, идентификатор и личную информацию.

Другим примером будет

клиент запрашивает проект Сервер отвечает классом ProjectDetails, который имеет идентификатор проекта, имя, описание, подробности И список действий (это другой класс, поэтому должен быть реализован как набор действий)

Я только начинаю с этого и обнаружил, что многие люди говорят, что сервис WCF - это путь, но я никогда не писал ни одного раньше. Это правда? и если да, то как мне передать сложные классы в / из службы WCF?

Спасибо всем:)

~ Dave

Ответы [ 3 ]

11 голосов
/ 30 октября 2009

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

Это просто атрибуты в классах .NET, которые предоставляют их среде исполнения WCF.

В вашем случае у вас, вероятно, будет что-то вроде:

[ServiceContract]
interface MyUserService
{
   [OperationContract]
   UserDetails GetUserDetails(int userId);
}

, а затем для данных:

[DataContract]
class UserDetails
{
   [DataMember]
   int userId { get; set; }

   [DataMember]
   string userName { get; set; }
}

WCF очень гибок и дает вам большой контроль над тем, как и что отправлять, а также обрабатывает все сериализации и другие вопросы для вас - автоматически. Не нужно возиться с супом с угловыми скобками!

Посетите Центр разработчиков WCF , где вы найдете много хорошего контента, видео-инструкции, статьи и многое другое - это поможет вам быстро начать работу!

Марк

2 голосов
/ 30 октября 2009

WCF сделает это за вас. Это похоже на использование веб-службы в pre-WCF .NET - «структуры» созданы для вас, и вы просто заполняете их свойства.

  1. Создание бизнес-объектов в сервисе
  2. Написать сервис, который публикует эти объекты в качестве параметров метода
  3. Создайте прокси службы, с помощью которого вы будете использовать службу.

Автоматически сгенерированный прокси-сервер службы будет содержать классы для каждого из требуемых бизнес-объектов. Это так просто.

Вы упоминаете в комментарии, что вы

решил, добавив проект ссылка на мой сервис, чтобы я мог использовать те же классы по службе и мой приложение форм (sic).

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

0 голосов
/ 30 октября 2009

Почему бы XML не сериализовать данные? Сила не в том, чтобы делать это как «классы» как таковые, состоит в том, что у вас может быть несколько разных клиентов, которые могут кодировать против стандартного независимого от платформы API. Это то, для чего в конечном счете используется служба, позволяющая различным приложениям и языку общаться с одной конечной точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...