title: Integrare codice C in progetto c#

author: FedeWiico

text:
Salve,
premetto che non sono un utente esperto di visual studio.
Ho un porgetto c# al quale vorrei aggiungere delle porzioni di codice
scritte in linguaggio C.
Come posso fare? Esiste un progetto (o una soluzione) di esempio dove
ci siano parti scritte in c# e parti scritte in C ?
Dalle prime prove che ho fatto mi sembra di capire (spero di
sbagliarmi) che non si possa usare piu di un linguaggio per il singolo
progetto, quindi sembra indispensabile fare una soluzione con 2
progetti di cui uno scritto in c# e l'altro in C++
grazie
Federico


title: Integrare codice C in progetto c#

author: Raffaele Rialdi [MVP]

text:

Ci sono almeno tre soluzioni:
1. I Platform Invocation Services (chiamati PInvoke) che ti permettono
di caricare in memoria dll native e chiamare le API in formato "C"
Pro: veloce da realizzare se l'api è semplice
Contro: la dichiarazione pinvoke può essere complessa da scrivere. Le
performance non sono le migliori
2. Usare C++/CLI per realizzare un "gateway". Le estensioni CLI di
Visual C++ ti permettono di scrivere una dll che è in grado di parlare
sia con il mondo nativo che managed.
Pro: ottieni le performance migliori
Contro: devi studiarti le estensioni CLI e capire bene come fare il
marshalling dei parametri
3. Wrappare il codice C dentro un oggetto COM
I progetti managed possono facilmente aggiungere una reference ad un
oggetto com ed utilizzarlo perché sfruttano i metadati presenti dentro
la type library dell'oggetto COM.
Pro: semplice da usare nel mondo nativo. Puoi lavorare in modo OOP in
quanto hai un vero oggetto e quindi di gestire il ciclo di vita di
quell'oggetto.
Contro: Il mondo com ti obbliga a registrare il componente. I tipi
utilizzabili nel mondo COM sono ristretti ad un set ridotto. Le
performance non sono le migliori
In giro troverai centinaia di risorse su ognuna delle soluzioni ...
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Integrare codice C in progetto c#

text:
> Ci sono almeno tre soluzioni:
Ok, ma sono tutte comunque possibili solo a patto che i sorgenti c/c++
siano su una dll.
Cercavo qualcosa che mi permettesse di scrivere parte di una funzione
o di un oggetto, ad esempio, in c# e parte in c/c++
E' possibile?
Qualcosa del tipo
#language c#
...
...
#language c
...
#language c#
#language VB
ecc..


title: Integrare codice C in progetto c#

text:

Non è una scelta dettata dalla follia di qualcuno ma devi fare i conti
con le specifiche dei linguaggi C e C++.
I problemi:
- C++ non ha un formato binario standard, quindi non puoi esporre una
classe se non a codice che venga compilato con la stessa versione del
compilatore.
- Per il C puoi farlo, ma ti limiti ad esporre funzioni (API). Le lib
non hanno un formato 'standard' quindi la soluzione è la dll
- Come conciliare la mancanza di metadati di C/C++ con i requisiti del
CLR? Come fai a dire che un char* sia una stringa o una struttura
complessa? (e gli esempi sono infiniti).
Quindi l'unico modo per "arricchire" l'output della compilazione C++
con questi metadati è di usare le type library com oppure le estensioni
CLI. Grazie a quei metadati il CLR capirà cosa vuoi fare.
Ancora una volta però il problema è di capire *dove* metti quei
metadati ... e la dll è la soluzione.
C'è un ultimo caso che ho mostrato molto tempo fa in una sessione:
- se usi VC++ e compili con le estensioni CLI (/clr)
- se usi il linker a mano (visual studio non lo supporta ma puoi
lanciare custom action dgli eventi di build)
In quelle condizioni puoi linkare gli obj C++/CLI con il codice IL
prodotto da CSC (C#) e ottenere un unico exe o dll. È laborioso ma
funziona.



title: [MSBuild] [VisualStudio] I miei Item vengono segnalati come errori [Minor] :-)

author: Giulio Petrucci

text:
Ciao a tutti,
sto muovendo (nei ritagli di tempo) i miri primi passi con MSBuild.
Editando un file .proj sto facendo una cosa del tipo:
<ItemGroups>
	<Pippo Include="..."/>
	<Pippo Include="..."/>
	...
</ItemGroups>
ma l'editor di VS (C# express 2010) il primo "Pippo" viene sottolineato
come fosse un errore (e a occhio nemmeno è tanto strano visto che non
credo che l'xml scheme preveda "Pippo" :-p). Esiste un qualche modo per
eliminare questo *fastidiosissimo* effeto? :-)
Ciao,
Giulio
--


title: Parallel extension

author: Stefano Paparesta

text:
Salve a tutti, una domandina veloce veloce.
COn il framework 4.0 sono state introdotte le Parallel extension, mi capita di usare il multithreading in alcuni servizi Windows che ho sviluppato, ha senso utilizzare i nuovi costrutti in questi servizi ? Più in generale quando usare il classico multithreading o le nuove librerie ?
Grazie
Stefano Paparesta


title: Parallel extension

text:

Se è sufficiente un solo thread puoi usare il thread pool.
Se puoi avere vantaggio a parallelizzare di più le TPL sono certamente
meglio.
Il primo passo è quello di identificare delle 'unit of work' che poi
vengono prese in carico da un task. Le tpl si occupano di
parallelizzare i task.
Più genericamente occhio a dividere il multithreading in almeno due
grosse suddivisioni.
- uso di un thread separato per non bloccare la UI (tipo chiamata di un
ws). Per questo le TPL non ti servono mentre sarà utile la keyword
async di C# 5 (che è in ctp)
- uso dei thread per ottenere performance migliori nella
parallelizzazione di un algoritmo. Qui le TPL sono preziose ma
attenzione che l'algoritmo deve poter essere parallelizzabile. Perciò è
necessaria una analisi a priori e molto probabilmente una riscrittura
dell'algoritmo stesso.
Es: eseguire un dithering floyd parallelizzando richiede la riscrittura
della logica dell'algoritmo.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Parallel extension

text:
Grazie Raffaele,
Se ho capito bene.... Ho un servizio che apre n thread (n configurabile) che aprono n seriali e i dati ricevuti li scrivono su sqlserver e fanno partire delle stampe. Posso dire che ogni attuale thread sia una unit of work distinta per cui se ho capito il tuo ragionamento potrebbero stare in task separati che potrebbero essere eseguiti su core separati oppure é meglio lasciarli cosí come sono adesso ?
Volevo anche chiederti un'altra cosa. Secondo te avrebbe senso invece di far scrivere ad ogni thread su sqlserver e stampare, condividere tra tutti questo codice, come lo potrei fare ? Anche perché come consigliatomi su questo forum volevo aggingere un host wcf al servizio per poterlo gestore da remoto e quindi come faccio a comunicare con ogni singolo thread per cambiare ad esempio la configurazione della seriale ?
Stefano


title: Parallel extension

text:
Stefano Paparesta wrote:
> Grazie Raffaele,
> Se ho capito bene.... Ho un servizio che apre n thread (n configurabile) che
> aprono n seriali e i dati ricevuti li scrivono su sqlserver e fanno partire
> delle stampe. Posso dire che ogni attuale thread sia una unit of work
> distinta per cui se ho capito il tuo ragionamento potrebbero stare in task
> separati che potrebbero essere eseguiti su core separati oppure é meglio
> lasciarli cosí come sono adesso ?
Il valore aggiunto delle TPL è di fornirti degli strumenti per
suddividere il tuo algoritmo in task (le unit of work) e di permetterti
di lanciarle distribuirle a runtime su n thread dove n verrà deciso
dalla TPL in funzione dell'hardware di runtime e dai tempi che verranno
stimati a runtime.
Per esempio le TPL implementano meccanismi per la cancellazione dei
vari task, work-stealing che redistribuisce il carico di task sui vari
thread, lo starvation detection che permette di rilevare potenziali
situazioni di deadlock, criteri per preservare l'ordine di esecuzione,
etc.
Dal tipo di caratteristiche è intuibile che questi siano valori
importanti se vengono sfruttati per algoritmi intensivi di CPU e non di
I/O dove puoi decidere a bocce ferme quanti thread vengano utilizzati
(e probabilmente con tempi molto lunghi). In questi casi (I/O
prolungato) la gestione manuale può avere il suo senso.
>
> Volevo anche chiederti un'altra cosa. Secondo te avrebbe senso invece di far
> scrivere ad ogni thread su sqlserver e stampare, condividere tra tutti questo
> codice, come lo potrei fare ? Anche perché come consigliatomi su questo forum
> volevo aggingere un host wcf al servizio per poterlo gestore da remoto e
> quindi come faccio a comunicare con ogni singolo thread per cambiare ad
> esempio la configurazione della seriale ?
Non è banale e andrebbe implementato con un oggetto singleton che
gestisca una coda di richieste con un semaforo che limiti la soglia del
numero di richieste ad accodare facendo attendere gli altri.
Ho implementato un servizio wcf che fa queste cose e c'è un bel po' di
codice 'tricky' da scrivere.
Probabilmente nel tuo caso è più semplice lasciare che ogni thread sia
completamente slegato lasciando che sia sql server a smazzarsi la
concorrenza (cosa che ovviamente sa fare molto bene).



title: Parallel extension

text:
Ok, grazie per la chiarificazione sul TPL.
Per il resto mi sa che devo inziare a pensarci, al singleton e la coda. Ci fosse qualche esempio in giro non farebbe male. Grazie ancora per i consigli
Stefano


title: [LINQ] Arma a doppio taglio?

text:
Ciao a tutti,
vi espongo brevemente il mio problema. Sto lavorando ad una applicazione
desktop in WPF, cercando di seguire un approccio "strettamente" DDD.
Ora, la mia applicazione è una specie di editor di grafi, una specie di
accrocco per disegnare mappe mentali e robaccia del genere. La
persistenza del grafo è su file, in una specie di formato XML. La mia
gerarchia di oggetti ha una radice comune:
interface IGraphObj {
	Guid Id { ... }
	Boolean IsDirty { ... }
	Boolean IsDeleted { ... }
}
class A : IGraphObj { ... }
class B : IGraphObj { ... }
...ecc ecc...
nel business layer ho definito una interfaccia per un eventuale
repository di IGraphObj e un servizio di business che implementi le
varie regole di business:
interface IGraphService {
	...blablabla...
	IQueryable<T> Query<T>() where T : IGraphObj;
}
l'implementazione di questo servizio dovrebbe utilizzare un repository
con dei metodi generici. So far, so good? E invece no! :-( La mia idea
era infatti quella di avere ad esempio:
class MyGraphService
{
	protected IGraphObjRepository repo;

	IQueryable<T> Query<T>() where T : IGraphObj {
		return repo.Query<T>();
	}
}
tuttavia, quando la query viene "materializzata" non ho la garanzia che
gli oggetti siano sempre gli stessi (ed è necessario visto che il ciclo
di vita dell'applicazione può essere tecnicamente infinito). Quindi,
ragionandoci bene, ho due problemi all'apparenza INSORMONTABILI:
1. la necessità di utilizzare LINQ a livello di applicazione su una
persistenza in XML secondo un formato "custom";
2. la necessità di implementare un identity map e filrare su questa ogni
query alla materializzazione.
Ok, mi sono spinto troppo in là?
Ho sbagliato completamente approccio?
Devo implementarmi un super-linq-provider a mano?
Qualche consiglio?
Grazie,
Giulio
--


title: [LINQ] Arma a doppio taglio?

text:
Giulio Petrucci wrote:
> tuttavia, quando la query viene "materializzata" non ho la garanzia che gli
> oggetti siano sempre gli stessi (ed ï¿œ necessario visto che il ciclo di vita
> dell'applicazione puï¿œ essere tecnicamente infinito). Quindi, ragionandoci
> bene, ho due problemi all'apparenza INSORMONTABILI:
> 1. la necessitï¿œ di utilizzare LINQ a livello di applicazione su una
> persistenza in XML secondo un formato "custom";
> 2. la necessitï¿œ di implementare un identity map e filrare su questa ogni
> query alla materializzazione.
Ciao Giulio,
forse non ho capito bene ma:
- perchï¿œ vuoi usare linq to xml invece di deserializzare e usare linq
to object?
- per ddd l'identity devi garantirla a livello di oggetto e mi sembra
che il guid faccia il suo mestiere. Fammi capire meglio.
Tieni conto che linq2xml necessita di caricare tutto l'xml in memoria
quindi non hai comportamenti lazy. Se deserializzi occupi certamente
meno memoria e hai la comoditï¿œ di lavorare sui tuoi oggetti.
Se cerchi il comportamento lazy verso xml (con l'intento di non
caricare tutto in memoria) allora ti tocca un provider linq che
peraltro non ï¿œ banale da scrivere perchï¿œ quando fai la query dovrai per
forza portarti qualcosa in memoria.... e a quel punto ti conviene usare
un db documentale come ravendb o mongodb.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: [LINQ] Arma a doppio taglio?

text:
Ciao Raf,
innanzitutto grazie della risposta.
On 7/7/2011 6:56 PM, Raffaele Rialdi [MVP] wrote:
> - perché vuoi usare linq to xml invece di deserializzare e usare linq to
> object?
No, non voglio usare linq2xml, tuttavia volevo evitare di deserializzare
il tutto per prevenire una eccessiva occupazione di memoria. Però
riconosco che questa potrebbe tranquillamente essere una paturnia. :-)
> - per ddd l'identity devi garantirla a livello di oggetto e mi sembra
> che il guid faccia il suo mestiere. Fammi capire meglio.
Uhm... in teoria sì. :-)
Ti spiego brevemente uno scenario (semi-apocalittico) che mi è venuto in
mente su due piedi. Ho l'editor del grafo e un pannello in cui è
presente la lista dei nomi di tutti i nodi del grafo di tipo A. Immagino
che ogni item sarà bindato all'oggetto Node a cui è bindato anche il
nodo che visivamente si vede nel grafo. Lo scenario è questo:
nell'editor cambio il nome al mio nodo da "Pippo" a "Pluto". La mia idea
è: vado sull'editor, doppio click sul nodo, cambio il nome e salvo. A
questo punto il viewmodel direttamente interessato alla modifica solleva
un evento EntityChanged che per quella particolare entità è stato
sottoscritto dal vieemodel che serve per visualizzare il nome del nodo
nel pannello che, ricevuto l'evento, solleva una INotifyPropertyChange.
Se l'oggetto non è lo stesso (i.e. stessa locazione di memoria) la
sincronizzazione dei due viewmodel deve essere esplicitata (il che non è
umanamente sopportabile :-)).
Oppure sono completamente fuori strada?
> Tieni conto che linq2xml necessita di caricare tutto l'xml in memoria
> quindi non hai comportamenti lazy. Se deserializzi occupi certamente
> meno memoria e hai la comodità di lavorare sui tuoi oggetti.
Vedi quanto detto sopra.
> Se cerchi il comportamento lazy verso xml (con l'intento di non caricare
> tutto in memoria) allora ti tocca un provider linq che peraltro non è
> banale da scrivere perché quando fai la query dovrai per forza portarti
> qualcosa in memoria.... e a quel punto ti conviene usare un db
> documentale come ravendb o mongodb.
una alternativa potrebbe essere quella di usare un formato di
persistenza ultraminimale come protocol buffer o documenti JSON.
Peraltro la persistenza non è detto che sia su un unico documento XML ma
potrebbe già dallo stadio iniziale della cosa essere sparpagliata su più
files. Ma onestamente non so quanto gli accessi a disco possano essere
addirittura più fastidiosi. :-)
Grazie,
Giulio
p.s. ravendb e mongodb... mai avuto il piacere. :-) Ho giocherellato un
po' con le API python di CouchDB. Avresti qualche buon punto di
partenza? Grazie!
--


