Never mind the bollocks: here’s the MvcMate

Premessa: l’ho mostrato durante la mia sessione ai #CDays13 di Roma e mi stanno arrivando alcune mail al riguardo, quindi approfitto del blog per una risposta “pubblica e cumulativa”: ecco il sorgente di MvcMate, disponibile anche come package NuGet. Per coloro che non erano presenti, MvcMate è una libreria che sviluppiamo in Managed Designs a supporto dei nostri progetti web: fondamentalmente, è nata quando ho deciso di iniziare a impacchettare tutte quelle primitive che, pur generalmente utili, erano invece sparpagliate all’interno dei vari progetti (uno su tutti: la beta del nuovo sito UGIdotNET).

Al momento, la libreria contiene:

  • alcuni ActionResult custom: Atom10Result, ImageResult, JsonpResult e Rss20Result
  • un action filter: MinifyAttribute
  • un html helper: Html.Upload/UploadFor
  • una constraint per il routing engine: NotEqualConstraint

L’idea alla base di MvcMate consiste nell’aggiungere funzionalità ad ASP.NET ed ASP.NET MVC facendole sembrare “native” cioè quanto più indistinguibili, nell’uso, da quelle built-in: in sostanza, uno degli obbiettivi è quello di generare la più bassa frizione possibile all’adozione della libreria. Per esempio, relativamente agli action result sono disponibili degli extension method della classe controller che permettono di scrivere, all’interno di una action, codice quale:

   1: public ActionResult MyJsonp()
   2: {
   3:     var model = new {FirstName = “Mario”, LastName=”Rossi”};
   4:     return this.Jsonp(model);
   5: }

Man mano che avrò tempo integrerò le altre primitive già pronte e, d’ora in poi, quelle che produrremo ex novo saranno implementate direttamente nella libreria: inizialmente saranno disponibili nel sorgente per poi finire anche nel package NuGet.

Il sorgente contiene anche alcuni sample che mostrano l’utilizzo di tutte le funzionalità della libreria e, a mio avviso, è una interessante “palestra” per coloro che volessero approfondire MVC per capire come “faccia a fare cosa” (es: come vengono generati gli attributi del markup che permettono di usare jQuery Validate in combinazione alle data annotation?) oppure come effettuare unit testing in un contesto di questo tipo (la libreria è per la maggior parte sviluppata facendo TDD). Per coloro che volessero dare un’occhiata al sorgente, alcuni approfondimenti utili potrebbero essere questo articolo o quest’altro.

Relativamente a CodePlex, ho scelto Git in modo da permettere fork e pull request: in generale, commenti e suggerimenti sono benvenuti così come ogni forma di supporto. Non sparate sul pianista, però; ok? :-)

«ottobre»
domlunmarmergiovensab
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789