Abbiamo bisogno ancora di più di strutture web in C # ora che l'attesa asincrona è qui

0

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:

  1. Hai familiarità con una soluzione esistente che si adatta alle mie esigenze?

  2. 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 #?

  3. Quali critiche e lodi hai per le proposte elencate sopra se dovessi creare un framework che indirizzi le suddette proposte.

posta talkol 30.08.2013 - 04:57
fonte

1 risposta

6
  1. "Arrivederci JS" ... Davvero? C # è un linguaggio lato server. L'aspetto di async in C # non influenzerà affatto i linguaggi lato client e i framework come Javascript (eccetto che le chiamate effettuate da Javascript sul server torneranno più velocemente).

  2. "Questa nuova era richiede una nuova generazione di framework web?" La bellezza di async è che puoi usarlo ovunque lato server; non richiede il supporto del framework, né è necessario un framework speciale per utilizzarlo. Puoi rendere qualsiasi metodo C # asincrono, cambiando semplicemente il codice e restituendo un po 'il tipo.

  3. Non hai bisogno di una completa asincronicità. Hai solo bisogno di rendere asincroni quei metodi a lunga esecuzione che bloccano i tuoi utenti. In base a tale metrica, scoprirai che solo il 10% circa dei tuoi metodi dovrà essere reso asincrono.

  4. Mentre la libreria di classi di .NET Framework può sembrare gonfia, non devi usarla tutta o anche nessuna (beh, ad eccezione della parte che fa funzionare ASP.NET e ASP.NET MVC). Usa solo ciò di cui hai bisogno. Codice il resto te stesso.

  5. "Livelli e livelli di astrazioni". Quindi crea il tuo design per il tuo dominio aziendale. Nulla ti impedisce di farlo. ASP.NET MVC è già abbastanza leggero ed è sia estensibile che configurabile a proprio piacimento.

  6. Blocco del fornitore: non è necessario utilizzare IIS di Microsoft oi relativi compilatori; puoi invece usare Mono.

risposta data 30.08.2013 - 05:54
fonte

Leggi altre domande sui tag