title: [LINQ] Arma a doppio taglio?

text:
Giulio Petrucci wrote:
> Ciao Raf,
>
> innanzitutto grazie della risposta.
prego :)
> No, non voglio usare linq2xml, tuttavia volevo evitare di deserializzare il
> tutto per prevenire una eccessiva occupazione di memoria. Però riconosco che
> questa potrebbe tranquillamente essere una paturnia. :-)
Beh mi aspetto che un dom xml in memoria occupi di più rispetto a
oggetti strong-typed deserializzati
> Uhm... in teoria sì. :-)
> Ti spiego brevemente uno scenario (semi-apocalittico) che mi è venuto in
> mente su due piedi. Ho l'editor del grafo e un pannello in cui è presente la
> lista dei nomi di tutti i nodi del grafo di tipo A. Immagino che ogni item
> sarà bindato all'oggetto Node a cui è bindato anche il nodo che visivamente
> si vede nel grafo. Lo scenario è questo: nell'editor cambio il nome al mio
> nodo da "Pippo" a "Pluto". La mia idea è: vado sull'editor, doppio click sul
> nodo, cambio il nome e salvo. A questo punto il viewmodel direttamente
> interessato alla modifica solleva un evento EntityChanged che per quella
> particolare entità è stato sottoscritto dal vieemodel che serve per
> visualizzare il nome del nodo nel pannello che, ricevuto l'evento, solleva
> una INotifyPropertyChange. Se l'oggetto non è lo stesso (i.e. stessa
> locazione di memoria) la sincronizzazione dei due viewmodel deve essere
> esplicitata (il che non è umanamente sopportabile :-)).
> Oppure sono completamente fuori strada?
se per te il nome è un attributo (un po' come il nome del file su ntfs)
il problema non esiste visto che l'oggetto è sempre lo stesso e la sua
identity è garantita con il guid.
se il nome cambia la semantica del tuo modello, probabilmente vorrai
fare una replace di oggetti nella collection/grafo invece di una mera
rinomina.
in entrambi i casi avere oggetti che sono rappresentati da più
viewmodel contemporaneamente non è inusuale. Le strategie possono
essere molto differenti.
Possiamo pensare a diverse soluzioni come ad esempio un modello a
provider in cui il vm si rifornisce da un provider che prende le entity
e le passa al vm che le referenzia con dei weakreference. Quando il
weakreference non è più valido, il provider le ricarica.
Dipende molto da quante entity puoi avere. Se sono tante e piccole è
impensabile (a mio avviso) proxarle tutte perché avresti un botto di
uso di memoria.
La comunicazione tra vm la fai al solito con il mediator.
> una alternativa potrebbe essere quella di usare un formato di persistenza
> ultraminimale come protocol buffer o documenti JSON. Peraltro la persistenza
> non è detto che sia su un unico documento XML ma potrebbe già dallo stadio
> iniziale della cosa essere sparpagliata su più files. Ma onestamente non so
> quanto gli accessi a disco possano essere addirittura più fastidiosi. :-)
>
Resta il fatto che la serializzazione in stringa tipicamente è più
onerosa di memoria rispetto ad oggetti strong-typed.
Se vai per quella strada allora è decisamente meno oneroso lavorare con
db documentali e i relativi provider linq che ti danno già la
serializzazione/deserializzazione e il lazy.
Per quanto riguarda il file system, è sconsigliabile superare le
migliaia in singole cartelle perché se l'utente ci entra con explorer
diventa nonno :) Io lo eviterei se non per i blob che, sempre imho, non
ha mai senso tenerli dentro un db (relazionale o documentale che sia)
> Grazie,
prego
> p.s. ravendb e mongodb... mai avuto il piacere. :-) Ho giocherellato un po'
> con le API python di CouchDB. Avresti qualche buon punto di partenza? Grazie!
sulle rispettive home dei progetti trovi download ed esempi.
Io ho giocato di più con mongodb ma ravendb ha dalla sua il fatto di
essere json-nativo. Entrambi hanno il provider linq.
Su mongodb trovi anche un paio di articoli su msdn magazine.



title: [LINQ] Arma a doppio taglio?

text:
Ciao Raf,
On 7/8/2011 4:20 PM, Raffaele Rialdi [MVP] wrote:
> Beh mi aspetto che un dom xml in memoria occupi di più rispetto a
> oggetti strong-typed deserializzati
Decisamente! :-)
Ribadisco: la "necessità" di non avere tutto caricato in memoria non è
una necessità effettiva ma una mia paturnia. :-)
> se per te il nome è un attributo (un po' come il nome del file su ntfs)
> il problema non esiste visto che l'oggetto è sempre lo stesso e la sua
> identity è garantita con il guid.
Ok, quindi l'oggetto *deve* essere sempre lo stesso. :-)
Una cosa mi sfugge: perché dici che l'identità è garantita con il GUID?
Se io ho una cosa tipo:
var x = new MyObj() { Id = Guid.NewGuid(), Name = "x" };
var y = new MyObj() { Id = x.Id, Name = "y" };
non è vero che x == y. Giusto?
Oppure intendevi tutt'altra cosa?
> in entrambi i casi avere oggetti che sono rappresentati da più viewmodel
> contemporaneamente non è inusuale. Le strategie possono essere molto
> differenti.
> Possiamo pensare a diverse soluzioni come ad esempio un modello a
> provider in cui il vm si rifornisce da un provider che prende le entity
> e le passa al vm che le referenzia con dei weakreference. Quando il
> weakreference non è più valido, il provider le ricarica.
Questa potrebbe essere una alternativa.
Tuttavia ha senso avere dei weakreference a delle entità che comunque
sono già state caricate in memoria? Oppure dici che bisognerebbe
caricare tutto quando serve e poi scaricare tutto e lasciare solo le
weakreferences?
> Dipende molto da quante entity puoi avere. Se sono tante e piccole è
> impensabile (a mio avviso) proxarle tutte perché avresti un botto di uso
> di memoria.
Ok, comincio a capire... ovviamente se le tengo tutte caricate, non ha
senso anche proxarle, giusto?
> Resta il fatto che la serializzazione in stringa tipicamente è più
> onerosa di memoria rispetto ad oggetti strong-typed.
> Se vai per quella strada allora è decisamente meno oneroso lavorare con
> db documentali e i relativi provider linq che ti danno già la
> serializzazione/deserializzazione e il lazy.
Il primo step del progetto (e dall'andazzo la cosa resterà invariata
:-P) prevede persistenza su file system, quindi...
> Per quanto riguarda il file system, è sconsigliabile superare le
> migliaia in singole cartelle perché se l'utente ci entra con explorer
> diventa nonno :) Io lo eviterei se non per i blob che, sempre imho, non
> ha mai senso tenerli dentro un db (relazionale o documentale che sia)
...quindi per ora si parte con quattro o cinque cartelle su FS e una
ventina di files xml. Chi vivrà, vedrà. :-)
Ciao e grazie,
Giulio
--


title: [LINQ] Arma a doppio taglio?

text:
Giulio Petrucci wrote:
> Decisamente! :-)
> Ribadisco: la "necessità" di non avere tutto caricato in memoria non è una
> necessità effettiva ma una mia paturnia. :-)
:)
> Ok, quindi l'oggetto *deve* essere sempre lo stesso. :-)
> Una cosa mi sfugge: perché dici che l'identità è garantita con il GUID? Se io
> ho una cosa tipo:
>
> var x = new MyObj() { Id = Guid.NewGuid(), Name = "x" };
> var y = new MyObj() { Id = x.Id, Name = "y" };
>
> non è vero che x == y. Giusto?
> Oppure intendevi tutt'altra cosa?
no, certo. L'identità la devi garantire a livello logico
> Questa potrebbe essere una alternativa.
> Tuttavia ha senso avere dei weakreference a delle entità che comunque sono
> già state caricate in memoria? Oppure dici che bisognerebbe caricare tutto
> quando serve e poi scaricare tutto e lasciare solo le weakreferences?
le weakref sono comode perché se sono referenziate da molte parti
rischi di non tirarle più giù dalla memoria quando non ne hai più
bisogno.
Dipende quindi da come usi le tue entity (da quante parti vengono
referenziate).
> Ok, comincio a capire... ovviamente se le tengo tutte caricate, non ha senso
> anche proxarle, giusto?
Come dicevo prima è una valutazione che dipende da quante ne carichi e
quanto occupano.
Prova a tirarne su un po', quindi vai di estensioni SOS del debugger e
guardi quanti oggetti/dimensione ci sono in memoria per quel type.
Sotto SOS c'è sempre il modo di stupirsi :)
A livello architetturale sarebbe bello poter avere sempre uno strato
per disaccoppiare. A livello pratico devi starci molto attento
altrimenti vedi accoppare memoria e performance (e non ci esci più
vivo).
> Il primo step del progetto (e dall'andazzo la cosa resterà invariata :-P)
> prevede persistenza su file system, quindi...
paradossalmente è la strada più complessa ... in bocca al lupo :)
> ...quindi per ora si parte con quattro o cinque cartelle su FS e una ventina
> di files xml. Chi vivrà, vedrà. :-)
>
> Ciao e grazie,
> Giulio
Prego, ciao :)



title: [LINQ] Arma a doppio taglio?

text:
Ciao Raf,
On 7/11/2011 9:44 AM, Raffaele Rialdi [MVP] wrote:
> le weakref sono comode perché se sono referenziate da molte parti rischi
> di non tirarle più giù dalla memoria quando non ne hai più bisogno.
> Dipende quindi da come usi le tue entity (da quante parti vengono
> referenziate).
In generale ci sono entità che possono essere referenziate una sola
volta e altre che possono essere referenziate MILLEMILA (TM) volte...
> Come dicevo prima è una valutazione che dipende da quante ne carichi e
> quanto occupano.
Capisco. Ho fatto una stima a spanne e per ora problemi non ce ne
dovrebbero essere.
> A livello architetturale sarebbe bello poter avere sempre uno strato per
> disaccoppiare. A livello pratico devi starci molto attento altrimenti
> vedi accoppare memoria e performance (e non ci esci più vivo).
Sì, è uno scenario che avevo previsto.
> paradossalmente è la strada più complessa ... in bocca al lupo :)
Lo so, lo so... :-)
Crepi il lupo!
Ciao,
Giulio
--


title: [LINQ] Arma a doppio taglio?

text:
Giulio Petrucci wrote:
> In generale ci sono entità che possono essere referenziate una sola volta e
> altre che possono essere referenziate MILLEMILA (TM) volte...
Il problema c'è solo se queste millemila sono sparse.
Per esempio se una entity è referenziata millemilavolte all'interno del
grafo di cui fa parte e solo una volta dalla view, il problema
probabilmente non si pone perché quando butti giù il grafo e resetti la
view sparisce tutto.
Questa è un'analisi che sta a te ...
> Capisco. Ho fatto una stima a spanne e per ora problemi non ce ne dovrebbero
> essere.
[...]
> Sì, è uno scenario che avevo previsto.
ottimo
> Lo so, lo so... :-)
> Crepi il lupo!
:)
ciao!



