Sviluppare framework infiniti per applicazioni web, siti Web e servizi Web è sempre molto divertente. È una delle aree più ricche in cui hai 100 modi diversi per ottenere più o meno la stessa cosa.
Anche con tutta questa abbondanza, recentemente mi sono ritrovato a mancare un framework web in C #.
Sento che la nuova async-await API di C # 5.0 sta andando davvero per cambiare il modo in cui viene scritto il codice lato server. Raggiungere lo stato zen di piena asincronismo è sempre stato il santo graal degli sviluppatori lato server. Ma è sempre stato troppo complicato e ha preso troppo codice. Purtroppo il 90% dei framework web nel mondo sta ancora bloccando. Ecco perché penso che node.js sia diventato così popolare - offre asincronicità a buon mercato.
Ma ora, con asincrono-attesa, C # sta per rubare lo spettacolo e diventare il nuovo "bambino prodigio asincrono". Arrivederci JS (sul lato server, non arrabbiarti). Almeno questo è il mio caso, C # è diventato sexy.
Questa nuova era richiede una nuova generazione di framework web?
Mi manca un framework web o più di un ecosistema web in C # che ricorda node.js
Qualcosa come node.cs. Sono i principi fondamentali:
-
Promessa di piena asincronicità. Ogni pacchetto nell'ecosistema deve offrire API asincrone. Non riesco nemmeno a immaginare di accedere a un DB e di bloccarlo quando lo faccio. Inoltre, il core stesso dovrebbe essere costruito attorno a interfacce asincrone - con flussi che guardano come questo .
-
Basato su pacchetto e modulare. C # è famoso per aver gonfiato i framework web monolitici. Voglio mescolare e abbinare. Voglio una scelta tra 10 motori di visualizzazione (scritti da 10 persone diverse) e una scelta tra 10 motori di routing. Queste cose non dovrebbero far parte del nucleo.
-
Codice snello e conciso. Mi dispiace ma i framework in C # non sembrano mai agili. Tutto è sempre così troppo ricco di risorse. Strati e strati di astrazioni fino a quando non hai idea di cosa stia realmente succedendo. Non fraintendermi, quelle strutture enormi fanno bene a molte cose, solo non tutto.
-
Riduci il blocco del fornitore. Sarò gentile a offrire alternative di hosting a IIS. Forse sono dotati di un proprio server web asincrono opzionale come nodo. Anche se IIS dovrebbe essere supportato. Il supporto mono su Linux è importante, con integrazioni asincrone a nginx e amici.
Non sono stato in grado di trovare un ecosistema con queste caratteristiche. Se esistesse, attirerebbe gli sviluppatori verso i grandi benefici nascosti all'interno del pattern async-await .. che è unico per C # (in produzione almeno).
Modifica
Mi spiace, la mia domanda non è stata chiara. Sto chiedendo:
-
Hai familiarità con una soluzione esistente che si adatta alle mie esigenze?
-
In caso contrario, pensi che sia qualcosa che vale la pena di scrivere? Lo trovi utile? Lo useresti come alternativa ai framework web attualmente disponibili in C #?
-
Quali critiche e lodi hai per le proposte elencate sopra se dovessi creare un framework che indirizzi le suddette proposte.