posts - 315, comments - 273, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

Sunday, November 23, 2014

Asp.Net 5, MVC 6 e Web Api

E’ qualche mese che non scrivo nulla sul blog, ma gli studi, come la vita, sono andata avanti. Ora eccoci qui a fare qualche test con le nuove versioni delle ultime tecnologie\framework web del mondo Microsoft, che ci regala ogni giorno qualcosa di tecnlogicamente fantastico…alla faccia dei soliti criticoni Smile. Torniamo con i piedi per terra e proviamo ad utilizzare le Web Api in un progetto MVC 6 (attualmente in versione beta, ASP.NET 5 fonde i framework MCV e Web Api). Apriamo il nostro VS 2015 preview (scaricabile nella versione ultimate a questo indirizzo: ) e creiamo un nuovo progetto “ASP.NET Web Application”:

image

Poi selezioniamo il template ASP.NET 5 Empty:

image

Attendiamo qualche secondo che Visual Studio crei l’alberatura della soluzione con tutti i relativi file:

image

Notiamo due file in formato “.json”, global.json e project.json, che possiamo editare rispettivamente per i settings e per le references a livello globale (solution) o di singolo progetto. La classe Startup.cs ed in particolare il metodo Configure(…) definisce l’entry point della pipeline di ASP.NET, ed è qui che andremo ad aggiungere il codice necessario all’esecuzione dell’applicazione. Prima, apriamo il file project.json, e nella sezione dependencies aggiungiamo la riga seguente:

"Microsoft.AspNet.Mvc": "6.0.0-beta1"

Notare come l’editor sia completo di IntelliSense che ci permette di scegliere dinamicamente package e versione (tra quelle disponibili):

image

Inizializziamo MVC nella classe Startup.cs, aggiungendo il metodo ConfigureServices:

1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMvc(); 4 }

il quale aggiunge tutte le dipendenze di cui MVC 6 ha bisogno. Utilizziamo il metodo d’estensione UseMvc nel metodo Configure:

1 public void Configure(IApplicationBuilder app) 2 { 3 app.UseMvc(); 4 }

Aggiungiamo una classe ItemsController (“Web Api Controller Class”) nella classica cartella di progetto Controllers:

image

1 [Route("api/[controller]")] 2 public class ItemsController : Controller 3 { 4 // GET: api/values 5 [HttpGet] 6 public IEnumerable<Item> Get() 7 { 8 return new List<Item>( 9 new Item[]{ 10 new Item() { Code= "Item#1", Description= "Item_Description#1" }, 11 new Item() { Code = "Item2", Description = "Item_Description#2"} }); 12 } 13 }

Poi aggiungiamo la classe Item:

1 public class Item 2 { 3 public string Code { get; set; } 4 public string Description { get; set; } 5 }

Avviamo il progetto ed invochiamo via browser il servizio:

image

Il servizio dovrebbe restituire il seguente json :

1 [{"Code":"Item#1","Description":"Item_Description#1"} 2 ,{"Code":"Item2","Description":"Item_Description#2"}]

Notiamo come la classe ItemsController a differenza delle versioni precedenti, non derivi piu’ dalla classe ApiController, ma direttamente da Controller. Se proviamo ad utilizzare uno strumento come Fiddler per analizzare le request e le response delle nostre Api, possiamo scoprire qualcosa di interessante, se ad esempio, modifichiamo la nostra Web Api in modo da tornare null, con l’attuale versione di ASP.NET Web Api otterremmo:

image

Ovvero una response con status 200 e corpo del messaggio vuoto, con la versione MVC 6 invece:

image

Una response con status 204 (No Content), che logicamente parlando IMHO è piu’ corretta (la risposta è OK, ma il contenuto del body è vuoto). Ulteriori dettagli sui Formatters in MVC6 possono essere trovati in questo post di Filip W. Per ritornare ad avere un comportamento Old Style è sufficiente agire a livello di configurazione, in ConfigureServices:

1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMvc().Configure<MvcOptions>(o => o.OutputFormatters 4 .RemoveAll(f => f.Instance.GetType() == typeof(HttpNoContentOutputFormatter))); 5 }

Ovviamente di novità ci sono e tante, ma almeno sappiamo da dove iniziare Smile .

posted @ Sunday, November 23, 2014 9:17 AM | Feedback (0) | Filed Under [ ASP.NET Web Api ASP.NET 5 MVC 6 ]

Powered by:
Powered By Subtext Powered By ASP.NET