title: [LINQ] Arma a doppio taglio?

text:
Ciao Raf,
On 7/11/2011 1:06 PM, Raffaele Rialdi [MVP] wrote:
> Il problema c'è solo se queste millemila sono sparse.
> Per esempio se una entity è referenziata millemilavolte all'interno del
> grafo di cui fa parte e solo una volta dalla view, il problema
> probabilmente non si pone perché quando butti giù il grafo e resetti la
> view sparisce tutto.
> Questa è un'analisi che sta a te ...
Le millemila volte sono *decisamente* sparse. :-)
Direi che sono arrivato a una conclusione plausibile: fintantoché le
dimensioni del grafo mi permettono di tenere tutto in memoria, farò
così. Altrimenti, si passa alle weakref.
Grazie ancora,
Giulio
--


title: [LINQ] Arma a doppio taglio?

text:
Giulio Petrucci wrote:
> Le millemila volte sono *decisamente* sparse. :-)
:)
> Direi che sono arrivato a una conclusione plausibile: fintantoché le
> dimensioni del grafo mi permettono di tenere tutto in memoria, farò così.
> Altrimenti, si passa alle weakref.
Il weakref è utile solo quando le reference sparse sono al di fuori del
blocco che usualmente butti via.
Al contrario di com, con .net non hai problemi di circular references
per cui se hai due oggetti A e B:
A => B   e   B => A
Entrambi gli oggetti verranno buttati via quando non avrai alcun
reference che punta ad A o B (non si tengono in memoria
vicendevolmente).
Nel caso reale potresti avere il tuo grafo che referenzia 10 oggetti
con tutte le possibili permutazioni => n *(n-1) = 10 * 9 = 90 max
reference
Se però viene usato solo da una view/viewmodel e per chiudere la view
butti via view/viewmodel, il weakref non ti serve più.
>
> Grazie ancora,
> Giulio
Prego, ciao



title: LightSwitch

author: amlo

text:
Quando e perchï¿œ usare LightSwitch al posto di Windows Forms.
E' uno strumento pensato per end-user?
E' uno strumento pensato per sostituire Access?
E' uno strumento pensato per sostituire Windows Forms?
Non mi e' chiaro perche' lo slogan ï¿œ "Fai una applicazione business in
15 minuti", ma io la faccio anche con Windows Forms in 15 minuti se ï¿œ
una applicazione da 15 minuti.
A quali strategie ha pensato Microsoft quando ha concepito LightSwitch?


title: LightSwitch

author: Mario De Ghetto [MVP]

text:
> Quando e perchï¿œ usare LightSwitch al posto di Windows Forms.
> E' uno strumento pensato per end-user?
Si, per "power end user" e per sviluppatori.
> E' uno strumento pensato per sostituire Access?
No, Access ha un altro target.
> E' uno strumento pensato per sostituire Windows Forms?
No, ï¿œ scritto in Silverlight, puï¿œ servire per creare applicazioni da
pubblicare sul web o per desktop, ma non sostituisce Windows Forms (per
quello c'ï¿œ giï¿œ WPF).
> Non mi e' chiaro perche' lo slogan ï¿œ "Fai una applicazione business in 15
> minuti", ma io la faccio anche con Windows Forms in 15 minuti se ï¿œ una
> applicazione da 15 minuti.
> A quali strategie ha pensato Microsoft quando ha concepito LightSwitch?
E' un prodotto per creare applicazioni gestionali basate sulla coppia
"schermata + dati".
Facilita la connessione a un database SQL Server e il binding con delle
schermate predisposte da LightSwitch stesso.
Utilizzabile da utenti avanzati per creare applicazioni senza dover
attendere il "reparto IT" e per sviluppatori che vogliono creare
un'applicazione velocemente, per risolvere problemi "standard".
Per ottenere qualcosa di piï¿œ personalizzato, perï¿œ, ï¿œ necessario lavorare sul
codice (estensioni, connessione ad altri tipi di database, grafici, stampa,
controlli personalizzati ecc.).
--------------------------
Mario De Ghetto
Microsoft MVP - Visual Basic
Community DotNetWork.it
http://community.dotnetwork.it/mario.deghetto/default.aspx
http://deghetto.wordpress.com


title: [C] Utilizzo User Control

author: Roby

text:
Ciao a tutti.

Questo è lo scenario : TabControl cui aggiungo dinamicamente delle
TabPages . Nelle Tabpages inserisco uno User Control che ha due Textbox.
Le tabpages infatti devono avere tutte la stessa configurazione.

In un metodo ButtonClick  inserisco la creazione dello user control e
della tabpage :
TabPage tb = new TabPage("Prova");
UserControl1 user = new UserControl1();
tb.Controls.Add(user);
tabControl1.TabPages.Add(tb);

Quando eseguo una iterazione trai controlli dalle tabpages il valore
delle textbox è sempre "" , cioè vuote. L'iterazione riconosce che ci
sono dei textbox ma non ne arriva il contenuto.

Dove sbaglio ?

Grazie.
Rob


title: [C] Utilizzo User Control

author: LudovicoVan

text:
"Roby"  wrote in message
news:4eeef71d$0$1384$4faf...@reader2.news.tin.it...

> Quando eseguo una iterazione trai controlli dalle tabpages il
> valore delle textbox è sempre "" , cioè vuote. L'iterazione riconosce
> che ci sono dei textbox ma non ne arriva il contenuto.

La prima cosa e' che i controlli aggiunti dinamicamente alla pagina vanno
aggiunti nell'OnInit (o nel Page_Init), e vanno riaggiunti ad ogni
post-back.  Questo perche', oltre al fatto che i controlli aggiunti
dinamicamente non vengono automaticamente ripristinati ai post-back, e' fra
l'Init e il Load che avviene il recupero dei dati dal ViewState: se aggiungi
i controlli dopo l'Init, il ViewState non viene ripristinato (ed altri
errori collegati potrebbero insorgere).

(Te la do 9 su 10, non avendo visto in dettaglio il codice della tua
pagina...)

-LV


title: [C] Utilizzo User Control

text:
> La prima cosa e' che i controlli aggiunti dinamicamente alla pagina
> vanno aggiunti nell'OnInit (o nel Page_Init), e vanno riaggiunti ad ogni
> post-back. Questo perche', oltre al fatto che i controlli aggiunti
> dinamicamente non vengono automaticamente ripristinati ai post-back, e'
> fra l'Init e il Load che avviene il recupero dei dati dal ViewState: se
> aggiungi i controlli dopo l'Init, il ViewState non viene ripristinato
> (ed altri errori collegati potrebbero insorgere).
>
> (Te la do 9 su 10, non avendo visto in dettaglio il codice della tua
> pagina...)

Sorry,  mi sono espresso male.
Innanzituto parliamo di Windows Form . In sostanza quando creo più volte
lo stesso User Control ,( una ogni tabpage del tabcontrol)  non riesco a
leggere la proprietà text dei textboxes  : il risultato è sempre "" .

Riformulo la domanda : come si fa a trasferire dati dagli user control (
in questo caso leggere i textbox) quando si creano più istanze del
medesimo usercontrol ?
Rob


title: Path relativi inun file .csproj

text:
Ciao a tutti,
per poter eseguire nunit.exe "dentro" al debugger di Visual C# Express
ho optato per questa cosa qui:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==
'Debug|AnyCPU' ">
	...
	<OutputPath>..\..\test\</OutputPath>
	<DefineConstants>DEBUG</DefineConstants>
	<ErrorReport>prompt</ErrorReport>
	<WarningLevel>4</WarningLevel>
	<StartAction>Program</StartAction>
	<StartProgram>..\..\test\nunit.exe</StartProgram>
	<StartArguments>MiaLibreria.dll</StartArguments>
</PropertyGroup>
L'eseguibile di NUnit con tutte le librerie necessarie sono già state
copiate in ..\..\test, tuttavia il debugger di VisualStudio doce che
"the debug target ..\..\test\nunit.exe is missing", anche se non è così.
Ho provato con $(OutputPath) ma la storia non cambia. Funziona solo se
metto il path assoluto. Ma questo è un *danno* perché ovviamente ogni
sviluppatore del team ha il progetto dove vuole lui. :-)
Come posso fare?
Grazie,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
>
> L'eseguibile di NUnit con tutte le librerie necessarie sono già state copiate
> in ..\..\test, tuttavia il debugger di VisualStudio doce che "the debug
> target ..\..\test\nunit.exe is missing", anche se non è così.
A naso mi sembra che manchi un "..\", ad ogni modo taglia la testa al
toro e usa procmon (parte di sysinternals) per vedere dove viene
cercato il file.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Path relativi inun file .csproj

text:
Ciao Raf,
On 1/21/2011 1:39 PM, Raffaele Rialdi [MVP] wrote:
> A naso mi sembra che manchi un "..\",
uh?
> ad ogni modo taglia la testa al
> toro e usa procmon (parte di sysinternals) per vedere dove viene cercato
> il file.
Fatto.
Ho filtrato tutte le entry per il processo vcsexpress e con result
diverso da success. Pare che ..\..\test\nunit.exe sia cercato in:
C:\Program Files\Microsoft Visual Studio 10.0\test\nunit.exe
Il che, mi sembra abbastanza strano...
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:

Prova a vedere se questo e' rilevante:
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/066abee0-b20c-4c57-a337-061e38f83490
(Se quel link non funziona, questo dovrebbe:
http://tinyurl.com/4c7r2yj
)
-LV


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> Fatto.
> Ho filtrato tutte le entry per il processo vcsexpress e con result diverso da
> success. Pare che ..\..\test\nunit.exe sia cercato in: C:\Program
> Files\Microsoft Visual Studio 10.0\test\nunit.exe
> Il che, mi sembra abbastanza strano...
>
Basta che metti $(qualcosa)\..\.. e dovresti andare a posto.
Il path program files lo mette perché riparte dall'exe e non dal
progetto



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/1/2011 4:48 PM, Raffaele Rialdi [MVP] wrote:
> Basta che metti $(qualcosa)\..\.. e dovresti andare a posto.
> Il path program files lo mette perché riparte dall'exe e non dal progetto
La mia entry nel file .csproj è:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==
'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>..\..\test\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <StartAction>Program</StartAction>
     <StartProgram>$(OutputPath)nunit.exe</StartProgram>
     <StartArguments>Blablabla.Test.dll</StartArguments>
   </PropertyGroup>
Il file viene cercato sempre in; C:\Program Files\Microsoft Visual
Studio 10.0\test\nunit.exe
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> La mia entry nel file .csproj ï¿œ:
> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU'
> ">
>      <DebugSymbols>true</DebugSymbols>
>      <DebugType>full</DebugType>
>      <Optimize>false</Optimize>
>      <OutputPath>..\..\test\</OutputPath>
>      <DefineConstants>DEBUG;TRACE</DefineConstants>
>      <ErrorReport>prompt</ErrorReport>
>      <WarningLevel>4</WarningLevel>
>      <StartAction>Program</StartAction>
>      <StartProgram>$(OutputPath)nunit.exe</StartProgram>
>      <StartArguments>Blablabla.Test.dll</StartArguments>
>    </PropertyGroup>
>
> Il file viene cercato sempre in; C:\Program Files\Microsoft Visual Studio
> 10.0\test\nunit.exe
Ho fatto una prova e le var di progetto non funzionano.
Purtroppo non vanno neppure quelle di environment, quindi credo che ti
resti solo il mettere in PATH nunit.



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/2/2011 9:28 AM, Raffaele Rialdi [MVP] wrote:
> Ho fatto una prova e le var di progetto non funzionano.
> Purtroppo non vanno neppure quelle di environment, quindi credo che ti
> resti solo il mettere in PATH nunit.
Mi fido ciecamente di te ma... faccio davvero fatica a pensare che sia
così. :-)
O gli sviluppatori di VS hanno fatto un #FAIL clamoroso, oppure mi/ci
sfugge qualcosa.
Ciao e grazie,
Giulio
--


title: Path relativi inun file .csproj

text:
Ciao LudovicoVan,
On 2/1/2011 4:13 PM, LudovicoVan wrote:
> Prova a vedere se questo e' rilevante:
>
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/066abee0-b20c-4c57-a337-061e38f83490
Gli ho dato una letta ma non è che ci abbia capito granché. :-p
Potresti darmi qualche chiarimento ulteriore?
Grazie,
Giulio
--


title: Path relativi inun file .csproj

text:
On Feb 3, 11:25 am, Giulio Petrucci <sis...@nonono.boh> wrote:
> On 2/1/2011 4:13 PM, LudovicoVan wrote:
>
> > Prova a vedere se questo e' rilevante:
> >
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/066abee0.
..
>
> Gli ho dato una letta ma non è che ci abbia capito granché. :-p
> Potresti darmi qualche chiarimento ulteriore?
E' qualcuno che sembra avere lo stesso problema.
La soluzione indicata da Hashimi (quella marcata come answer)
suggerisce di spostare le dichiarazioni (penso si riferisca appunto al
blocco PropertyGroup) *dopo* il blocco contentente l'Import Project="$
(MSBuildBinPath)\Microsoft.CSharp.targets".
Notavo anche che lo user in questione ha uno StartProgram del tipo $
(ProjectDir)$(OutputPath)$(ProgToStart), mentre tu avevi $
(OutputPath)ecc. solamente.
Di nuovo, non sono in grado di dirti se e quanto sia rilevante,
d'altra parte e' una rapida prova...
In bocca al lupo,
-LV


