WCF: открытая объектная модель - застряла в цикле - PullRequest
0 голосов
/ 08 февраля 2010

Я работаю над довольно большим проектом WSSF. У меня есть нормальная объектная модель на бизнес-уровне. Например, у клиента есть свойство сбора заказов, при доступе к которому он загружается из слоя данных (отложенная загрузка). У заказа есть свойство productCollection и т. Д. И т. Д.

Теперь немного сложнее разоблачить это через WCF. Я хочу экспортировать коллекцию заказов. Клиентскому приложению также потребуется информация о клиентах. Используя конструктор контрактов данных WSSF, я настроил его так, чтобы у клиентов было свойство, называемое «сбор заказов». Это хорошо, если у вас есть объект клиента, и вы хотите посмотреть заказы, но если у вас есть объект заказа, то свойства клиента нет, поэтому он не работает, поднимаясь по иерархии.

Я попытался добавить свойство customer к объекту orders, но затем код застревает в цикле, когда загружает данные. Это потому, что он не загружается по требованию, как на бизнес-уровне. Мне нужно загрузить все свойства, прежде чем объекты могут быть отправлены через WCF. В итоге загружается заказ, затем клиент для этого заказа, затем заказы для этого клиента, затем клиент для этого заказа и т. Д. И т. Д.

Я уверен, что все это неправильно. Помогите !!

1 Ответ

0 голосов
/ 08 февраля 2010

Обычно в WCF контракты лучше рассматривать не как «удаленные объекты», а как интерфейсы, к которым можно обращаться для получения или передачи данных.

Любые методы, вызываемые в возвращенном объекте, обрабатываются локально , а не в том месте, где был создан объект. Фактически, получение «одного и того же» объекта с сервера дважды обычно приводит к двум совершенно отдельным объектам на стороне клиента!

Чтобы получить ту функциональность, о которой вы спрашиваете, вам, вероятно, потребуется написать некоторый код на стороне клиента, чтобы создать для вас удаленный объект «иллюзия».

...