Carregamento lento com um modelo de domínio de serviço WCF?
-
09-06-2019 - |
Pergunta
Estou tentando enviar meu modelo de domínio para uma API de serviço WCF e gostaria de ter algumas ideias sobre técnicas de carregamento lento com esse tipo de configuração.
Alguma sugestão ao adotar essa abordagem?
quando implementei essa técnica e entrei em meu aplicativo, pouco antes de o servidor retornar minha lista, ele atingiu o get de cada propriedade que deveria ser carregada lentamente ...Carregamento tão ansioso.Você poderia explicar esse problema ou sugerir uma resolução?
Editar:Isto parece você pode usar o atributo XMLIgnore para que ele não seja visualizado durante a serialização.ainda estou lendo sobre isso
Solução
Quanto a qualquer arquitetura remota, você deve evitar carregar um gráfico de objeto completo "no fio" de maneira descontrolada (a menos que você tenha um número trivialmente pequeno de objetos).
O Artigo da Wikipédia tem as técnicas padrão praticamente resumidas (e em C#.também!).Usei fantasmas e detentores de valor e eles funcionam muito bem.
Para implementar esse tipo de técnica, certifique-se de separar estritamente as preocupações.No servidor, as classes de implementação do contrato de serviço devem ser os únicos bits do código que funcionam com contratos de dados.No cliente, a camada de acesso ao serviço deve ser o único código que funciona com os proxies.
Camadas como essa permitem ajustar a maneira como o serviço é implementado de forma relativamente independente das camadas da UI que chamam o serviço e da camada de negócios que está sendo chamada.Também lhe dá meia chance de teste de unidade!
Outras dicas
Não faça carregamento lento em uma interface de serviço.Defina DTOs explícitos e consuma-os como seus contratos de dados no WCF.
Você pode usar o NHibernate (ou outros ORMs) para buscar corretamente os objetos necessários para construir os DTOs.
Você poderia tentar usar algo baseado em REST (por exemplo, Serviços de dados ADO.NET) e envolva-o de forma transparente no código do cliente.