mercoledì 5 maggio 2010

Architettura e architetti

Ciao a tutti

stavo riflettendo su questa definizione sempre difficile da enunciare di archiettura software e architetto software. In base alle mie letture, mi sono fatto questa idea:

L'architettura software è l'insieme dei componenti che compongono il nostro software, di come interagiscono tra di loro, di come dipendono gli uni dagli altri e di come vengono usati dall'interno e dall'esterno del nostro software. Più un componente è radicato nel nostro software, più è necessario al funzionamento di altri componenti, più è un assunto su cui si basano altre scelte, più questo è architettura.

L'architetto invece è colui che è responsabile per l'architettura.

I pattern sono architettura? No. Un pattern è una soluzione ad un problema frequente. I pattern possono diventare architettura? Si. Scegliere di usarene uno per un compito ricorrente nel nostro software diventa architettura. Sono le scelte che fanno l'architettura, non i componenti, non la tecnica, non la teoria, non i pattern, non il codice in se. Solo le scelte di come usarli.

Un esempio: usare un accesso al DB con Domain Model o con TableDataGateway (due pattern di acceso ai dati) è architettura? Uhm... vediamo: il pattern in se no, ma scegliere se nel nostro programma useremo l'uno o l'altro si, perchè da questa scelta scaturiranno dei comportamenti che influenzeranno altre scelte.

Possiamo decidere di usare da una parte l'uno e da una parte l'altro? Uhm... io direo NO. No perchè una scelta è architettura se la si rispetta, altrimenti il software non è architetturalmente gestito, ma semplicemente incasinato dalle scelte che i programatori di turno hanno preso.

A presto

 

lunedì 26 aprile 2010

getPostBackControl

Ciao a tutti

In molti scenari di sviluppo ASP.NET capita di usare un controllo come gridview o listview in cui mettere dei template con dentro dei LinkButton:

Il post back viene invocato ovviamente sulla pagina di arrivo, senza però sapere quale dei “link1” generati per ogni riga della griglia sia davvero quello giusto. Come fare? Niente di più semplice ;)

Control postBackControl = PreviousPage.FindControl(Request.Form.Get("__EVENTTARGET")); c#

dim postBackControl = PreviousPage.FindControl(Request.Form.Get("__EVENTTARGET")) VB

unico inconveniente: i pulsanti non funzionano perché non usano l’eventtarget, ma poiché in Request c’è eventualmente il solo pulsante che ha fatto Postback, allora basta cercarlo per nome. Quindi potremmo fare un metodino così:

Control getPostBackControl() { string eventTarget = Request.Form.Get("__EVENTTARGET"); if (!string.IsNullOrEmpty(eventTarget)) return PreviousPage.FindControl(eventTarget); else { foreach (string name in Request.Params) { Control c = PreviousPage.FindControl(name); if (c is Button) return c; } return null; } }

Buon divertimento ;)

sabato 24 aprile 2010

Cercare controlli innestati in ASP.NET

Ciao  tutti

vi è mai capitato di dover cercare un controllo in una pagina ASP.NET e non lo trovate perchè perso tra master, listview/gridview varie che avete usato?!?!?!

Io ho risolto creando una Extension alla classe Control così che tutti i controlli e le pagine lo abbiano a disposizione per cercare.
Unico avvertimento, attenzione a quando lo usate per cercare controlli interni ad un listview o ad un gridview perchè il metodo tornerà sempre solo il primo dei tanti.

    public static class Extensions
    {
        public static Control FindNestedControl(this Control control, string ID)
        {
            if (control == null || string.IsNullOrEmpty(ID))
                return null;
            else if (control.ID == ID)
                return control;
            else if (control.Controls.Count > 0)
            {
                foreach (Control c in control.Controls)
                {
                    var found = c.FindNestedControl(ID);
                    if (found != null)
                        return found;
                }
                return null;
            }
            else
                return null;
        }
    }
 

sabato 24 aprile 2010

Office 2010 RTM

Ciao a tutti

e' uscito office 2010 RTM ;)

in basso, una screen di Word 2010