.NET sta diventando troppo complesso?
Ho appena letto questo articolo su SDTimes che fa alcune interessanti considerazioni sull'aumento della complessita del .NET Framework e soprattutto sulla sovrapposizione di alcune tecnologie, traendo spunto dall'annuncio del rilascio appena avvenuto di .NET 3.5 SP1. Per esempio: esistono due modelli per l'interfaccia utente (Windows Forms e WPF). Esistono due librerie -stile ORM- in parte concorrenti come LINQ to SQL e ADO.NET Entity Framework.
La notizia è che Microsoft percepisce il problema e pensa di risolverlo con tecnologie come il Client Profile che debutta in .NET 3.5 SP1 (in breve: si può installare solo una parte del .NET Framework contenente gli assembly utili per il client tralasciando quelli pensate più per applicazioni lato server).
Non so se il problema sia riconducibile solo alle problematiche di deployment, sinceramente al giorno d'oggi mi pare più problematico fare le scelte giuste in fase di disegno e sviluppo che non pensare che la distribuzione di nuovi componenti (che poi sono l'aggiornamento di una parte del sistema operativo...) possa costituire IL problema principale. Semmai, ci sarebbe da discutere se sia meglio distribuire alcune classi come parte del framework o come assembly distribuibili anche in modo "privato". Per esempio... LINQ to SQL quando si chiamava ancora DLINQ (in Beta) poteva essere distribuito con una serie di assembly privati, ora che è stato rilasciato è un pezzo di .NET e, come tale, va a finire nella Global Assembly Cache e, per i soliti motivi di compatibilità, è poco probabile che versioni future introducano dei "breaking changes" significativi, anche qualora sarebbe molto utile farlo. Mi chiedo se non sarebbe meglio introdurre delle nuove tecnologie in una forma più leggera (ma rilasciata e supportata, non solo quando sono in beta) e poi "annegarle" nel .NET Framework "ufficiale" solo una volta arrivate a una versione 2 o 3. Credo che l'evoluzione potrebbe essere migliore e non si creerebbero troppi problemi a chi vuol fare early adoption (un conto è distribuire degli assembly privati, un altro è "obbligare" ad aggiornare il .NET Framework - non è che sia impossibile ma i tempi sono diversi specialmente in reti di una certa dimensione, dove queste cose vanno pianificate per tempo).