WCF: открытая объектная модель - застряла в цикле

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

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам