ASP.NET
Nel precedente post ho parlato della lacuna della definizione del contratto nel mondo ROA rispetto al mondo SOA. E' bene che faccia qualche precisazione, ma prima di parlare di questo fatemi fare un escursus sul concetto di contratto e come questo si applichi oggi nel mondo SOA (Service Oriented Architecture).
Se chiediamo ad un avvocato di scrivere un contratto, garantendo un certo introito :-), ci innondera' sicuramente di domande e probabilmente scrivera' 40/50 pagine di documento dove ogni singola parola ha un suo peso specifico. In sostanza la regola e', ogni aspetto non 'normato' o definito rappresenta un threat.
In ambito IT...
In queste ultime due ore stavo prototipizzando un micro framework per implementare servizi REST based mediante delle Http handlers. Niente di eccezzionale, ma l'idea di avere qualche cosa di simile a WCF, cioe' dei metodi con una firma prolissa e molto OO, mi piace.
Dopo aver trascorso un'oretta di codifica (refactoring a gogo), ho iniziato a scrivere qualche test. Per testare un Http handler ci vuole un Http context! E come lo creo? Non voglio tirar su tutta la 'baracca' ASP.NET e voglio avere un oggettino dove posso verificare il contenuto della risposta.
Per creare un HttpContext ci vuole un...
Ormai tutti ne parlano, l'argomento hot topic e' divenuto SilverLight. Ci sono gia' parecchie demo interessanti che fanno presagire ad evoluzioni/rivoluzioni nel mondo della applicazioni web-like.
Una demo che mi ha particolarmente colpito e' quella di Telerik: Room Designer. L'ho provata dal mio Safari su Mac OS :-) Gia' vedo le grandi catene di mobili ...
Update: ho seguito il suggerimento di Lorenzo. Il post si è trasformato in tip.
Molto spesso, durante i corsi di ASP.NET, nel mentre parlo di validazione mi vien posta la fatidica domanda. Dove debbo applicare il controllo dell'input ?
Questa apparentemente semplice domanda nasconde un problema molto serio, soprattutto nel mondo delle applicazioni distribuite, ma non solo (ricordo che i danni maggiori arrivano da dipendenti inc...ti !!). Innanzi tutto è bene ricordare che l'informazion fornita da un utente è SEMPRE potenzialmente PERICOLOSA. Possiamo avere problemi di sicurezza volontaria (SQL Injection, Cross-Script Injection, ecc.) ma anche involontaria (integrità del dato, inavvertita cancellazione, ecc.). Quindi è bene controllare sempre ciò che viene inserito.
Il problema è quindi dove...
A volte è necessario utilizzare le finestre modali in ASP.NET per evitare che l'utente ne possa aprire molte dello stesso tipo per distrazione. Per avere una finestra modale è sufficiente richiamare il metodo javascript ShowModalDialog dell'oggetto window.
Quando si apre una finestra modale ci si può trovare di fronte ad un effetto collaterale. Ogni volta che si fa una postback (ad esempio gestendo l'evento Click di un Button ASP.NET) si apre una nuova finestra modale.
Per risolvere il problema è sufficiente aggiungere il tag base nell'head della pagina ASP.NET invocata nella dialog modale:
<base target="_self" />
fonte: ShowModalDialog
Molto interessante: http://www.positioniseverything.net/
In questi giorni ho reinstallato il mio portatile con Windows Server 2003 R2. Il problema è banale, IIS 5.1 non supporta il multi site !! Quindi, in attesa di Windows Vista con IIS7, ho deciso di rivolgermi a Windows Server 2003.
Ovviamente il web server locale usato da Visual Studio 2005 non è sufficiente per quello che debbo fare (giocare con vari STS...).
La sopresa è venuta quando ho iniziato a scrivere il primo sitarello del cavolo ("ciao mondo") giusto per vedere se andava tutto. Non si può debuggare. Dopo 4 ore di ricerche della soluzione, ho postato sul forum ASP.NET....
Come sviluppatore web molto spesso guardo i siti altrui e prendo spunto sulla tecnica adottata per raggiungere determinati effetti. Infatti ho sempre pensato che noi (sviluppatori) non creiamo ma trasformiamo :-)
Capire come sono stati raggiunti determinati risultati visual con il web significa capire che cosa sta dietro il codice html, javascript, css, .... Firefox fornisce un'estensione molto interessante per lo sviluppatore.
Durante le feste natalizie ho dedicato un pò di tempo a girovagare per siti internet (non pensate male !!!). Ad un certo punto ho posta l'attenzione alla logica di navigazione della login, e razionalizzando, ho trovato tre forme comuni (ce ne sono molte altre ma parevano minoritarie):
L'home page piena di contenuti contiene anche la maschera di login per l'area riservata
L'home page con la sola maschera di login
L'home page che richiede l'autenticazione e se mancante ridirige verso una pagina di login
Nella nostra (aziendale) ultima creatura abbiamo scelto l'opzione 2, anche se forse, non mi convince più di tanto. Su alcuni siti...
Sono abbastanza solito adottare le naming guidelines nel codice che scrivo tutti i giorni (beh, non sempre tutti i giorni !|). Ciò nonostante a volte mi trovo in difficoltà nell'adottare uno standard.
Faccio un esempio: Prendiamo una WebForm oppure una WinForm e aggiungiamo una banalissima Label che rappresenta il nome. Come chiamaremmo la variabile (protetta by default) ?
protected Label FirstName;
protected Label LblFirstName;
protected Label StaticFirstName;
Che nome l'assegnereste ?
PS Dato che vi sono innumerevoli casi come questi (pensiamo a tutti i controlli Windows e Web) perchè non creaiamo una bella lista nel Wiki UGI ?
E' indubbio il valore dell'autore del libro "Programming ASP.NET 2.0 -- core reference". E' indubbio che i contenuti siano comunque molti (come dice Dino sono 800 pagine), ma sinceramente 70 eur sono troppi ! E' vero che su Amazon costa 33 dollari, praticamente la metà (comprese le spese di viaggio) che la versione italiana (sapete dove comprare i libri).
Morale:
1. Il ROI per imparare l'inglese è ottimo di questi tempi
2. L'editore non ha idea di come definire i prezzi all'estero (mi pare chiaro)
Questa è una domanda che spesso viene posta quando ci si trova in zona 'messa in produzione'. Una buona risposta la trovate nella knowledge base dell'MSDN.
Molti sviluppatori parlano di Atlas. La tecnologia, o meglio l'insieme di tecnologie, è molto interessante ma continua sfuggirmi un aspetto, a parer mio, fondamentale: la sicurezza.
Nessuno ne parla ma credo sia uno dei punti deboli di questa nuova proposta. Mi rimane da investigare (non nascondo che ho solo letto su Atlas), ma sono abbastanza scettico in quanto le tecnologie di cui parliamo solo le stesse usate da parecchi anni, solo confezionate in un diverso modo.
Confesso che anch'io sono stato (e spesso lo sono tutt'ora) un grande utilkizzatore di tabelle (nidificazioni quasi infinite). Questo articolo mi induce a studiare meglio i CSS e soprattutto pensare meglio al layout.
I controlli compositi (la maggior parte) sono dei controlli che contengono altri controlli al proprio interno. In ASP.NET 1.x per creare un controllo composito è necessario ereditare da WebControl, implementare INamingContainer e verificare sempre che i controlli child siano stati creati correttamente (EnsureChildControls) almeno a design time.
In ASP.NET 2.0 si è deciso di semplificare la vita, in quanto basta ereditare da CompositeControl ed il gioco è fatto.
Molto spesso si usano gli spigoli delle tabelle arrotondati per rendere la pagina stilisticamente più gradevole. Solitamente questo effetto vien raggiunto tramite immagini che disegnano lo spigolo. In questo sito si illustra una tecnica basata su codice javascript e CSS (compatibile con IE e Firefox)
Nel hanno parlato in tanti e ci sono i favorevoli ed i contrari, come tutte le cose nuove. Per farmi un'idea, mi sono letto alcuni articoli e sono giunto alla conclusione che sia un'approccio (AJAX non è una tecnologia: "Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways" [Garrett]) estremamente interessante se circoscritto ad alcune aree di sviluppo.
In particolare condivido appieno i punti elencati da Thomas il quale ricorda come sia fondamentale osservare al massimo le regole di usability delle applicazioni web. Nel rispetto di questa, AJAX può veramente...
Sebbene un pò vecchiotto, questo post è interessante....
Me ne sono accorto solo ora
WSE (Web Services enHancements) è ora disponibile in technology preview anche per il framework 2.0. Potete scaricarla gratuitamente dal sito msdn.
Molti sviluppatori hanno a che fare con differenti web site (quando non sono sufficienti le virtual directories). Questo genera alcuni problemi per chi ha Windows 2000 Professional oppure Windows XP in quanto non è possibile (almeno pare) creare più web sites (solo tante belle virtual directories). Per risolvere il problema ci sono due modi:
upgradare il sistema a Windows 2000 server oppure Windows 2003 server
modificare l'home directory local path del sito di default in IIS
Per un pò di tempo, quando passavo da un site all'altro usavo sempre la management console di IIS. La cosa è divenyta abbastanza laboriosa quando passavo da un...
DotNetNuke ha riscontrato un grande successo fra gli sviluppatori nel mondo ed è interessante vedere che ne esiste anche una versione tutta locale :-)
Non so se vi è mai capitato, ma a volte è nacassario spedire al client (user agent) il contenuto del buffer anzitempo. Questo lavoro è solitamente eseguito dal metodo Flush della classe HttpResponse, come da esempio:
Response.Write("aaaaaaaaaaaaaaaaaaaaaaaaaa");Response.Flush();System.Threading.Thread.Sleep(10000);
Peccato che se la dimensione del buffer è inferiore a 256 bytes (compresi) allora sembra non venga spedito alcunchè. In realtà non è vero, il problema è del browser.
Infatti, il codice di cui sopra verrà correttamente visualizzato da browsers differenti da Internet Explorer (vedasi Firefox) mentre in IE nulla da fare. Pare che in IE ci sia un bug (uno ?!?!) che non permetta di...
Andrea ha parlato ampiamente di membership management anche in chiave ASP.NET v1.1. Sinceramente la parte di autorizzazione non mi entusiasma un granchè, anzi, la trovo abbastanza povera, e mi stupisce anche il fatto che non si sia preso come riferimento l'authorization manager presente in Windows 2003 e Windows 2000 (service pack 4). Non ci resta che costruire un custom provider :-)
Per molto tempo ho scritto le pagine ASP.NET definendo, pagina per pagina i margini della stessa:
<body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
Ormai, era divenuto meccanico. Un approccio migliore (e probabilmente più corretto) consiste nel definire lo style dell'elemento body comse segue:
body { margin: 0; }
Avendo, di base un CSS comune usato in tutto il sito, diventa chiara la convenienza :-)
Scott spiega come mai la funzionalità del "Site Counter" sarà rimossa da Visual Studio.NET 2005.