699 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Salve a tutti,
Non so se ho scritto nel forum giusto.
vorrei un consiglio sulla mia crisi mistica dei 40 anni da programmatore asp.net, facendo in passato qualcosa anche con PHP4.
Programmo da 20 anni in ambiente Microsoft dal 99 prima con Classic Asp e poi che le prime versioni del .NET framework quindi essenzialmente programmazione web e desktop WebForms. Da 10 anni faccio il freelance offrendo soluzioni web, ho creato da zero un mio CMS in .NET WebForms 4.7 + database MySql che personalizzo per i miei piccoli clienti e configuro su un mio server Windows 2012R2 da me amministrato.

Il punto è che negli ultimi anni non mi sono tanto aggiornato... dovrei passare a MVC e successivamente .NET Core e piano piano riconvertire il mio CMS.
Non nascondo che la fatica e l'impegno per costruire ad-hoc è stata tanta e vedere su PHP che con 2 plugin ricrei tutto scoraggia anche se non è la stessa cosa.

Ho sviluppato e gestisco tuttora anche dei software gestionali ad-hoc per dei miei clienti.

Ora il punto è questo: visto il mercato degli opensource che spopola in questa fascia medio-piccoli clienti (Wordpress, Prestashop, Magento ecc.)
vale la pena investire nella mia formazione su MCV e poi .NET CORE oppure spostarmi ad imparare PHP?

Certo a livello di server dovrei passare a Linux e sicuramente non riuscirei a gestirlo almeno al momento come attualmente faccio con Windows Server.

Cosa mi consigliate restare e approfondire su .NET o passare a PHP?
Modificato da diego78 il 28 febbraio 2018 12.43 -
Modificato da diego78 il 28 febbraio 2018 12.49 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Cosa mi consigliate restare e approfondire su .NET o passare a PHP?

Entrambe. Non sono scelte mutualmente esclusive. Inoltre dovresti provare ad usare dispositivi IoT come la raspberry PI, formarti sulle architetture distribuite e acquisire qualche nozione di machine learning (importanti da avere soprattutto per gli anni a venire).

Se sei un libero professionista non puoi permetterti di specializzarti solo in un ambito, altrimenti restringerai di molto il cerchio dei tuoi potenziali clienti e, per quelli che hai acquisito, prenderai delle scelte non necessariamente ottimali. Se un cliente ha in casa un server Linux e vuole riutilizzarlo non puoi suggerirgli di comprare un server Windows. Fortunatamente con .NET Core puoi sviluppare codice multipiattaforma. Ma ipotizziamo che ti chieda anche di realizzare un blog a bassissimo budget: gli installi Wordpress anziché sviluppare tu un'applicazione.

Se non hai molto tempo da destinare alla formazione, cerca un socio che abbia competenze diverse dalle tue. In questo modo cominciate a costruire un gruppo che sarà più valido più della somma delle singole parti.


negli ultimi anni non mi sono tanto aggiornato.

È obiettivamente un problema ma puoi cominciare a recuperare ora.

ciao,
Moreno
Modificato da BrightSoul il 28 febbraio 2018 13.17 -

Enjoy learning and just keep making
12 messaggi dal 19 settembre 2014
Io sviluppo dal 2004, ho lavorato in php fino al 2014 come freelance, poi dal 2014 sono entrato dipendente in un'azienda per la quale ho iniziato a sviluppare in .net, mvc, wpf e winform.
Per me il vero amore è con il PHP ed il linguaggio interpretato in generale. il .net per il momento mi tappa le ali; strumenti belleppronti come identity o entity framework sono indubbiamente performanti e semplificativi ma hanno tempi di apprendimento molto lunghi e prima di utilizzarli da vero professionista bisogna lavorarci parecchio. Se invece decidi di non usare gli strumenti specifici ti senti di non aver fatto un lavoro a regola d'arte, ad esempio se per un autentificazione non usi identity non ti senti di conoscere a pieno il framework e gli strumenti annessi, se invece la usi rischi di non riuscire ad arrivare all'obiettivo voluto in quanto la personalizzazione dello strumento è difficoltosa o non consente la funzionalità voluta.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Se invece decidi di non usare gli strumenti specifici ti senti di non aver fatto un lavoro a regola d'arte