title: Path relativi inun file .csproj

text:
Ciao LudovicaVan,
On 2/3/2011 2:36 PM, LudovicoVan wrote:
> La soluzione indicata da Hashimi (quella marcata come answer)
> suggerisce di spostare le dichiarazioni (penso si riferisca appunto al
> blocco PropertyGroup)*dopo*  il blocco contentente l'Import Project="$
> (MSBuildBinPath)\Microsoft.CSharp.targets".
Si, ci ho provato ma... non compila. :-)
Pensavo infatti di aver toppato qualcosa.
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> Mi fido ciecamente di te ma... faccio davvero fatica a pensare che sia così.
> :-)
> O gli sviluppatori di VS hanno fatto un #FAIL clamoroso, oppure mi/ci sfugge
> qualcosa.
Gli strumenti come nunit sono relativamente giovani e poco utilizzati
Vs.net inoltre bada ovviamente di più agli strumenti integrati.
Infine la path assoluta è "solo" una scocciatura che affligge anche in
molte altre situazioni.
Trovo allora più "clamorosa" il fatto di non poter utilizzare un
progetto con più versioni di visual studio, specie quando il sorgente è
sotto source control. Crossing fingers x vNext ;)



title: Path relativi inun file .csproj

text:
Ciao a tutti,
On 1/20/2011 11:52 AM, Giulio Petrucci wrote:
[cut]
Vi farò breve quanto scoperto leggendo qui:
http://www.rhyous.com/2010/04/16/how-to-use-relative-paths-when-debugging-in-visual-studio-2008/
Se aprite la solution cliccando sul file .sln, è ok perché il percorso
di partenza sarà quello del file .sln. Se invece aprite VisualStudio e
poi caricate la solution, siete fregati.
Mi chiedo: possiamo parlare di bug oppure è una feature (e a questo
punto vorrei parlare con chi l'ha richiesta per capirne i motivi)?
HTH,
Giulio
--


title: Path relativi inun file .csproj

text:

A mio avviso il comportamento è by design perché cliccando sul sln stai
solo impostando la working directory alla cartella che contiene il file
sln.
Il problema che hai tu è che non riesci ad usare le var di progetto
nella dialog che lancia l'exe. L'exe infatti (come tutti gli exe)
prende la working directory corrente (a meno che non sia specificata
diversamente) e di conseguenza hai il comportamento che vedi.
Se vuoi usare questo sistema (cosa che ti sconsiglio) dovresti ottenere
lo stesso comportamento creando uno shortcut impostando la working
directory alla cartella della solution.



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/9/2011 1:51 PM, Raffaele Rialdi [MVP] wrote:
> Il problema che hai tu è che non riesci ad usare le var di progetto
> nella dialog che lancia l'exe.
Di quale dialog stiamo parlando?
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:

Proprietà del progetto - debug - dove indichi qual'è l'exe da lanciare
quando avvii il progetto da
vs.net



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/9/2011 5:06 PM, Raffaele Rialdi [MVP] wrote:
> Proprietà del progetto - debug - dove indichi qual'è l'exe da lanciare
> quando avvii il progetto da
vs.net
No, sono sulla express e quella cosa non si può fare.
Lo metto a mano nel .csproj (comunque la sostanza non dovrebbe cambiare).
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> No, sono sulla express e quella cosa non si puï¿œ fare.
> Lo metto a mano nel .csproj (comunque la sostanza non dovrebbe cambiare).
ops, non conosco la express, sorry.
concordo che non dovrebbe cambiare nulla.



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/9/2011 5:59 PM, Raffaele Rialdi [MVP] wrote:
> ops, non conosco la express, sorry.
> concordo che non dovrebbe cambiare nulla.
Ho fatto un paragone Express VS Pro ed effettivamente mi pare scrivano
le stesse cose. Comunque l'ho fatto un po' di tempo fa e non sono più
tanto sicuro.
E già che ci sono, provo pure con SharpDevelop. :-)
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> Ho fatto un paragone Express VS Pro ed effettivamente mi pare scrivano le
> stesse cose. Comunque l'ho fatto un po' di tempo fa e non sono più tanto
> sicuro.
Dipende cosa usi ... il miglior confronto lo puoi fare tu usando magari
una versione demo della ultimate o della professional (non so dove/se
si scaricano).
Se non erro nella express non c'è l'extension manager. Solo questo vale
oro.
> E già che ci sono, provo pure con SharpDevelop. :-)
bravo bravo prova e poi posta :)



title: Path relativi inun file .csproj

text:
Ciao Raf,
On 2/9/2011 6:47 PM, Raffaele Rialdi [MVP] wrote:
> Se non erro nella express non c'è l'extension manager. Solo questo vale
> oro.
Uhm... ci credi se ti dico che non ho *mai* usato una extension di
VisualStudio?
> bravo bravo prova e poi posta :)
Lo farò. :-)
Ciao,
Giulio
--


title: Path relativi inun file .csproj

text:
Giulio Petrucci wrote:
> Uhm... ci credi se ti dico che non ho *mai* usato una extension di
> VisualStudio?
Se hai la express per forza :p
Scherzi a parte, i power commands sono di una utilitï¿œ enorme. Tra i
tanti il solution navigator e la gestione dei tab dei sorgenti.
Poi la sql server compact toolbox ... eccellente!
I template per i progetti rest (e non solo) e il regex editor ...
insomma parecchie cosette che ti rendono piï¿œ produttivo.
>
>> bravo bravo prova e poi posta :)
>
> Lo farï¿œ. :-)
:)
byez



title: Delegati

author: GennarinOSpion

text:
ciao,

sono arrivato allo studio dei delegati, il seguente codice

MioDelegato md = new MioDelegato(lisProd.stampa);

             md += new MioDelegato(lisProd.stampa2);

//invoco il delegato una sola volta, ma solo stampa2 viene eseguito

md(p);

dove sbaglio?

grazie


title: Delegati

author: Mauro Servienti [MVP]

text:
Ciao GennarinOSpion,

You wrote on 29/10/2011 :
> MioDelegato md = new MioDelegato(lisProd.stampa);
>
>              md += new MioDelegato(lisProd.stampa2);
>
>
> //invoco il delegato una sola volta, ma solo stampa2 viene eseguito
>
> md(p);
>
>
> dove sbaglio?

perchï¿œ ï¿œ un delegato e non un evento, gli eventi si basano sui
delegati, per l'esattezza sui multicastdelegate (che sono una linked
list).

Un delegato punta ad una ed una sola funzione, quella sintassi ï¿œ
legalmente valida per ilc compilatore ma non ha senso.

.m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro

blog @
http://milestone.topics.it

whynot [ at ] topics [ dot ] it


title: Delegati

text:
Il 29/10/2011 18:18, Mauro Servienti [MVP] ha scritto:
> Ciao GennarinOSpion,
>
> You wrote on 29/10/2011 :
>> MioDelegato md = new MioDelegato(lisProd.stampa);
>>
>> md += new MioDelegato(lisProd.stampa2);
>>
>>
>> //invoco il delegato una sola volta, ma solo stampa2 viene eseguito
>>
>> md(p);
>>
>>
>> dove sbaglio?
>
> perchè è un delegato e non un evento, gli eventi si basano sui delegati,
> per l'esattezza sui multicastdelegate (che sono una linked list).
>
> Un delegato punta ad una ed una sola funzione, quella sintassi è
> legalmente valida per ilc compilatore ma non ha senso.
>
> .m
>

Grazie tutto chiaro! :)


title: Delegati

author: pasquale [:dedalus]

text:
On 29/10/2011 18:18, Mauro Servienti [MVP] wrote:
> Un delegato punta ad una ed una sola funzione, quella sintassi è
> legalmente valida per ilc compilatore ma non ha senso.
Premesso che per me hai sempre ragione "a prescindere", non concordo con
quest'ultima affermazione: mi risulta esattamente il contrario, ma per
la fiducia che ripongo in te devo supporre che probabilmente mi sfugge
il contesto della questione ;-)

Quello che non capisco nel codice d'esempio di GennarinOSpion è l'uso
del costruttore nel delegato _new MioDelegato(lisProd.stampa);_
(a parte il fatto che non mi è chiaro se GennarinOSpion si aspetta che
venga restituito un valore oppure eseguite 2 azioni in sequenza)

per me dovrebbe essere

MioDelegato md = lisProd.stampa;
md += lisProd.stampa2;

e le 2 azioni sarebbero eseguite in sequenza senza problemi...


title: Delegati

text:
Il 29/10/2011 18:18, Mauro Servienti [MVP] ha scritto:
> Ciao GennarinOSpion,
>
> You wrote on 29/10/2011 :
>> MioDelegato md = new MioDelegato(lisProd.stampa);
>>
>> md += new MioDelegato(lisProd.stampa2);
>>
>>
>> //invoco il delegato una sola volta, ma solo stampa2 viene eseguito
>>
>> md(p);
>>
>>
>> dove sbaglio?
>
> perchè è un delegato e non un evento, gli eventi si basano sui delegati,
> per l'esattezza sui multicastdelegate (che sono una linked list).
>
> Un delegato punta ad una ed una sola funzione, quella sintassi è
> legalmente valida per ilc compilatore ma non ha senso.
>
> .m
>

ciao

online ho trovato anche un esempio dove viene creato un vettore di tipo
delegato, ed ogni elemento del vettore punta ad un metodo con la firma
compatibile al delegato...

forse nel caso non si faccia uso di eventi, potrebbe essere questa una
soluzione alternativa?

grazie


title: Delegati

text:
Ciao GennarinOSpion,

You wrote on 30/10/2011 :
> online ho trovato anche un esempio dove viene creato un vettore di tipo
> delegato, ed ogni elemento del vettore punta ad un metodo con la firma
> compatibile al delegato...
>
> forse nel caso non si faccia uso di eventi, potrebbe essere questa una
> soluzione alternativa?

si.



title: Delegati

text:
Ciao pasquale [:dedalus],

You wrote on 30/10/2011 :
> MioDelegato md = lisProd.stampa;
> md += lisProd.stampa2;

è semplicemente uno shortcut per

MioDelegato md = new MioDelegato( lisProd.stampa );
md += new MioDelegato( lisProd.stampa2 );

è il compilatore a fare il resto



title: Delegati

text:
On 29/10/2011 18:18, Mauro Servienti [MVP] wrote:
> Un delegato punta ad una ed una sola funzione, quella sintassi è
> legalmente valida per ilc compilatore ma non ha senso.

Ma i delegati in c# non sono implicitamente multicast?

http://msdn.microsoft.com/en-us/library/ms173175%28v=VS.100%29.aspx


title: Delegati

text:
Ciao pasquale [:dedalus],

You wrote on 02/11/2011 :
> Ma i delegati in c# non sono implicitamente multicast?

Si, esatto.
mi hai messo la pulce nell'orecchio ho fatto una prova al volo e
questo:

delegate void D();

static void M(){}

D d = M;
d += M;

d();

funziona e chiama M *due* *volte*, quindi ritornando all'OP non mi
torna il perchè a lui non funzioni.



