Si parla tanto, tantissimo di dotNET e di come sia una gran bella tecnologia. Bene, penso sia arrivato il momento di guardarla anche da altri punti di vista. Il mio è quello di uno che, di base, è abbastanza informato anche se non si è ancora addentrato in tutti i meandri di dotNET. Spero non ci siano informazioni sbagliate, quindi dico quello che so sperando che sia giusto .

Cominciamo dal fatto che dotNET esiste anche per altre piattaforme, più precisamente Mono, che è standard e tutte 'ste robe qui.

Non so se qualcuno ci ha fatto caso, ma MS cerca a tutti i costi di uscire con dotNET2 mentre i ragazzi di Mono stanno ancora cercando di arrivare a finire la corrispondenza alla 1.1 di dotNET. Questo la dice lunga su quanto sia "completo" il port e quanto MS sia disponibile a che dotNET sia multipiattaforma. Qualcuno potrebbe quindi chiedersi il perché della decisione di Microsoft di standardizzare C# ed il CLR.
La mia opinione è che sia stata una mossa geniale, oltre che un grandioso specchietto per le allodole: una standardizzazione non significa necessariamente dover seguire lo standard e Microsoft ha dimostrato più volte di essere allergica agli standard, perfino i suoi medesimi(vedi pasticcio con le typelibraries di Office, tanto per citare l'esempio più conosciuto, oppure perfino le incompatibilità di dotNET 1.1 SP1). Inoltre, Visual Studio ha la fetta più grossa di mercato su dotNET, questo è indubbio, quindi la stragrande maggioranza di coloro che vorranno usare dotNET lo faranno con VS.
Perché il designer WinForms è stato incluso nel framework? Semplice, perché non è su quello che si basano i proventi di Visual Studio, ma sulla vendita del prodotto in se e sui servizi accessori. Ancora una volta, un modo per Microsoft di attrarre persone e dare una parvenza di non monopolio(rendendo ad esempio possibile la realizzazione di SharpDevelop). Dunque, qui mi pare adesso sia chiaro, no?

Passiamo ad un altro punto fondamentale: Microsoft dice che dotNET risolverà il problema dell'inferno delle DLL(altrimenti noto come DLL Hell). In cosa consiste questo ecc. Il risultato era un malfunzionamento generalizzato delle applicazioni coinvolte.problema? Nel fatto che un certo(alto, molto alto) numero di sviluppatori non ha fatto "le cose perbene"(cit) e quindi alcune DLL andavano a sovrascriverne altre, senza alcuna accortezza per i numeri di versione, generando malfunzionamenti di ogni sorta e specie.
Dunque, lo strumento "principe" per la risoluzione di questo problema in dotNET è l'uso dello strong naming. Come funziona? Semplicemente, si "firma" un assembly con un certificato che attesta che l'assembly ha la versione X.Y e che quindi tutte le applicazioni che fanno riferimento a quella versione di quell'assembly sanno che è lui. Parte fondamentale di questo processo è la Global Assembly Cache, GAC per gli amici, che appunto conserva gli assembly più utilizzati. Cosa succede, però? Nonostante sia possibile registrare degli assembly nella GAC, Microsoft sconsiglia questa pratica a quanto ho capito.
Ergo, strong naming ti saluto. Inoltre, so che non ce n'è bisogno ma lo dico lo stesso, è normale che se non vengono rispettate le regole di base di "civile convivenza" tra gli assembly e compagnia, qualcosa di molto, molto, molto brutto dovrà succedere prima o poi, vi pare?

Adesso invece, occupiamoci della "portabilità": qui il discorso deve prendere una ramificazione dicotomica. Il problema è che bisogna distinugere tra lato server e lato client. Non solo, ma anche tra diverse versioni del Framework, perché ormai ci avviamo alla 2.0 ed il numero sta crescendo in modo preoccupante. Il perché di questa mia preoccupazione lo vediamo dopo. Occupiamoci intanto del fattore portabilità sul lato client. Voi mettereste il motore di una macchina moderna dentro ad una vecchia 500? Non penso proprio. Però è, in poche parole, quello che vorrebbero fare con dotNET ed i varii Windows(9x,ME, ecc). Capite bene che non solo mi sembra un'idea abbastanza peregrina di concetto(ed infatti nessuno osa ammetterlo pubblicamente), ma anche, a mio parere, praticamente irrealizzabile, vista la frequenza dei crash di Windows 98, tanto per dirne uno. Non mi si venga per favore a dire che non ce ne sono più, perché non è semplicemente vero. Una mia cara amica ha Windows ME. Un altro amico ha 98. Ce ne sono molti di più di quanti molti di noi spererebbero, mi sa, e non soltanto in ambito aziendale.

Ho voluto affrontare il tema della portabilità in maniera dicotomica perché la questione della "compatibilità" delle varie versioni del framework tra loro è un fattore importante. Molto importante. Stando a questo articolo, le cose non sono rosee per dotNET2, per i motivi riportati. "Certo, comunque in caso di problemi si può sempre usare il framework 1.1 side-by-side", viene detto. Sicuro, aggiungo io, tanto non abbiamo mica altri programmi da far girare sul sistema no - oltre alle applicazioni dotNET. Facendo un rapido conto e mantenendosi su una media di 20MB a framework e considerando il caso peggiore(1.0, 1.1 SP1 e 2.0), soltanto di base ci portiamo dietro la bellezza di 60 MB. Naturalmente, non è finita qui, perché oltre al CLR dobbiamo anche portarci i vari assembly che, vale la pena ricordarlo, sono DLL. Già, sono DLL, però non condividono lo spazio di memoria. Quindi per ogni applicazione avremo un caricamento di tutte le DLL. Tanti auguri.

Altro da aggiungere? Direi di si... spesso si dice che esiste NGEN, un tool capace di preconvertire il codice IL in codice nativo... già... ne vogliamo parlare? Questo articolo, fà chiaramente intendere come stanno veramente le cose, al di là della propaganda e non sono cose da poco. Il perché è presto detto: nell'articolo si dice(testualmente):" The downside, of course, is that whenever the runtime (for example via a Service Pack) or one of the dependencies of your ngen images changes (version upgrade or patch), your ngen image becomes invalid". Capito? Quindi, non solo valgono soltanto per il computer per il quale vengono generate, ma anche soltanto fino al prossimo update di una qualsiasi cosa che in qualche modo modifichi lo stato del sistema inerentemente all'immagine considerata. Credo che sia abbastanza ovvio che sia così, perché è chiaro che se cambia qualcosa magari cambiano gli indirizzi e così via, però fà anche capire che il trade-off nella maggior parte dei casi, almeno dal mio punto di vista, non è accettabile.

Bene, per ora mi fermo qui, anche se avrei molte altre cose da dire... però prima preferisco aspettare i commenti .

Buona Domenica,

Andrea

powered by IMHO 1.2

posted on domenica 5 giugno 2005 22:23 | Filed Under [ Altro ]

Comments

Gravatar
# re: dotNET sotto un altro punto di vista
Posted by Marco Russo
on 06/06/2005 03:35
Ho letto un paio di volte il tuo post e non ho capito quale è il tuo punto di vista.
L'unica cosa che ho percepito (ma potrei sbagliarmi, correggimi nel caso) è che sarebbe meglio se Microsoft non facesse nuovi prodotti (o nuove versioni dei prodotti esistenti) un po' per non creare problemi agli utenti e un po' per favorire la concorrenza.
Esattamente il contrario di chi pensa, per esempio, che inizi a passare troppo tempo tra una release e l'altra dei vari prodotti. Ma è un bene che esistano opinioni diverse.
Comunque, probabilmente non ho capito io.
Gravatar
# re: dotNET sotto un altro punto di vista
Posted by argo
on 24/07/2007 12:44
E' un dato di fatto che la gestione dei sistemi microsoft è diventata sempre meno
pratica nell'uso quotidiano.
Chiunque abbia programmato in delphi si rende conto di come ,pur appoggiandosi alle Api, borland abbia creato un ambiente di sviluppo
competitivo e funzionale. Tanto per dirla tutta
delphi produce exe che contengono al loro interno tutte le loro dipendenze.
Non rendersi conto che la strada tracciata da java era da prendere per quanto si tratta della modifica del VB6 ma non per quanto riguarda la VM ,è un errore fondamentale.
Provate solo a installare Visual Studio 2005 e farlo girare. Un IDE lento è una cosa inaccettabile a me che una pistola puntata alla tempia non te lo faccia accettare.
Gravatar
# re: dotNET sotto un altro punto di vista
Posted by BoltonTrisha
on 22/10/2011 07:00
Whatever path you decide about, there is every time somebody to tell you that you are wrong. There are always difficulties arising which allure you to trust that your critics are right. But our service will assist you at anywhen to write your article. I notify youbuy thesis that will help you in your school life. We will assist you to get up and become a successful classman!
Gravatar
# re: dotNET sotto un altro punto di vista
Posted by Steph Josh
on 10/06/2014 12:24
Your post was good and the information that you giving your post that was really cool. I like it very much. Thanks for posting this. Please
share more information and I will bookmark to my blog
Comments have been closed on this topic.