Effettivamente, è quasi sempre consigliabile usare ASP.NET Identity perché può rendere le applicazioni più sicure anche se chi le sviluppa non possiede conoscenze approfondite sul come vadano trattati i dati degli utenti. Quando ci sono delle regolamentazioni come il GDPR che prevedono anche delle sanzioni, diventa ancor più rischioso mettersi a realizzare un proprio sistema di autenticazione semplicistico.

Nella maggior parte dei casi, vale la pena investire del tempo nell'imparare come si usa lo strumento, anziché arrendersi e realizzare il proprio.

Poi c'è un'altra questione: se tu, MauP, ti trovi ad affrontare tutto questo da solo vuol dire che l'azienda non ti ha affiancato un mentore per guidarti nell'apprendimento di queste tecnologie. Non è un problema di .NET, è un problema dell'azienda che non ti ha dato un mentore.
Molte aziende lo fanno: prendono apprendisti e li lanciano nell'arena richiedendo che facciano un lavoro da senior entro la deadline.


se invece la usi rischi di non riuscire ad arrivare all'obiettivo voluto in quanto la personalizzazione dello strumento è difficoltosa o non consente la funzionalità voluta.

Che sia difficoltosa è vero, soprattutto se affronti la curva di apprendimento da autodidatta. ASP.NET Identity non è lo strumento più semplice che esista ma è così perché è proprio il tema della sicurezza a non essere semplice da affrontare. Comunque, grazie ai template di Visual Studio puoi iniziare a studiare un'applicazione funzionante per poi integrare i vari pezzi nel tuo progetto.

A proposito della funzionalità voluta, sia ASP.NET Identity che Entity Framework sono estremamente estendibili e personalizzabili. Bisogna solo capire dove e come intervenire. È anche per questo che esistono community come Aspitalia - per aiutare gli sviluppatori che sul posto di lavoro non hanno altri a cui chiedere.


Per me il vero amore è con il PHP ed il linguaggio interpretato in generale.

Ok, l'amore non si discute. Mi interessa sapere perché preferisci i linguaggi interpretati. È per il fatto che se devi modificare un file non sei costretto a ricompilare/ripubblicare l'intera applicazione?

ciao,
Moreno
Modificato da BrightSoul il 28 febbraio 2018 18.34 -

Enjoy learning and just keep making
12 messaggi dal 19 settembre 2014
Mi interessa sapere perché preferisci i linguaggi interpretati. È per il fatto che se devi modificare un file non sei costretto a ricompilare/ripubblicare l'intera applicazione?


Il fatto della compilazione in realtà non è un problema, anzi.. se vogliamo approfondire forze è un vantaggio visto che consente di mettere al riparo il sorgente.
Alcune delle cose che mi fanno ancora pensare che l'interpretato sia un linguaggio più "franco" sono:
1) Avvio di un applicazione asp.net molto più lenta di rispetto ad un applicazione php, soprattutto al primo caricamento dell'application pool. Purtroppo non sono riuscito a trovare soluzioni, anche perché mi sono rifiutato di metterle in atto, addirittura mi era stato consigliato di tenere la sessione viva con un sistema di caricamento periodico della pagina.
2) Funzioni di elaborazioni del codice stringa non utilizzabili; essendo un applicazione compilata il codice non può essere generato dall'applicazione.
3) Dipendenze non esplorabili: se necessitiamo di entrare nel codice di una dipendenza magari solo per visualizzare come elabora l'output, questo può essere fatto e spesso da spunti di sviluppo, nel .net, quasi sempre possiamo al massimo vedere l'interfaccia della classe.
4) Difficoltà nel trovare i bug quando siamo di fronte ad un comportamento anomalo di una dipendenza. Ad esempio mi è capitato che identity, durante il debug andasse in tilt in quanto mi faceva autenticare con un "userid" utilizzato in precedenza sul browser mentre mi ero loggato con un altro user. Da dove parto a fare il debug per una cosa del genere??