title: [C#] scrivere e leggere file di configurazione

author: nervo

text:
ciao a tutto il ng
trovo in rete molti esempi su come leggere un file piuttosto che
scrivere un file...
ma nel mio caso uso un file di testo per salvare una configurazione,
quindi ho bisogno di:
1) leggere il file,
2)  trovare la riga che mi interessa,
3) cambiare il valore
4) riscrivere il file.
E come si fa?
Sto usando una funzione che apre il file e cicla finchè non trova la
riga che mi serve, la modifico ma poi quando vado a scrivere, riesco
solo ad accodare la riga, o al massimo sovrascrivere tutto.
Qualcuno mi può mettere sulla strada giusta?
allego il mio codice:
string line;
string nome_ver = cmbVer.Text.ToString();
int id = cmbVer.SelectedItem;
                try
                {
                    FileStream stream = File.Open(@"C:\Programma\Dati
\config.txt", FileMode.Open);
                    StreamReader reader = new StreamReader(stream);
                    StreamWriter writer = new StreamWriter(stream);
                    while ((line = reader.ReadLine()) != null)
                    {
                        // se trovo la   riga che mi interessa, quella
che comincia per "ver:"
                        if (line.Contains("ver:"))
                        {
                            //cambio il valore
                            writer.WriteLine("ver:" + id + " " +
nome_ver);
                        }
                     }
                    writer.Close();
                    reader.Close();
                }
grazie per le risposte
nervo


text:
On Monday, 2 May 2011 11:59:47 UTC+1, nervo  wrote:
> ciao a tutto il ng
> trovo in rete molti esempi su come leggere un file piuttosto che
> scrivere un file...
> uso un file di testo per salvare una configurazione
Potresti usare file .config e avvalerti del supporto offerto dalle classi nel namespace System.Configuration.  Oppure potresti usare XML, e di nuovo avvalerti del supporto del framework.  Potresti persino usare file .ini, che mi pare si avvicinano di piu' al formato che hai al momento: non c'e' supporto diretto dal framework ma in rete trovi parecchi articoli e codice.
> Sto usando una funzione che apre il file e cicla finchè non trova la
> riga che mi serve, la modifico ma poi quando vado a scrivere, riesco
> solo ad accodare la riga, o al massimo sovrascrivere tutto.
E' corretto: cosi' funziona il file IO, ed e' comunque quello che avviene dietro le quinte.
-LV


text:
>
> Potresti usare file .config e avvalerti del supporto offerto dalle classi nel namespace System.Configuration.
ok, ho seguito il tuo consiglio ed ho creato il file app.config
inserendo la proprietà ver,  ma ora se vado ad inserire la proprietà
mi blocca dicendo che è in sola lettura:
Properties.Settings s = new Properties.Settings();
Console.WriteLine(s.ver);
s.ver = "ee";  // qui ho l'errore: impossibile assegnare un valore
perchè in sola lettura
s.Save();
sapete perchè si comporta così?
ciao


text:
> sapete perchè si comporta così?
> ciao
cercando cercando.....
ho trovato una guida molto ben fatta:
http://www.visual-basic.it/articoli/raConfigurations.htm
ciao
nervo


title: VB2008 Trasparenza Form

author: Xela

text:
Ciao a tutti. Sto riprendendo un vecchio progetto dove non avevo trovato una
soluzione.
Vengo subito al punto.
In un form che rendo trasparente tramite BackColor e TransparencyKey uguali
inserisco dei Controlli e delle Picture con trasparenze (immagini png con
trasparenze Alpha).
Il risultato è che la form diventa trasparente ma i Controlli e le Picture
nelle trasparenze mantengono il BackColor della Form con risultati grafici
scadenti.
Qualcuno mi sa indirizzare?
Grazie


title: Diagramma delle classi

author: Stefano

text:
Ciao,
utilizzo Visual Studio Express 2010, vorrei corredare i miei progetti
con i diagrammi UML (particolarmente quello delle classi) senza che
tuttavia venga generato codice automaticamente (opzione eventualmente
selezionabile).
Sapreste suggerirmene qualcuno possibilmente free? Tempo fa avevo
integrato un editor gratuito in Visual Studio 2005 Professional ma non
me ne ricordo il nome :(
Grazia, ciao. Stefano.


title: Diagramma delle classi

author: nibble

text:
DIA
https://live.gnome.org/Dia

NClass
http://nclass.sourceforge.net/

ciao


title: Diagramma delle classi

text:
Nel suo scritto precedente, nibble ha sostenuto :

Non conoscevo NClass, interessante.
Grazie, ciao. Stefano.


title: WPF Utilizzare un file integrato

author: Fabio

text:
Salve a tutti
Ho creato una nuova cartella nel mio progetto e vi ho aggiunto un
file .htm. Dovrei leggere il file ma ho problemi. La cartella di
chiama "File" ed il file "modello.htm" provo a leggerlo passando
questo percorso "File\modello.htm", ma mi dice che non trova il
percorso indicato.
DOve sbaglio.
Saluti e buone feste
Fabio


title: WPF Utilizzare un file integrato

text:
Ciao Fabio,

Provi a leggerlo come?
> Saluti e buone feste
>
> Fabio
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: WPF Utilizzare un file integrato

text:
On 27 Dic, 05:54, Mauro Servienti [MVP] <mauroservie...@online.nospam>
wrote:
> Ciao Fabio,
>
> You wrote on 26/12/2010 :
>
> > Salve a tutti
>
> > Ho creato una nuova cartella nel mio progetto e vi ho aggiunto un
> > file .htm. Dovrei leggere il file ma ho problemi. La cartella di
> > chiama "File" ed il file "modello.htm" provo a leggerlo passando
> > questo percorso "File\modello.htm", ma mi dice che non trova il
> > percorso indicato.
> > DOve sbaglio.
>
> Provi a leggerlo come?
>
Passando il percorso sopracitato ad uno streamreader.
Non si fa così?
Ciao
> --
> Mauro Servienti
> {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
> Microsoft MVP - Visual C# / MCTShttp://
mvp.support.microsoft.com
> blog @
http://milestone.topics.it
> whynot [ at ] topics [ dot ] it
Fabio


title: WPF Utilizzare un file integrato

text:
Ciao Fabio,
You wrote on 27/12/2010 :
> Passando il percorso sopracitato ad uno streamreader.
> Non si fa così?
dipende da una moltitudine di casistiche :-)
Il file è una risorse embedded?
Se non è una risorsa il file viene copiato come content nell'output
della build?
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it



title: WPF Utilizzare un file integrato

text:
On 27 Dic, 09:16, Mauro Servienti [MVP] <mauroservie...@online.nospam>
wrote:
> Ciao Fabio,
>
> You wrote on 27/12/2010 :
>
> > Passando il percorso sopracitato ad uno streamreader.
> > Non si fa cos ?
>
> dipende da una moltitudine di casistiche :-)
>
> Il file una risorse embedded?
> Se non una risorsa il file viene copiato come content nell'output
> della build?
>
Buona la seconda.
> .m
>
> --
> Mauro Servienti
> {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
> Microsoft MVP - Visual C# / MCTShttp://
mvp.support.microsoft.com
> blog @
http://milestone.topics.it
> whynot [ at ] topics [ dot ] it
Ciao
Fabio


title: WPF Utilizzare un file integrato

text:
Ciao Fabio,
You wrote on 27/12/2010 :
> Buona la seconda.
quindi funziona?
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it



title: WPF Utilizzare un file integrato

text:
On 26 Dic, 21:51, Fabio <
fabio...@gmail.com
> wrote:
> Salve a tutti
>
> Ho creato una nuova cartella nel mio progetto e vi ho aggiunto un
> file .htm. Dovrei leggere il file ma ho problemi. La cartella di
> chiama "File" ed il file "modello.htm" provo a leggerlo passando
> questo percorso "File\modello.htm", ma mi dice che non trova il
> percorso indicato.
Essendo un file di tipo content, è sufficiente cambiare il percorso da
utilizzare in questo modo: "File/modello.htm".
Ciao
Fabio


title: WPF Utilizzare un file integrato

text:

Magari funziona pure e sto capendo male, comunque il forward-slash e'
parte del protocollo URL, cioe' siamo sul lato consumer...
-LV


title: Cast di un anonymous

author: Sander

text:
Salve,
una domanda che ha a che fare con gli Anonymous, che francamente non
conoscevo prima dell'arrivo di LINQ e EF e che invece ora mi trovo
sempre in mezzo :)
Se ad esempio ne ottengo uno come il seguente (da un semplice
SelectedItem  di una combobox in binding )
{ soc = COMUNE, id = 12 }
quindi di tipo <>f__AnonymousType2`2[System.String,System.Decimal]
come faccio a recuperare soc e id ? Piu in generale, come si puo fare il
cast di un anonymous di cui si conoscono i Types che lo compongono?
Tramite reflector, o c'e una via piu breve ??
Grazie....Sander


title: Cast di un anonymous

author: Andrea Angella

text:
?Ciao Sander,
stiamo parlando di Anonymous Type.
Un anonymous type ha visibilita' di metodo !
Solo il compilatore ha accesso al nome del tipo anonimo che viene creato.
Per questo motivo e' infatti stata creata la parola chiave var.
Non dovresti associare in binding una istanza di tipo anonimo.
Ti consiglio la lettura di questa pagina su MSDN:
http://msdn.microsoft.com/en-us/library/bb397696.aspx
Ecco alcune frasi che rispondono alla tua domanda:
"An anonymous type cannot be cast to any interface or type except for
object."
"Anonymous types are reference types that derive directly from object. The
compiler gives them a name although your application cannot access it. "
"An anonymous type has method scope. To pass an anonymous type, or a
collection that contains anonymous types, outside a method boundary, you
must first cast the type to object. However, this defeats the strong typing
of the anonymous type. If you must store your query results or pass them
outside the method boundary, consider using an ordinary named struct or
class instead of an anonymous type."
Sicuramente c'e' un modo di ottere qualcosa tramite reflection ma non ci
voglio nemmeno pensare.
"Sander"  wrote in message
news:4cd6d7fc$0$40000$4faf...@reader3.news.tin.it...



title: Cast di un anonymous

text:
Ciao Sander,
You wrote on 07/11/2010 :
> Tramite reflector, o c'e una via piu breve ??
condivido il suggerimento di Andrea, se usi il fx 4.0 puoi passare da
dynamic.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: Cast di un anonymous

text:
Vorrei non usare il binding di tipo anonimo, come giustamente
suggerisci, ma mi viene fuori semplicemente da un binding su una
combobox di questo tipo:
var query = (from c in SinEntity.socrep
                          orderby c.soc
                         select new { c.soc,
c.id
 });
             comboBox1.ItemsSource = query;
             comboBox1.SelectedValuePath = "id";
             comboBox1.DisplayMemberPath = "soc";
C'e qualcosa di sbagliato in questo, forse un modo migliore di farlo ?
L'anonymous mi viene restituito come selectedItem della combo. Il mio
obiettivo è semplicemente recuperare i due valori associati allo stesso
item...
Grazie mille !



title: IoC e container

text:
Sto usando Castle Windsor, in accoppiata con CommonServiceLocator. Lo sto usando un po' pedestremente, senza farmi troppe domande, ma la curiosità è troppa... ;-)
 Diciamo che una volta configurato il container, tutte le volte che devo tirare fuori una classe\servizio devo avere sotto mano una istanza del container.
In questo mi viene in aiuto CommonServiceLocator che oltre tutto mi nasconde il tipo di framework IoC usato, ma se volessi fare senza, cosa dovrei creare una classe con un metodo statico che mi restituisce il container o c'è qualche metodo più elegante ?
Grazie

Stefano


title: IoC e container

text:
Ciao Stefano Paparesta,

detto in maniera molto brutale il ServiceLocator è uno smell, non
dovresti in nessun modo sapere, dall'interno dell'app che c'è qualcuno
che risolve servizi/componenti per te.
Ovvio che ci saranno dei casi in cui ti servirà, ergo ti fai una
factory/builder custom.

> Stefano

.m

--
blog @ //
milestone.topics.it


title: IoC e container

text:
> factory/builder custom.

Dentro Radical trovo un esempio ? Se mi dai una dritta io studio..

Grazie Mauro

Stefano


title: IoC e container

text:
Ciao Stefano,

You wrote on 23/01/2013 :
>
>> factory/builder custom.
>
> Dentro Radical trovo un esempio ? Se mi dai una dritta io studio..

si e no, nel senso che Radical.Presentation.Sammples è basato su
Windsor, ma non è visibile da nessuna parte se non nel bootstrapper.

Una volta che il container è configurato, e che hai usato il container
per risolvere il 1° componente da cui partire, in'unapplicazione
desktop ad esempio la "main window", tutto il resto deve fluire
semplicemente dichiarando le dipendenze, quindi (pensando a Radical) se
la main window ha bisogno del broker farà così:

class MainViewModel
{
   public MainViewModel( IMessageBorker broker ){  }
}

dichiarando la dipendenza sul costruttore e non usando il locator:

class MainViewModel
{
   public MainViewModel()
   {
      var broker = ServiceLocator.GetService<IMessageBroker>();
   }
}

che complica in primis la fase di testing, nel caso in cui hai bisogno
invece di di controllare _quando_ un componente viene risolto, ci sono
tanti buoni motivi per farlo ma devono essere casi "rari", ti devi
mettere in mezzo tu con una factory:

class BrokerFactory
{
   public BrokerFactory( IWindsorContainer container ){}

   public IMessageBroker GetBroker()
   {
       return this.container.Resolve<IMessageBroker>();
   }
}

> Grazie Mauro



title: IoC e container

text: Grazie.


title: [VS 2008] WinForms e doppio click

author: Luca Menegotto

text:
Buongiorno a tutti.
Chiedo a voi se è possibile disabilitare un comportamento che, quando
lavoro col portatile e con il touch pad, è particolarmente fastidioso.
Parlo del doppio click che attiva il message handler predefinito per
l'oggetto. Al di la che nel 90% dei casi il message handler predefinito
serve e non serve, ch voi sappiate e' possibile disabilitare questa
feature - leggi: posso doppiocliccare su un controllo finche' voglio ma
nulla succede?
Grazie!
--
Ciao!
Luca


title: [Manifesto] Manifesto del gruppo it.comp.dotnet

author: Alexx

text:
+--------------------------------------------------------
it.comp.dotnet
Infrastruttura, linguaggi, framework e strumenti relativi alle
implementazioni della Common Language Infrastructure
+--------------------------------------------------------
Il gruppo it.comp.dotnet e` dedicato alle discussioni attinenti lo standard
ISO/IEC 23271 in tutte le sue implementazioni, le tecnologie ad esso
correlate e lo sviluppo di applicazioni basate su tale standard.
Sono, quindi, incluse le discussioni riguardanti i seguenti argomenti:
 + varie implementazioni dello standard (framework .NET, MONO...);
 + compilatori;
 + linguaggi (C#, VB.NET...);
 + ambienti di sviluppo (Visual Studio, MonoDevelop...);
 + piattaforme di sviluppo, librerie di classi, tecnologie varie inerenti
  (WPF, WCF,
ASP.NET
, AJAX,
ADO.NET
, Castle, NUnit, Rhino, NHibernate ...)
 + strumenti e tecnologie accessorie allo sviluppo (MSBuild, CCNet, Nant,
   ...)
Sono anche da considerarsi comprese le discussioni riguardanti la
migrazione verso .NET da altre tecnologie e viceversa.
Informazioni utili:
Considerata la vastita` dell'argomento, si raccomanda vivamente di
aggiungere all'oggetto di ogni messaggio un prefisso per specificare la
tipologia dell'articolo stesso, tramite l'uso della seguente notazione:
[<linguaggio o tecnologia o particolare> ] Oggetto del messaggio
Esempi:
[C#] Oggetto del messaggio
[WPF] Oggetto del messaggio
[
ADO.NET
] Oggetto del messaggio
[MANIFESTO]: Il manifesto del gruppo o discussioni su di esso;
[FAQ]: le FAQ o discussioni su di esse;
[.NET]: Discussioni generiche su .NET
Dopo questa notazione dovra` essere indicato sinteticamente il
problema/soluzione/considerazione. Da evitare assolutamente i Subject
generici e non chiari.
Tutte le informazioni utili per usare al meglio il newsgroup e le risposte
alle domande ricorrenti circa l'argomento descritto nel presente manifesto
saranno contenute nelle FAQ del newsgroup.
+--------------------------------------------------------


title: [ADO.NET] E andiamo a cominciare: Linq o Entity Framework per accesso a DB?

text:
Ho iniziato a guardare EF. E subito ho pensato a EF come un superset
che completa Linq to SQL. Poi mi imbatto in un articolo di Stefano
Mostarda in cui sostanzialmente si afferma che son due cose differenti.
E qui io, ignorante, non ci capisco piu' nulla.
In due parole: sono correlati o uno fa senza l'altro? Meglio puntare su
uno, sull'altro o su tutti e due?
Grazie!
--
Ciao!
Luca


author: Raffaele Rialdi [MVP]

text:

Sono diversi anche se usano linq come strategia di base per le query.
Ci sono anche similitudini sul discorso context ma l'implementazione e
il modo in cui procedere è molto differente.
Linq2Sql è stato un bell'esperimento ma a quanto pare non avrà futuro
quindi la scelta tra i due è facile.
Ovviamente parliamo di EF4 perché le versioni precedenti non hanno
senso.
In particolare io prediligo EF4 con l'aggiunta del "code first" che è
attualmente in CTP4.
Leggiti questi articoli di scottgu:
http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx
http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx
e naturalmente l'annuncio del team:
http://blogs.msdn.com/b/adonet/archive/2010/07/14/ctp4announcement.aspx
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


author: Alessandro Riolo

text:
"Luca Menegotto" <otluca...@CAVAMIyahoo.it> wrote in message
news:i9mvdi$kvg$1...@tdi.cu.mi.it...
> In due parole: sono correlati o uno fa senza l'altro? Meglio puntare su
> uno, sull'altro o su tutti e due?
Innanzitutto, fossi Microsoft la versione 4.0 di EF l'avrei chiamata
QualsiasiCosaMaNonEF x.0, giusto perché così ci sarebbe stata una maggiore
probabilità di mitigare la comprensibile prevenzione di chi ne avesse
provato le versioni precedenti non apprezzandole. Premetto poi che EF 4.0
non l'ho toccata, ma non ho ragione di non credere a chi
(
http://www.ayende.com/about-me.aspx
) lo ha fatto ad un certo livello
(
http://efprof.com
) e dice
(
http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
)
che NHibernate continua (almeno per un certo tipo di sviluppatore, per
capire veramente quale ORM fa per te, probabilmente ne dovrai provare di
persona diversi!) ad essere un framework migliore (*).
Tra i commenti al citato post di Oren, uno abbastanza condivisibile è il
primo di Frans Bouma (
http://weblogs.asp.net/fbouma/about.aspx
), di cui tra
l'altro in passato sono stato felice cliente (
http://www.llblgen.com
),
quando scrive:
"What EF has over NH is documentation, solid examples and a large stream of
evangelists speaking at every developer conference there is and pumping out
articles around the clock. The NH world never seemed to take that as
important but it IS important: a developer is payed to solve a problem for
his client, not to hunt down docs on blogs or other non-trivial places."
e poi anche:
"Not everyone is a .net rockstar, most of the developers out there barely
know how to code their way through the day."
Infine, Linq to Sql è purtroppo un progetto morto e defunto, almeno dal 2008
(
http://blogs.msdn.com/b/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx
),
c'è da dire che il loro Linq provider era probabilmente il migliore
disponibile da diversi punti di vista (chissà che Microsoft non si decida a
rilasciarlo open source ...).
(*) caveat, il provider Linq di NHibernate non è certo il suo punto di forza
(i.e. nel post citato Oren afferma che quello di EF 4.0 è migliore), anche
se nella prossima versione (3.0, l'alpha è stata rilasciata a Luglio, ) ci
si aspetta un notevole miglioramento.
--
ale
http://ale.riolo.co.uk


text:
"Luca Menegotto" <otluca...@CAVAMIyahoo.it> wrote in message
news:i9mvdi$kvg$1...@tdi.cu.mi.it...
> In due parole: sono correlati o uno fa senza l'altro? Meglio puntare su
> uno, sull'altro o su tutti e due?
Innanzitutto, fossi Microsoft la versione 4.0 di EF l'avrei chiamata



text:
Alessandro Riolo wrote:
> "What EF has over NH is documentation, solid examples and a large stream of
> evangelists speaking at every developer conference there is and pumping out
> articles around the clock. The NH world never seemed to take that as
> important but it IS important: a developer is payed to solve a problem for
> his client, not to hunt down docs on blogs or other non-trivial places."
Su questo non ci piove, nè voglio sminuire nHibernate anche perché non
lo conosco abbastanza da giudicarlo.
Ci sono però due problemi molto pratici:
- la difficoltà per certe aziende di approvare un nuovo produttore di
librerie. Il che è comprensibile perché magari ci sono già contratti di
assistenza in essere).
- EF4 comincia ad essere interessante grazie alla CTP4 di cui parlavo e
alla fluent api. Su questi la documentazione è prossima allo zero.
Sottolineo che EF4 CTP4 ha dei problemi ma sono noti e il team dice che
sono in fase di risoluzione.
Ora va da se che se ti devi mettere a scrivere oggi un prodotto per
terzi, l'ago della bilancia giustamente va verso un prodotto RTM e non
su una CTP.
Ma devo pur fare una riflessione a livello tecnologico e l'uso di linq
alla fine è la parte vincente di questi framework. Quindi se devo fare
un investimento a lungo termine personalmente scelgo EF4 (e non dico
che non potrei cambiare idea ...)
Il lato che mi ha convinto di più di EF4 rispetto a quel poco che ho
visto di nHibernate è che sono riuscito abbastanza molto rapidamente a
fare quello che volevo.
Quando mi sono messo a vedere NHibernate, ho finito per perderci solo
un sacco di tempo.
Il tempo (di tutti) è denaro e avere un prodotto che risolve
velocemente fa molta differenza.
i miei 2 cents



text:
"Raffaele Rialdi [MVP]" <
malta@n0spam_vevy.com
> wrote in message
news:mn.aa337daab...@n0spamvevy.com...
> Su questo non ci piove, nè voglio sminuire nHibernate anche perché non lo
> conosco abbastanza da giudicarlo.
Qui sei doppiamente sincero, infatti si chiama NHibernate, non nHibernate
:))
> - la difficoltà per certe aziende di approvare un nuovo produttore di
> librerie. Il che è comprensibile perché magari ci sono già contratti di
> assistenza in essere).
Yup, ma nel mio caso, lo uso da poco meno di un lustro, ed immagino nel caso
generale di chi usi ORM, è al contrario, NHibernate è molto maturo, e
certamente uno dei framework più diffusi. Se inizi ora, probabilmente può
andare bene valutare anche EF4, e probabilmente anche LLBLGen Pro vel
similia.
> Ma devo pur fare una riflessione a livello tecnologico e l'uso di linq
> alla fine è la parte vincente di questi framework. Quindi se devo fare un
> investimento a lungo termine personalmente scelgo EF4 (e non dico che non
> potrei cambiare idea ...)
Se non ho capito male (ancora non l'ho visto) il nuovo provider Linq
dell'alpha di NHibernate 3.0 dovrebbe essere basato su re-linq
(
http://relinq.codeplex.com/
).
> Quando mi sono messo a vedere NHibernate, ho finito per perderci solo un
> sacco di tempo.
Che è comunque un'attività educativa, e raccomandabile se sei agli inizi con
gli ORM, quindi non è necessariamente tempo perso :)
A parte ogni altra cosa, come scrivevo prima a Luca, ogni sviluppatore è un
mondo a sé, per capire con quale ORM ci si trovi a più agio bisogna provarne
tanti. Non dubito ci siano sviluppatori che si trovano perfettamente e sono
più produttivi ad usare EF 4.0 che NHibernate o altri.
> Il tempo (di tutti) è denaro e avere un prodotto che risolve velocemente
> fa molta differenza.
Yup.
--
ale
http://ale.riolo.co.uk


