Domanda

Sto cercando di inserire il mio modello di dominio in un'API del servizio WCF e volevo avere alcune riflessioni sulle tecniche di caricamento lento con questo tipo di configurazione.

Qualche suggerimento quando si adotta questo approccio?


quando ho implementato questa tecnica ed entro nella mia app, appena prima che il server restituisca il mio elenco, raggiunge il get di ogni proprietà che dovrebbe essere caricata in modo lento ...Caricamento così impaziente.Potresti spiegare questo problema o suggerire una soluzione?

Modificare:Esso appare puoi utilizzare l'attributo XMLIgnore in modo che non venga visualizzato durante la serializzazione.sto ancora leggendo questo argomento però

È stato utile?

Soluzione

Come per qualsiasi architettura remota, ti consigliamo di evitare di caricare un grafico di oggetti completo "lungo il filo" in modo incontrollato (a meno che tu non abbia un numero banalmente piccolo di oggetti).

IL Articolo di Wikipedia ha le tecniche standard più o meno riassunte (e in C#.pure!).Ho usato sia fantasmi che detentori di valore e funzionano abbastanza bene.

Per implementare questo tipo di tecnica, assicurati di separare rigorosamente le preoccupazioni.Sul server, le classi di implementazione del contratto di servizio dovrebbero essere gli unici bit del codice che funzionano con i contratti dati.Sul client, il livello di accesso al servizio dovrebbe essere l'unico codice che funziona con i proxy.

La stratificazione in questo modo consente di regolare il modo in cui il servizio viene implementato in modo relativamente indipendente dai livelli dell'interfaccia utente che chiamano il servizio e dal livello aziendale che viene chiamato.Ti dà anche una mezza possibilità di eseguire test unitari!

Altri suggerimenti

Non eseguire il caricamento lento su un'interfaccia di servizio.Definisci DTO espliciti e utilizzali come contratti dati in WCF.

Puoi utilizzare NHibernate (o altri ORM) per recuperare correttamente gli oggetti necessari per costruire i DTO.

Potresti provare a utilizzare qualcosa basato su REST (ad es. Servizi dati ADO.NET) e inserirlo in modo trasparente nel codice cliente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top