Scrivo tutto ciò non per polemizzare, ma per condividere esperienze che, con l'aiuto di qualcuno di esperto possono farmi cambiare idea.. anche perchè, detto tra noi.. idea la devo cambiare per forza.
11.886 messaggi dal 09 febbraio 2002
Contributi

Scrivo tutto ciò non per polemizzare, ma per condividere esperienze

Certo, certo, parla pure liberamente, i forum di discussione servono a questo. Anch'io sviluppo in PHP qualche volta.

1) Avvio di un applicazione asp.net molto più lenta di rispetto ad un applicazione php

E' vero, l'ASP.NET "tradizionale" è un po' lentino perché l'assembly System.Web si porta in pancia svariati moduli che magari nella tua applicazione neanche usi. C'è un motivo storico per cui è così ma non è neanche importante discuterne ora. Tutto ciò è cambiato con ASP.NET Core che è estremamente rapido nell'avvio e ti dà un controllo preciso sui servizi usati dall'applicazione. Non c'è paragone come performance.


mi era stato consigliato di tenere la sessione viva con un sistema di caricamento periodico della pagina.

Già, non è granché come soluzione. A partire da Windows Server 2008 R2 (IIS 7.5), puoi configurare l'application pool per essere "Always running", come leggi qui:
https://weblog.west-wind.com/posts/2013/oct/02/use-iis-application-initialization-for-keeping-aspnet-apps-alive
In questo modo non c'è bisogno di inviare richieste artificiali al server.


essendo un applicazione compilata il codice non può essere generato dall'applicazione.

Sì sì, lo puoi fare usando le API del compilatore Roslyn. È una pratica non troppo comune ma puoi emettere dei tipi a runtime, eventualmente parsando e compilando il codice da un file di testo.
https://joshvarty.com/2016/01/16/learn-roslyn-now-part-16-the-emit-api/
https://josephwoodward.co.uk/2016/12/in-memory-c-sharp-compilation-using-roslyn
In che scenario lo usi? A me non è mai capitato di usarlo.


Dipendenze non esplorabili: se necessitiamo di entrare nel codice di una dipendenza magari solo per visualizzare come elabora l'output,

Scarica Just Decompile, ti permette vedere il contenuto degli assembly di terze parti (a meno che non siano stati offuscati in maniera pesante per proteggere la loro proprietà intellettuale).
Se usi ASP.NET Core, è tutto open source e puoi vedere il codice anche su GitHub.


Da dove parto a fare il debug per una cosa del genere??

Qui varia da caso a caso... metti un breakpoint nell'action di MVC e poi prosegui passo passo con F10 o F11 per capire cosa viene invocato e che valore ritorna. Se ti trovi con valori inattesi, probabilmente il problema è nel componente che ti ha restituito quel valore.

ciao,
Moreno
Modificato da BrightSoul il 01 marzo 2018 18.35 -

Enjoy learning and just keep making
Lo sviluppo di un CMS proprietario è sconsigliato. Reinventi la ruota. Oggi giorno è difficile che tu debba creare qualcosa ex novo.

Ormai programmano tutti... ma la professionalità appartiene a pochi
12 messaggi dal 19 settembre 2014
manuel0081 ha scritto:
Lo sviluppo di un CMS proprietario è sconsigliato. Reinventi la ruota. Oggi giorno è difficile che tu debba creare qualcosa ex novo.


Nelle realtà mediamente strutturate è vero, far imparare ad un nuovo assunto un cms proprietario è da sparo. Se sei un freelance ti ci puoi anche divertire, ma lo fai senza ambizioni di crescita.

Torna al forum | Feed RSS

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