text:
Alessandro Riolo wrote:
[...]
>> Quando mi sono messo a vedere NHibernate, ho finito per perderci solo un
>> sacco di tempo.
>
> Che è comunque un'attività educativa, e raccomandabile se sei agli inizi con
> gli ORM, quindi non è necessariamente tempo perso :)
>
> A parte ogni altra cosa, come scrivevo prima a Luca, ogni sviluppatore è un
> mondo a sé, per capire con quale ORM ci si trovi a più agio bisogna provarne
> tanti. Non dubito ci siano sviluppatori che si trovano perfettamente e sono
> più produttivi ad usare EF 4.0 che NHibernate o altri.
>
>> Il tempo (di tutti) è denaro e avere un prodotto che risolve velocemente fa
>> molta differenza.
>
> Yup.
Ne ho provati diversi ... era il 2005 quando nel workshop data
management nella slide finale suggerivo di passare agli ORM.
Poi mi sono scritto un mio mapper che ho usato a lungo perché i
constraint dei vari orm non mi andavano giù.
Chiamala mania ma proprio non mi andava giù neppure NHibernate, non
tanto per i concetti degli orm che mi sono molto chiari, ma per i vari
constraint e i fiumi di mapping xml che finalmente con la CTP4 posso
risparmiarmi (so che anche NHibernate ha fatto molta strada, il mio non
è un confronto "attuale").
Con tutto ciò ben venga un NHibernate forte, non potrà che rendere più
"piccante" la sfida.



author: Andrea Saltarello

text:
Il 20/10/2010 22:21, Alessandro Riolo ha scritto:
> (*) caveat, il provider Linq di NHibernate non č certo il suo punto di
> forza
diciamo, per essere espliciti, che il linq provider di NH 2 č
semplicemente inutilizzabile in una qualunque applicazione reale, e che
anche quello per la v3 č decisamente indietro se confrontato a quello
per EF4 (che, apropria volta, č "indietro" rispetto a quello per L2SQL).
Se vuoi/hai bisogno di usare LINQ, oggi purtroppo NH non č una opzione
--
  .A
GUISA -
http://www.guisa.org
UGIdotNET -
http://www.ugidotnet.org
Read my blog at:
http://blogs.ugidotnet.org/pape


text:
Andrea Saltarello wrote:
> Se vuoi/hai bisogno di usare LINQ, oggi purtroppo NH non è una opzione
Forse mi sarò lasciato prendere la mano troppo con linq ma
personalmente lo trovo insostituibile.
Certo, un occhio al profiler di sql lo tengo sempre, ma la facilità di
estrarre dati non ha confronti con l'era pre-linq.



text:
Il 21/10/2010 11:17, Raffaele Rialdi [MVP] ha scritto:
> Andrea Saltarello wrote:
>> Se vuoi/hai bisogno di usare LINQ, oggi purtroppo NH non è una opzione
>
> Forse mi sarò lasciato prendere la mano troppo con linq ma personalmente
> lo trovo insostituibile.
> Certo, un occhio al profiler di sql lo tengo sempre, ma la facilità di
> estrarre dati non ha confronti con l'era pre-linq.
>
Guarda, io da quando ho iniziato a far viaggiare IQueryable<T> tra i
layer (l'ho "battezzato" "idioma LET", che sta per Layered Expression
Trees) ho praticamente iniziato a fare applicazioni "Designed for LINQ"...



