У меня есть служба WCF, которая может возвращать несколько разных коллекций.
Объекты в каждой коллекции могут иметь ссылки на объекты в других коллекциях.Например.У меня есть коллекция заказов и коллекция клиентов.Объекты Customer содержат коллекцию ссылок на заказ, и каждый заказ содержит ссылку на клиента.
Мне было интересно, как люди обычно обрабатывают подобные вещи на стороне клиента.Насколько я вижу, я могу выбрать:
1) Просто позвольте WCF сериализовать любые объекты-члены полностью, и не беспокойтесь о дублировании.Я знаю, что могу использовать [PreserveReferences], чтобы смягчить это до некоторой степени, но все еще очень много дублирования и ненужной сериализации.То есть, если я запрашиваю объект клиента из службы, он будет сериализовать всех членов каждого заказа, который есть у клиента, даже если у меня уже есть эти объекты на стороне клиента в моей коллекции заказов.Это также означает, что я должен быть осторожен, чтобы постоянно сопоставлять вещи по Id, а не просто сравнивать экземпляры.
2) Идентификаторы Serialise Id, а не экземпляры.Это кажется наиболее разумным подходом, но означает, что у меня должна быть точка, где я снова превращаю эти идентификаторы в экземпляры на стороне клиента.Это вносит целый беспорядок в то, где это сделать, и как внедрить необходимые репозитории для подключения.
3) Просто используйте идентификаторы везде в клиенте вместо подключения экземпляров.Это просто кажется мне неправильным и отходит от всей цели ООП.Вместо того, чтобы получить доступ к коллекции на объекте, я должен получить доступ к коллекции идентификаторов, а затем просмотреть их через какой-то глобальный репозиторий.
В данный момент я склоняюсь к 2, но мне не нравится беспорядок сериализацииэто будет.
Я должен отметить, что клиент, вероятно, гораздо более динамичный, чем большинство клиентов WCF, и он поддерживает открытое соединение со службой с помощью обратных вызовов и т. Д. Для поддержки своих коллекций, поскольку он отображает данные в реальном времени.
Приветствия