442 messaggi dal 09 marzo 2006
Ciao,per quanto riguarda i dati ho raggiunto una soluzione a meta tra quella dell articolo con i repository generici e quella consigliata da moreno.
In pratica uso solo 4 metodi con i generics getall, get(item)con un predicato per la where, update e delete. Poi la bbl la faccio con linq in pratica carico delle collezioni nel viewmodel in delle liste che sono variabili membro e "filtro" queste liste con linq a seconda di quello che voglio ottenere.a me funziona bene chiedevo solo se questo metodo non mi porta a consumare troppa memoria mentalmente sono legato al c++ e non riesco bene a capire il garbage collector, e un po come gli smart pointer?quando non ci sono piu riferimenti elimina la memoria? Comunque ho pensato alla stesso tipo di soluzione per consumare un webservice rest in pratica uso un oggetto con metodi statici che descrive la resource, la resources ed espone tre metodi per creare, cancellare e fare l'update.
Questo oggetto viene passato ad un oggetto logica che esegue le chiamate di update create e delete e si fa ritornare la response da cui con linq to xml ottengo cio che mi serve e uso il db per storare i dati che voglio.i metodi nell oggetto statico per creare o fare l update li implemento a mano per creare la request per intenderci se uso xml o json.
In pratica voglio usare lo stesso metodo per i dati per il webservice.
Uso un repository generico a cui passo l oggetto statico descrittore e mi creo un crud repository. Il problema per cui pongo questa domanda e il modo di usare i client http come faccio a non creare un client tutte le volte ?c è un buon metodo? Per vedere ho guardato i pool di connessioni nei programmi web ma non so se e giusto Inoltre e meglio usare i generics o le classi base? O le interfacce? Ultime due domande : come client http uso restsharp e ha dei metodi per le chiamate asincrone e buona norma usare queste?
I generics hanno tutte le funzionalita dei template in c++ o hanno delle differenze.questo lo chiedo perche c' è la risposta a una mia domanda come in modern c++ programming posso comporre una classe a cui passo degli oggetti con funzioni statiche per ogni parte logica di cio che voglio ottenere e comporle queste sono chiamate policy si usano in c#?
E chiamata programmazione generica. Scusate il casino.ciao.poi ho tutto cio che mi serve e non chiedo piu nulla.grazie ciao
497 messaggi dal 08 febbraio 2009
Non credo di riuscire a rispondere a tutte le domande, primo perchè non sono così esperto, secondo perchè non le ho capite tutte.

Partiamo dal Garbage Collector.
In linea di massima è lui che si occupa di liberare la memoria, cosa che in C è affidata allo sviluppatore.
Difficile dire se sia meglio o peggio. Di sicuro è più comodo (non ci si deve pensare più di tanto), inoltre per le prestazioni può essere anche comodo lasciare che l'app usi il processore per fare le sue operazioni nei momenti di punta, mentre userà l stesso processore per liberare la memoria nei momenti di calma... Ovviamente l'uso di risorse è bene dimensionarlo corretto, se non altro per questione di buona programmazione (inutile dichiarare un array di 1.000 elementi quando si sa già che non saranno mai più di 10).

Generics contro templates.
A livello logico credo che i generics e i templates si assomiglino molto: scrivi un metodo usando un generico, quindi lo riutilizzi più volte nel codice, evitando di scriverne uno per ogni classe.
La differenza credo che sia principalmente tecnica. Per quel che so io, i templates del C funzionano solo lato "scrittura", però quando si compila il codice, il compilatore di fatto crea una porzione di codice per ciascun tipo di dato che richiama i template. Ad esempio se scrivi il template "Max" che lavora coi templates, poi nel tuo progetto lo usi sia per interi che per float, il compilatore ti genera il codice con l'implementazione per gli interi e l'implementazione per i float. Quindi tu hai scritto una volta sola il codice, ma nel compilato ci sono entrambe le versioni.
Per quanto riguarda i generics, invece, lavora a runtime con le interfacce/classi base. Quindi nel compilato c'è solo un'implementazione.
Non so se ho reso l'idea della differenza

Codice client
Non ho capito bene la struttura dei tuoi repository, però se fai una sorta di webservice REST e vuoi implementare la chiamata da più client (linguaggi di programmazione), è normale che tu debba scrivere la parte di richiamo server in tutti i linguaggi di programmazione che andrai ad utilizzare.
Se però tutti i client dovranno accedere agli stessi metodi e nello stesso modo, forse certe logiche ti conviene portarle lato server così da non doverle implementare per ciascun linguaggio.
Faccio un esempio banale. Supponiamo che tu voglia gestire l'anagrafica cliente e che tutti i client debbano mostrare i clienti ordinati per ragione sociale. Ti viene più comodo fare in modo che il server torni già i dati ordinati per ragione sociale anzichè implementare la "order by" su tutti i client.
Allo stesso modo, qualora volessi filtrare per una stringa cercando fra ragione sociale ed indirizzo, ti conviene fare un metodo sul server che accetta una stringa ed applica le logiche di filtro anzichè implementare il filtro in tutti i client.


Spero di esserti stato d'aiuto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.