text:
Andrea Saltarello wrote:
> Guarda, io da quando ho iniziato a far viaggiare IQueryable<T> tra i layer
> (l'ho "battezzato" "idioma LET", che sta per Layered Expression Trees) ho
> praticamente iniziato a fare applicazioni "Designed for LINQ"...
+1
Io mi sono anche costruito una piccola libreriea che mi compila al volo
delle lambda lette da stringhe di testo che poi compongo con and/or
usando il PredicateBuilder.
Non mi sogno neanche di rinunciare a linq...



text:
"Raffaele Rialdi [MVP]" <
malta@n0spam_vevy.com
> wrote:
Giusto per curiosità, ma vivi a Malta? Ci vivono/lavorano le mie sorelle :)
> Ne ho provati diversi ... era il 2005 quando nel workshop data management
> nella slide finale suggerivo di passare agli ORM.
What's workshop data management?
> Chiamala mania ma proprio non mi andava giù neppure NHibernate, ... per i
> vari constraint e i fiumi di mapping xml
Io, proveniendo da Java ed avendo avuto a che fare con Hibernate (LOL), l'ho
proprio attivamente sconsigliato per anni proprio per il mapping :))
Onestamente però ora lavorando ad un'applicazione matura il mapping xml non
mi pare proprio più un problema, c'è di molto peggio. Capisco comunque che
girovagando in verdi pascoli non è proprio indolore (a quel punto volendo si
potrebbe provare ActiveRecord).
> Con tutto ciò ben venga un NHibernate forte, non potrà che rendere più
> "piccante" la sfida.
Che comunque non è certo limitata soltanto a NHibernate vs EF ;)
--
ale
http://ale.riolo.co.uk


text:
Alessandro Riolo wrote:
> Giusto per curiosità, ma vivi a Malta? Ci vivono/lavorano le mie sorelle :)
no, no :) è un acronimo (troppo complicato da spiegare)
Vivo a Genova.
> What's workshop data management?
È uno dei tanti eventi tenuti da UGIdotNET.org presso Microsoft Italia.
Credo che il materiale della mia sessione (e delle altre) sia ancora
online.
Il seguito di quanto ho presentato è "coagulato" in
rafcollection.codeplex.com
 dove il documento spiega la mia visione
perversa :) (che nel frattempo si è evoluta perché il maledetto tempo
passa veloce).
> Io, proveniendo da Java ed avendo avuto a che fare con Hibernate (LOL), l'ho
> proprio attivamente sconsigliato per anni proprio per il mapping :))
> Onestamente però ora lavorando ad un'applicazione matura il mapping xml non
> mi pare proprio più un problema, c'è di molto peggio. Capisco comunque che
> girovagando in verdi pascoli non è proprio indolore (a quel punto volendo si
> potrebbe provare ActiveRecord).
Ho sempre odiato la versione tabellare di rappresentazione dei dati.
La trovo efficiente da un punto di vista di un db ma totalmente in
contrasto con gli strumenti oop (e oggi anche funzionali) che abbiamo a
disposizione nel framework.
Il mismatch va "curato" con un bel mapping.
Il dataset nel
framework.net
 ha fatto più danni che altro.
In altri casi ho cominciato a valutare seriamente delle alternative
come MongoDB. È un prodotto a mio avviso ancora immaturo ma
estremamente promettente. Le prove che ho fatto mi hanno stupito molto
positivamente.
> Che comunque non è certo limitata soltanto a NHibernate vs EF ;)
No, certo, ma non credo ci siano dubbi che siano i due protagonisti di
maggiore rilievo.



text:
"Raffaele Rialdi [MVP]" <
malta@n0spam_vevy.com
> wrote:
> Alessandro Riolo wrote:
>> Che comunque non è certo limitata soltanto a NHibernate vs EF ;)
>
> No, certo, ma non credo ci siano dubbi che siano i due protagonisti di
> maggiore rilievo.
Ecco, questo non lo scrivere dove ti può leggere Frans Bouma :))
A parte ogni altra considerazione, io ho usato in maniera molto avanzata
LLBLGen Pro per la buona parte di un paio d'anni, e non posso far altro che
raccomandarlo, e soprattutto ad un novizio di ORM, ben prima di NHibernate o
EF. Tra l'altro l'ho usato ben prima che offrisse un provider Linq, che mi
dicono, e leggo spesso, essere tra i migliori in circolazione. A Luca, prima
di buttarsi in notti senza sonno su NHibernate, o ad accodarsi ai tanti che
si affidano a Microsoft, suggerirei proprio di iniziare da LLBLGen Pro, una
licenza di valutazione di 30 giorni non la negano a nessuno :)
Apro una parentesi sul nome (ecco, spero che il buon Frans Bouma non ci
legga veramente), LLBLGen dovrebbe stare per "Lower Level Business logic
Layer GENerator", questo se uno non conosce l'Olandese o non ha amici
Olandesi che gli possano gentilmente spiegare che in Olandese andrebbe letto
Lellebel, che significa più o meno Puttana, Troia, Sgualdrina, insomma ci
siamo capiti :))
--
ale
http://ale.riolo.co.uk


text:
Alessandro Riolo wrote:
> Ecco, questo non lo scrivere dove ti può leggere Frans Bouma :))
Frans di persona è meno violento che digitalmente :)



author: gianluca gravina

text:
On 10/21/2010 10:59 AM, Andrea Saltarello wrote:
> diciamo, per essere espliciti, che il linq provider di NH 2 č
> semplicemente inutilizzabile in una qualunque applicazione reale, e che
> anche quello per la v3 č decisamente indietro se confrontato a quello
> per EF4 (che, apropria volta, č "indietro" rispetto a quello per L2SQL).
> Se vuoi/hai bisogno di usare LINQ, oggi purtroppo NH non č una opzione
>
Innanzitutto ciao a tutti :)
Nel merito quoto in pieno Andrea, Linq = EF. Uso spesso Linq, ma a
quanto mi sembra di capire non a livelli cosě alti. NH lo uso con
piacere e soddisfazioni da tempo, la prima webapp in prod l'ho deployata
nel 2007 ;)
Onestamente la sintassi ICriteria non mi dispiace affatto e in quei casi
non sento la mancanza di Linq.
Un solo ironico appunto raf, Xml in NH penso non ne scriva piů nessuno
da tempo se non per cose "particolari" :)
My 2 cents.
GG


text:
http://ale.riolo.co.uk
"gianluca gravina" <
gianluca...@gmail.com
> wrote:
> Un solo ironico appunto raf, Xml in NH penso non ne scriva più nessuno da
> tempo se non per cose "particolari" :)
Firulì firulà ;)
130049 E 21/10/2010 17:23:21 Fixed broken mapping
130047 C 21/10/2010 16:10:39 Joined ...
130040 D 21/10/2010 13:25:12 Added ... bla bla task ...
130029 B 21/10/2010 09:44:50 Fixed table name
130025 A 20/10/2010 18:14:35 Refactored: ...
130005 A 20/10/2010 12:22:06 Blabla implemented.
129980 C 19/10/2010 17:20:35 Implemented blabla
129975 B 19/10/2010 16:32:36 Added blabla
129880 A 18/10/2010 16:43:44 Removed blabla
--
ale
http://ale.riolo.co.uk


text:
Raffaele Rialdi [MVP] wrote:
> mapping.  Il dataset nel
framework.net
 ha fatto più danni che altro.
Come non quotare?
Io, come l'ho visto, mi son detto: con quella roba li non voglio avere
nulla a che fare.
Il problema e' che 'quella roba li' si presta molto bene a wizards e
similia, per cui ci tocca.
--
Ciao!
Luca


text:
Alessandro Riolo wrote:
> tra i migliori in circolazione. A Luca, prima di buttarsi in notti
> senza sonno su NHibernate, o ad accodarsi ai tanti che si affidano a
> Microsoft, suggerirei proprio di iniziare da LLBLGen Pro, una licenza
> di valutazione di 30 giorni non la negano a nessuno :)
Notti senza sonno? moi?
Scherzi a parte, io mi sto dedicando alle cose di cui sopra per
curiosita' piu' che per altro. Per tre sostanziali motivi: primo, il
mio campo applicativo, che e' molto piu' ristretto, per il momento,
rispetto a quello di molti di voi, per lo meno lato DBMS; secondo,
perche' a me 'troppo framework' non piace (questa la spiego meglio); in
terza istanza perche' vi sono alcuni databases / DBMS che sto usando
(penso tanto a PostgreSQL che a Firebird) che di molte cose non hanno
supporto o hanno supporto molto limitato.
Mi scappa una precisazione di 'troppo framework'. Almeno per il momento
io tendenzialmente escludo cose di terze parti. Non che non siano
buone, capiamoci, pero' cerco prima di sporcarmi le mani con la roba
che fa gia' parte del .NET framework.
--
Ciao!
Luca


text:
"Luca Menegotto" <otluca...@CAVAMIyahoo.it> wrote
> Mi scappa una precisazione di 'troppo framework'. Almeno per il momento
> io tendenzialmente escludo cose di terze parti.
Tipo usi MSUnit e TFBuild invece di NUnit e CCNet, e non usi Rhino Mocks vel
similia? Non hai ancora comprato una licenza di ReSharper, nel 2010? :p
Oppure accetti supinamente quando ti propinano cose sostanzialmente
indefinibili senza scadere nel volgare, i.e. EF v1, quando in giro ci sono
alternative migliori, i.e. NHibernate, o anche migliori e commercialmente
supportate, i.e.. LLBLGen Pro?
Per carit�, Microsoft tante cose le azzecca, ma tante altre proprio no.
--
ale
http://ale.riolo.co.uk


text:
"Alessandro Riolo"  ha scritto nel messaggio
news:i9qa69$d8a$2...@news.eternal-september.org...
>A parte ogni altra considerazione, io ho usato in maniera molto avanzata
>LLBLGen Pro per la buona parte di un paio d'anni, e non posso far altro che
>raccomandarlo, e soprattutto ad un novizio di ORM, ben prima di NHibernate
>o EF.
io ad un novizio di O/RM (e non solo ai novizi <g>) consiglierei di studiar
bene il modello relazionale dei dati e lo storico documento "FORM" di Mark
Fussels (ma anche una letturina di DDD, eh!), altrimenti  finiranno per
usare un O/RM come "scorciatoia per evitare di scrivere SQL" e poi giï¿œ a far
FUD: gli O/RM sono lenti, i RDBMS non scalano e serve NoSQL, ...



text:
>Onestamente la sintassi ICriteria non mi dispiace affatto e in quei casi
>non sento la mancanza di Linq.
Gianluca, il "problema" � che ICriteria � "solo" un query object, LINQ �
*anche* un query object. Se usi LINQ "solo" per fare le query, stai
mangiando la Sacher senza la marmellata: non � una Sacher :-)
Se fai un salto ai Community Days, nella sessione "MVC++" far� vedere
qualcosa che IMHO potrebbe interessarti :-)



text:
>Oppure accetti supinamente quando ti propinano cose sostanzialmente
>indefinibili senza scadere nel volgare, i.e. EF v1, quando in giro ci sono
>alternative migliori,
io concordo con te, se tu concordi con me sul fatto che ci� che � "migliore"
lo definiscono i requisiti, e non le caratteristiche tecniche del toolkit:
ci sono casi nei quali EF1 � "migliore" (leggi: preferibile) a NH (ed io il
primo deploy in produzione di NH l'ho fatto nel 2004, eh! Io NH lo apprezzo
tantomatanto, eh!)



text:
Alessandro Riolo wrote:
> Tipo usi MSUnit e TFBuild invece di NUnit e CCNet, e non usi Rhino
> Mocks vel similia? Non hai ancora comprato una licenza di ReSharper,
> nel 2010? :p
Sapessi quante cose non uso io... ;-)
> Oppure accetti supinamente quando ti propinano cose sostanzialmente
> indefinibili senza scadere nel volgare, i.e. EF v1, quando in giro ci
> sono alternative migliori, i.e. NHibernate, o anche migliori e
> commercialmente supportate, i.e.. LLBLGen Pro?
Si e no. Credo che 'buono' e 'non buono' dipenda dal campo applicativo.
Tieni presente che per me, salvo rari casi, database = un posto dove
mettere via dati che qualcun altro impieghera'; questo significa che
spesso mi basta ina 'INSERT' SQL diretta via ADO.Net. Il resto e'
curiosita'
--
Ciao!
Luca


text:
Andrea Saltarello wrote:
> altrimenti  finiranno per usare un O/RM come "scorciatoia per evitare
> di scrivere SQL"
Cosa che IMHO in ogni caso non si puo' evitare.
--
Ciao!
Luca


text:
On 10/22/2010 10:30 AM, Andrea Saltarello wrote:
>> Onestamente la sintassi ICriteria non mi dispiace affatto e in quei
>> casi non sento la mancanza di Linq.
> Gianluca, il "problema" � che ICriteria � "solo" un query object, LINQ �
> *anche* un query object. Se usi LINQ "solo" per fare le query, stai
> mangiando la Sacher senza la marmellata: non � una Sacher :-)
> Se fai un salto ai Community Days, nella sessione "MVC++" far� vedere
> qualcosa che IMHO potrebbe interessarti :-)
>
Certo Andrea, non volevo assolutamente dire che ICriteria si pu�
tranquillamente usare *al posto* di LINQ, solo che in mancanza di LINQ
non mi sembra cos� "pessimo" :)
Io non sai quanti salti farei, nell'ordine sono riuscito a perdermi:
Wp7 Event
NHDay
Varie ed eventuali
Cercher� di tenermi aggiornato per capire se riesco a partecipare, sarei
finalmente curioso di vedere:
1) Un Wp7 che sicuramente qualcuno avr� a portata di mano :)
2) Come voi ragazzacci di altri pianeti avete plasmato e utilizzato
Linq, expression trees et simili e l'avete utilizzato per i vostri
scopi. Sono un p� fermo con gli "studi personali" su VS2010 a causa di
Progetto di lavoro + Bimbo piccolo, che messi insieme sono deleterei per
i miei neuroni affamati :)
GG


