2013-04-01 5 views
0

У меня есть три проекта:WCF Business Objects или DataContracts

  • проект службы WCF (интерфейс и реализация) веб-проект
  • ASPX (клиент), который потребляет службы WCF
  • библиотека классов проект, который держит мой бизнес-объекты (совместно используемые как проектом WCF, так и клиентом)

У меня есть метод в файле класса реализации службы WCF, который извлекает общий список данных из SQL (ссылаясь на проект, который содержит бизнес-объекты), сериализуйте данные с помощью System.Web.Script.Serialization.JavaScriptSerializer и верните результат в виде строки.

Веб-клиент принимает эту строку и преобразовывает его в соответствующий бизнес-объекта (ссылки на проект, который содержит бизнес-объекты)

Это приложение интранета, и я хочу, чтобы убедиться, что я делаю это правильно.

Мои вопросы:

  • Должен ли я использовать DataContracts вместо бизнес-объектов? Не уверен, когда использовать DataContracts и когда использовать бизнес-объекты.
  • Если я использую DataContracts, не следует ли использовать System.Web.Script.Serialization.JavaScriptSerializer?

Любые разъяснения были бы оценены.

ответ

0

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

ли использовать бизнес-объекты, если они похожи на контракты данных будет, т.е. куча общественных свойств и не содержат коллекции детей/внуков и т.д.

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

Используйте бизнес-объекты, если они содержат логику проверки и т. Д., Которые в противном случае вам пришлось бы дублировать в веб-службе.

Использование бизнес-объектов, если вы собираетесь использовать контракты с данными, чтобы полностью раздуть бизнес-объекты.

Не используйте бизнес-объекты, если вы когда-либо захотите использовать этот служебный интерфейс из кода .net.

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

Не использовать бизнес-объекты, если они должны «знать», где они находятся (веб-сервер или сервер приложений)

Не ваше дело, но: Как использовать бизнес-объекты, если вы строите богатый клиент для ввод данных.

Все это сейчас, я посмотрю, если что-нибудь еще произойдет со мной.:)

+0

Благодарим за отзыв. Некоторые вопросы к вашему ответу: – alpha

+0

«Не используйте бизнес-объекты, если вам необходимо настроить их сериализацию» - я не украшаю свой класс каким-либо типом сериализации, кроме класса обслуживания, где я сериализую его в System. Web.Script.Serialization.JavaScriptSerializer. Что вы подразумеваете под «массовым настройкой их сериализации». – alpha

+0

Кроме того, поскольку бизнес-объекты выглядят как datacontracts, и они будут использоваться для полного раздувания бизнес-объектов, тогда похоже, что я могу использовать бизнес-объекты в этом случае. Я не собираюсь использовать DataContracts. Просто хотел подтвердить. Я видел сайты, на которых они рекомендуют использовать как бизнес-объекты, так и datacontract и использовать automapper для сопоставления двух. – alpha

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