April 2007 Blog Posts
L'importanza di sviluppare applicazioni web table-less

Molti di noi trascurano un aspetto fondamentale dello sviluppo di applicazioni web.

Purtroppo, almeno tecnologicamente parlando, le applicazioni web, anche adottando le più recenti tecnologie lato server per l'erogazione dei contenuti sì basano su qualcosa che non si è evoluto: il protocollo HTTP e il linguaggio HTML.

Spesso sì è portati quindi a tralasciare i dettagli, l'output emesso, perchè distratti dalla semplicità e l'astrazione offerte dai controlli ASP.NET.

Visto che è noto che ASP.NET non rispetti molto gli standard web, http://en.wikipedia.org/wiki/Web_standards e http://www.w3.org/TR/xhtml1/, è nato il progetto CSS Control Adapters arrivato ormai alla versione 1.0 che rende i controlli ASP.NET cross-browser e accessibili ad utenti diversamente abili.

Con un po' di sforzi è possibile adattare i controlli alle proprie esigenze e creare un layout comunque d'effetto ma rispettoso degli standard.

Detto questo, ovviamente queste fatiche sarebbero vane se non sì seguisse il principio di un layout table-less anche per le parti del layout non affidate direttamente ai controlli standard.

Ecco un esempio di layout fluido, table-less e cross-browser:

   1:  <DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   2:  <html xmlns="http://www.w3.org/1999/xhtml">
   3:  <head>
   4:  <title>Layout Table-less</title>
   5:  <style type="text/css">
   6:  body { font-family: Arial; }
   7:  .header { text-align: center; }
   8:  .contents { position: relative; }
   9:  .left {    position: absolute; width: 150px; background-color: #dddddd; left: 0px; top: 0px; }
  10:  .center { margin-left: 150px; margin-right: 150px; padding: 10px; background-color: #aaaaaa; }
  11:  .right { position: absolute; width: 150px; background-color: #dddddd; right: 0px; top: 0px; }
  12:  .footer { text-align: center; }
  13:  </style>
  14:  </head>
  15:  <body>
  16:      <div class="main">
  17:          <div class="header">Header</div>
  18:          <div class="contents">
  19:              <div class="left">Left</div>
  20:              <div class="center">Center</div>
  21:              <div class="right">Right</div>
  22:          </div>
  23:          <div class="footer">Footer</div>
  24:      </div>
  25:  </body>
  26:  </html>

Infine, ma non ultimo, una volta creato un layout table-less potete inserire un link in fondo alla pagina (o dove meglio preferite :-) ) il logo del sito http://w3tableless.com/, come per i validatori di CSS e XHTML, che farà aumentare il numero di visite alle vostre pagine grazie ad uno scambio link automatico creato dal sito stesso per i layout realmente table-less.

Ultima cosa: rendete i link al validatore parametrizzati in base alla pagina, in questo modo http://w3tableless.com/?uri=PAGE_PATH per aumentare il numero di outbound-link, a Google piacciono anche quelli :-).

Se avete domande...

Matteo Migliore.
Sicurezza delle applicazioni ASP.NET e dimensioni pagine: 1 shot, 2 pigeons

Grazie all'adaptive rendering di ASP.NET, cambiare il modo in cui vengono renderizzati i controlli è molto semplice; è sufficiente creare una classe che erediti da System.Web.UI.Adapters.ControlAdapter e ridefinire l'html che sì vuole emettere.

Qui sì trova un articolo di Cristian Civera http://www.microsoft.com/italy/msdn/risorsemsdn/sviluppoweb/adrendering.mspx

Modificando il modo in cui sì renderizza la pagina però sì possono anche risolvere definitivamente alcuni problemi: è possibile memorizzare il ViewState, che arriva anche a qualche centinaio di kbyte, anzichè nella pagina come accade di default, in Session emettendo verso il client solamente un Id.

In questo modo sì migliora la sicurezza poichè il ViewState non va avanti e indietro [roundtrip] da client a server e sì risparmia molta banda. Davvero notevole!

Ecco un esempio dell'adapter:
http://msdn2.microsoft.com/en-us/library/system.web.ui.sessionpagestatepersister.aspx

E qui un altro sistema per sfruttarlo:
http://msdn2.microsoft.com/en-us/library/aa479403.aspx

Usandolo sì otterrano anche migliori risultati nell'indicizzazione sui motori di ricerca, Google :-), poichè in questo modo aumenta la densità delle parole chiave!

Matteo Migliore.

[OT - O no?] - Open... cola??

Premetto e prometto che i miei OT saranno pochi... :-).

Ma ormai di Open sì trova proprio tutto, comprensivo di "Licenza di distribuzione", GNU.

Ecco la OpenCola:
http://en.wikipedia.org/wiki/OpenCola

E un progetto di bevande "Open" tutto italiano:
http://opendrink.org/

Mi astengo da ulteriori commenti, ma con €0,50 sì possono fare 15l di "Open" Cola, identica
alla più famosa. E' vero, è un po' difficile miscelarla in viaggio o sotto il sole cocente,
ma ci sì può organizzare prima, se sì seguono sempre i principi del *buon design* :-D.

Per chi non avesse inteso, è un suggerimento per il prossimo
WorkShop per Andrea e Riccardo :-D.

2 Comments Filed Under [ OT - Out of topic ]
DesktopTwo - Un desktop virtuale

Segnalo questo sito:
http://desktoptwo.com/

È un'applicazione Flash (lo so, sarebbe meglio SilverLight :-)) che mette a disposizione una macchina virtuale all'interno della quale sì possono trovare delle applicazioni e gestire un Blog.

Utile per sentirsi sempre a casa ;-).

Una mini-applicazione... in espansione :-)!

Ho creato una piccola solution, grazie ad una domanda su NG (microsoft.public.it.dotnet.asp), che può essere uno startup per capire come gestire l'autenticazione in ASP.NET sfruttando le MemberShip API.

La solution contiene una classe chiamata SimpleMembershipProvider che implementa solo un metodo della classe abstract MembershipProvider, il metodo ValidateUser che data username e password restituisce true se le credenziali fornite sono valide, false altrimenti.

La classe fa il minimo indispensabile, può servire per utilizzare i Login controls di ASP.NET e al tempo stesso non dover scomodare uno storage.

L'intento sarebbe quello di creare una delle tante WebApplication, completa di tutte le funzionalità che rende disponibili ASP.NET 2.0.

Ma adesso, dove posso pubblicarla sul Blog?