text:
gianluca gravina wrote:
> On 10/22/2010 10:30 AM, Andrea Saltarello wrote:
>>> Onestamente la sintassi ICriteria non mi dispiace affatto e in quei
>>> casi non sento la mancanza di Linq.
>> Gianluca, il "problema" ï¿œ che ICriteria ï¿œ "solo" un query object, LINQ ï¿œ
>> *anche* un query object. Se usi LINQ "solo" per fare le query, stai
>> mangiando la Sacher senza la marmellata: non ï¿œ una Sacher :-)
>> Se fai un salto ai Community Days, nella sessione "MVC++" farï¿œ vedere
>> qualcosa che IMHO potrebbe interessarti :-)
>>
> Certo Andrea, non volevo assolutamente dire che ICriteria si puï¿œ
> tranquillamente usare *al posto* di LINQ, solo che in mancanza di LINQ non mi
> sembra cosï¿œ "pessimo" :)
Per me sta al primo posto, no way.
ï¿œ un altro modo di pensare alla logica di accesso ai dati e, preciso,
bisogna avere molto bene in mente cosa accade 'realmente' ma la
differenza rispetto al passato ï¿œ abissale.
>
> Io non sai quanti salti farei, nell'ordine sono riuscito a perdermi:
>
> Wp7 Event
LOL
>
> Cercherï¿œ di tenermi aggiornato per capire se riesco a partecipare, sarei
> finalmente curioso di vedere:
>
> 1) Un Wp7 che sicuramente qualcuno avrï¿œ a portata di mano :)
beeep :)
> 2) Come voi ragazzacci di altri pianeti avete plasmato e utilizzato Linq,
> expression trees et simili e l'avete utilizzato per i vostri scopi. Sono un
> pï¿œ fermo con gli "studi personali" su VS2010 a causa di Progetto di lavoro +
> Bimbo piccolo, che messi insieme sono deleterei per i miei neuroni affamati
> :)
Mi sembra di capire che Andrea nei prossimi Community Days soddisferï¿œ
queste voglie :) Oh mamma, detto cosï¿œ ... ROTFL



text:
Luca Menegotto wrote:
> Raffaele Rialdi [MVP] wrote:
>
>> mapping.  Il dataset nel
framework.net
 ha fatto piï¿œ danni che altro.
>
> Come non quotare?
>
> Io, come l'ho visto, mi son detto: con quella roba li non voglio avere
> nulla a che fare.
>
> Il problema e' che 'quella roba li' si presta molto bene a wizards e
> similia, per cui ci tocca.
Una precisazione. Per certi usi (leggi RAD) ï¿œ ancora un buon strumento.
Ma dal momento in cui quell'app avrï¿œ una versione 2, la scelta del
dataset la pagherai carissima.



text:
On 10/22/2010 11:28 AM, Raffaele Rialdi [MVP] wrote:
>
> Per me sta al primo posto, no way.
> ï¿œ un altro modo di pensare alla logica di accesso ai dati e, preciso,
> bisogna avere molto bene in mente cosa accade 'realmente' ma la
> differenza rispetto al passato ï¿œ abissale.
Noto una abissale differenza (per quel poco che uso Linq con extended
methods e lambda) nella manipolazione di collezioni / DataSet (che ho
ereditato, non datemi del folle, sono anche io conscio del fatto che ha
fatto piï¿œ danni che altro ! :)
>> 1) Un Wp7 che sicuramente qualcuno avrï¿œ a portata di mano :)
>
> beeep :)
>
Ironia ? Non ti convince ? Hai qualche feedback da dare (Oltre a quelli
che ho letto sui vari blog e su quanto l'Hype su WP7 nasca piï¿œ dagli
sviluppatori che dai potenziali utenti ) ?
> Mi sembra di capire che Andrea nei prossimi Community Days soddisferï¿œ
> queste voglie :) Oh mamma, detto cosï¿œ ... ROTFL
Bene, l'iscrizione l'ho fatta, spero di non doverci rinunciarci, mi
spaventa un po' l'orario in concomitanza con l'orario degli asili nido,
al massimo arriverï¿œ un po' piï¿œ tardi ! :)
GG


text:
>Mi sembra di capire che Andrea nei prossimi Community Days soddisferï¿œ
>queste voglie :) Oh mamma, detto cosï¿œ ... ROTFL
<zeneize>Lo chiamavano bocca di rosa, vendeva le expression, vendeva le
expression :-)</zeneize>



text:
gianluca gravina wrote:
> Noto una abissale differenza (per quel poco che uso Linq con extended methods
> e lambda) nella manipolazione di collezioni / DataSet (che ho ereditato, non
> datemi del folle, sono anche io conscio del fatto che ha fatto piï¿œ danni che
> altro ! :)
Al primo posto ï¿œ la produttivitï¿œ (quella che il cliente paga). Linq ï¿œ
fuori categoria per questo, troppa differenza con tutto il resto.
Al secondo posto viene la pulizia del codice. Chiaro, facilmente
espandibile, nato per la pluggabilitï¿œ e soprattutto validato dal
compilatore
Al terzo posto viene la performance. Se sei un maniaco di sql scrivi il
triplo di codice e riesci a fare meglio (forse). Altrimenti su un uso
"normale" sono piï¿œ efficienti le query generate da Linq.
Se poi consideri le query a manina vecchio stile puoi aggiungerci il
fatto che non sei piï¿œ vulnerabile a sql-injection. Cosa che tutti
possono evitare con il banale uso dei parameters ma che alla fine ï¿œ
sempre la vulnerabilitï¿œ numero 1 su internet.
Usare sql a mano ï¿œ come guidare una motogp senza casco. Se cadi sei
morto.
> Ironia ? Non ti convince ? Hai qualche feedback da dare (Oltre a quelli che
> ho letto sui vari blog e su quanto l'Hype su WP7 nasca piï¿œ dagli sviluppatori
> che dai potenziali utenti ) ?
ri-beeeeep
> Bene, l'iscrizione l'ho fatta, spero di non doverci rinunciarci, mi spaventa
> un po' l'orario in concomitanza con l'orario degli asili nido, al massimo
> arriverï¿œ un po' piï¿œ tardi ! :)
come non capirti :)



text:
Andrea Saltarello wrote:
>>Mi sembra di capire che Andrea nei prossimi Community Days soddisferï¿œ queste
>> voglie :) Oh mamma, detto cosï¿œ ... ROTFL
> <zeneize>Lo chiamavano bocca di rosa, vendeva le expression, vendeva le
> expression :-)</zeneize>
ROTFL!!!



title: Problema versione runtime

author: Rino

text:
  Salve,
ho sviluppato fin'ora con VS2008 ed in particolare ho un console
(chiamiamolo VERS) che va a frugare tra gli assembly di altri console
(sempre sviluppati da me) allo scopo di vederne la versione.
Tutti questi console sono stati poi portati sul server dove hanno
girano fin'ora regolarmente.
Da qualche settimana sono passato al VS2010 + framework 4 in locale e
ho creato l'ennesimo console (chiamiamolo CONS1) ma col VS2010.
Sul server ho quindi installato il framework 4 e ho portato su il
console CONS1. Ma quando ha girato il console VERS mi ha restituito il
seguente errore:
"This assembly is built by a runtime newer than the currently loaded
runtime and cannot be loaded"
Googlando un po' , ho verificato che sul server il gacutil.exe è
posizionato solo sotto: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
Mentre nel mio locale, oltre ad essere posizionato lì, è posizionato
anche in:
C:\Programmi\Microsoft SDKs\Windows\v6.0A\bin
C:\Programmi\Microsoft SDKs\Windows\v7.0A\bin
C:\Programmi\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools
ed ecco credo perchè in locale mi funzia..
Come faccio a farlo funziare anche sul server?  Mica devo installare
per forza il Windows SDK ??
Tnx 1000


title: Problema versione runtime

text:
Rino wrote:
>   Salve,
>
> ho sviluppato fin'ora con VS2008 ed in particolare ho un console
> (chiamiamolo VERS) che va a frugare tra gli assembly di altri console
> (sempre sviluppati da me) allo scopo di vederne la versione.
> Tutti questi console sono stati poi portati sul server dove hanno
> girano fin'ora regolarmente.
>
> Da qualche settimana sono passato al VS2010 + framework 4 in locale e
> ho creato l'ennesimo console (chiamiamolo CONS1) ma col VS2010.
>
> Sul server ho quindi installato il framework 4 e ho portato su il
> console CONS1. Ma quando ha girato il console VERS mi ha restituito il
> seguente errore:
> "This assembly is built by a runtime newer than the currently loaded
> runtime and cannot be loaded"
>
> Googlando un po' , ho verificato che sul server il gacutil.exe ï¿œ
> posizionato solo sotto: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
>
> Mentre nel mio locale, oltre ad essere posizionato lï¿œ, ï¿œ posizionato
> anche in:
> C:\Programmi\Microsoft SDKs\Windows\v6.0A\bin
> C:\Programmi\Microsoft SDKs\Windows\v7.0A\bin
> C:\Programmi\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools
> ed ecco credo perchï¿œ in locale mi funzia..
>
> Come faccio a farlo funziare anche sul server?  Mica devo installare
> per forza il Windows SDK ??
> Tnx 1000
Non capisco cosa c'entra gacutil.
Tu carichi gli assembly via reflection, giusto?
L'errore che ricevi ï¿œ normale perchï¿œ VERS fa uso di una versione del
framework mentre le tua altre applicazioni fanno uso anche di versioni
di framework differenti.
Per farlo funzionare sempre devi usare una tecnica differente e cioï¿œ
usare gli oggetti nativi (COM) del CLR (meglio via C++) per caricare in
memoria l'assembly e leggerne la versione.
Nel libro di Steven Pratschner ci sono molti listati di esempio che
riguardano le tecniche di interazione con il CLR via COM.
La documentazione online riguardo queste api ï¿œ qui:
http://msdn.microsoft.com/en-us/library/dd380850.aspx
BTW se non ricordo male reflector usa proprio queste api.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Problema versione runtime

author: LudovicoVan

text:
"Rino"  wrote in message
news:23ba3242-a5c9-45e8...@d7g2000vbv.googlegroups.com...
> "This assembly is built by a runtime newer than the currently loaded
> runtime and cannot be loaded"
Nemmeno a me e' chiaro lo scenario, comunque prova a guardare anche questo
post:
http://groups.google.com/group/it.comp.dotnet/msg/790a6f38dc5ae655
-LV
--- Posted via news://
freenews.netfront.net/
 - Complaints to
ne...@netfront.net
 ---


title: Problema versione runtime

text:
Intanto ringrazio entrambi;
il discorso del gacutil mi è venuto perché, cercando in rete il
messaggio di errore (come suggerito giustamente nel post passatomi da
LudovicoVan) il primo link che si trova è:
http://www.google.it/url?sa=t&source=web&cd=1&ved=0CB4QFjAA&url=http%3A%2F%2Fcommunity.dotnetwork.it%2FExcentric%2Farchive%2F2010%2F06%2F18%2Fthis-assembly-is-built-by-a-runtime-newer-than-the.aspx&rct=j&q=assembly%20is%20built%20by%20a%20runtime%20newer%20than%20the%20currently%20loaded%20runtime%20and%20cannot%20gacutil&ei=Q-QWTuK0DoXCswa6-b3LDw&usg=AFQjCNEdf8nZrm10fG98wALnkNPUtVM3bA&cad=rja
che è della
community.dotnetwork.it
Tu carichi gli assembly via reflection, giusto? -> SI
Lunedì, in ufficio (oggi sono in ferie :) ) proverò le strade da voi
consigliatemi; intanto se riusciste a buttare un occhio a quel link vi
sarei grato, perché a parte tutto essendo la macchina server un po'
datata (W Server2003) sono effettivamente preoccupato che usi il
runtime giusto, ed avere di fatto il gacutil.exe solo in Framework
\v1.1.4322 non mi dice niente di buono..
Tnx 1000

> --- Posted via news://
freenews.netfront.net/
 - Complaints to
n...@netfront.net
 ---


title: Problema versione runtime

text:
Come anticipato, ho provato prima il suggerimento di LudovicoVan (che
era più immediato) ed ha funziato!!!
GRAZIE 10^8   !!!!!!
ps: per caso siete riusciti a buttare un occhio a quel link?
On 8 Lug, 13:26, Rino <
marino.ce...@gmail.com
> wrote:
> Intanto ringrazio entrambi;
> il discorso del gacutil mi è venuto perché, cercando in rete il
> messaggio di errore (come suggerito giustamente nel post passatomi da
> LudovicoVan) il primo link che si trova è:
http://www.google.it/url?sa=t&source=web&cd=1&ved=0CB4QFjAA&url=http%.
..



title: [C#] connectionstring variabile

text:
ciao a tutti
trovo molto comodo creare un dataset con la creazione guidata
piuttosto che scrivere codice, ho però la
necessità di indicare come stringa di connessione un valore variabile,
questo per connettermi ad un db (jet) che
potrebbe essere spostato dall'operatore. Come posso modificare la
stringa inserendo una variabile?
Se indico al programma di salvare la stringa di connessione nel file
config, potrei modificarla a mano ma comunque
non ho risolto il mio porblema che ha necessità di essere
automatizzato al massimo.
grazie per le risposte.
nervo