Architettura
Stuzzicato da un post su Guisa (che adesso non trovo :-), ma anche dal fatto di aver sentito direttamente da un po di persone che non c'è una chiara percezione delle differenze tra queste definizioni, ci scrivo su qualcosa.
Partiamo dalla definizione più vecchie:
OnPremise Installation
E' un Modello di Delivery che tutti conosciamo. Applicazioni, Line of Business, installate sui server della propria azienda. Per quanto le applicazioni in questo modo siano controllabili, customizzabili, rappresentano un costo per l'azienda in termini di manutenzione e personale specializzato. La controparte di OnPremise è un delivery OnDemand, cioè l'outsourcing delle applicazioni.
ASP (Application Service Provider)
E'...
Tratterà dei DSL (Domain Specific Language).
Leggete qui.
La stagione scorsa, il progetto Mastering di Objectway (visto nell'ottica delle due giornate di formazione) è andato benissimo con i tre mastering di NHibernate. Quest'anno si riparte alla grande, con due grossi appuntamenti nel mese di Ottobre.
Il 2/3 Ottobre terrò un:
Mastering .NET Enterprise Architecture
e il 29/30:
Mastering .NET Enterprise Web Application
Una premessa fondamentale: sono due corsi basati fortemente su architetture a servizi secondo i principi SOA.
Il primo si concentra sulle architetture applicative in...
Questa sarebbe rigorosamente da non perdere, per architetti e sviluppatori... JAOO 2007 Si svolgerà dal 23 al 28 Settembre, in Danimarca (ottimo motivo per andare a prescindere dalla conferenza...:-)) La lista degli speaker fa realisticamente paura, stiamo parlando infatti dei migliori "guru" mondiali, giusto per nominarne qualcuno: Frank Buschmann, Jimmy Nilsson, Jeff Sutherland e Ken Schwaber, Robert Martin, Martin Fowler, Eric Evans, Erik Meijer, Ted Neward...(ne devo dire altri??) Ci sono circa 6 track in parallelo al giorno. Giusto per far venire invidia queste sono le track.E devo dire con molto piacere che brilla la track LINQ, con un bellissimo Linq...
Approfitto di questo commento sul mio post dell'altro ieri, per scrivere due parole, perchè l'argomento meritava di essere approfondito. Mario dice: "...L'unico passaggio su cui non concordo proprio in pieno, se l'ho capito bene, è questo: ...ma si vede che cmq in ogni caso, qualche "pezzo" di pulizia del modello di dominio, in un modo o nell'altro bisogna cederlo.Mi ricordo l'illuminante chiacchierata con te sulle collection; quando hai detto che utilizzare IList<T> non era un vincolo di NH ma la scelta migliore di design ci ho pensato su 10 secondi e ti ho risposto "Vero! Hai ragione!" e da allora...
L'evento di martedì prossimo (Application Platform Roadshow) organizzato da Microsoft, sarà di sicuro molto invitante e dedicato a professionisti IT e Dev..si parla di OLAP e Business Intelligence la mattina e di AJAX al pomeriggio...niente male...In più ci sarà anche un desk per promuovere l'iniziativa di GUISA...mi troverete li, a chiacchierare di non_solo_architettura.Io sarò li tutto il giorno...ovviamente visto che ci saranno centinaia di persone...l'appuntamento è allo Skyline di Milano (le info sono tutte nella scheda di iscrizione)...ahhh...ovviamente è gratuito... Vediamo se riesco pure in serata ad andare a vedere il "7 e l'8"...il film dei miei compaesani... Ci si vede li! PS: Adesso scappo che...
Lo dicevo qualcosa come due mesi fa al webcast che abbiamo fatto assieme io e Lorenzo,
la famosa Sessione di Domande e Risposte (in cui tra l'altro ci siamo divertiti un casino...), che per come stavano andando le cose avevo intravisto una possibile sinergia tra Linq e NHibernate ed ecco la slide di allora:
Mi sarebbe piaciuto scriverci su qualcosa...ma in fondo in fondo...sapevo che "uno a caso" ci sarebbe arrivato prima...e quindi Linq for NHibernate comincia a prendere forma...
Avere Linq nel linguaggio e una trasformazione delle expression in clausole HQL o Criteria (poco importa) potrebbe voler dire il declino di...
Purtroppo solo in casa Java...ma chissà che non si pensi ad un porting appena possibile. Hibernate Shards è un framework (costruito su Hibernate) che permette di lavorare con le partizioni orizzontali dei database, il tutto con le interfacce abituali SessionFactory, Session, Criteria e Query. Permette di sfruttare la distribuzione dei dati in qualsiasi configurazione di shards. C'è anche il supporto per shards virtuali (in modo che le shard fisiche possano essere rifattorizzate in qualsiasi modo). Tutta la logica è ovviamente a plugin come nella buona tradizione Hibernate, con HQL e Transazioni distribuite. Ecco l'attuale stack di tecnologie Hibernate...
Quando ho letto che i miei blogger preferiti (Jeremy Miller, Scott Bellware, Jeffrey Palermo...e altri "ragazzacci" di CodeBetter) avevano organizzato una "spedizione punitiva" e si sono presi a parte tutto il team di Linq for Entities per spiegare loro un po come va il mondo (giusto qualche lezioncina di NHibernate...quoto: "...teaching them about NHibernate...") mi è venuto troppo da ridere! Una delle cose che da più fastidio della versione attuale di EF è che non rispetta neanche quel minimo principio della persistence ignorance. Classi base da cui ereditare, classi specifiche per le associazioni e interfacce specifiche per il tracciamento dei cambiamenti.Sam Gentile dice che questo è...
Qualche altra news al blog ufficiale del team di ADO.NET...In Orcas verrà introdotto un nuovo data provider (EntityClient) per fornire un gateway per le query fatte sulle Entity.Questo client utilizzerà un suo linguaggio definito (Entity SQL) e saranno disponibili i soliti Connection, Command, Parameter, e DataReader tanto cari a tutti i membri della famiglia dei dataprovider .net come SqlClient, OracleClient etc. La tendenza sembra per ora la stessa: Linq for SQL, Linq for Entities, come questo provider non gestiscono in modo automatico i DML (Data Manipulation Language) sul Db. Niente insert/update/delete. In pratica coprono solo la parte della interrogazione pura. Ok...viene...
Jeremy Miller, che rimane uno dei miei blogger preferiti, ha scritto una piccola nota (rifacendosi anche ad un capitolo del libro di Eric Evans, Domain Driven Design) sui problemi generati dall'uso di chiavi composite nel db. Sembra impossibile come si siano potuti disegnare database per anni e anni in questo modo. Le chiavi composite, oggettivamente creano non poche rogne, quando potete (quando avete le mani libere)...usate chiavi surrogate.Programmare per credere. Source: Composite keys are evil Originally published on Thu, 01 Feb 2007 15:05:00 GMT by jmiller
Primo webcast della giornata finito...Sta per iniziare il secondo...NHibernate: un caso reale...di un altra serie però...(piattaforma applicativa)(Si...ho montato la tenda di fronte alla Microsoft...)ps: sposto le riflessioni a fine giornata...a dopo!
Un post di Eric Lee su come in Microsoft vengono sfruttati i concetti di Team Project e Areee...Direi che il livello di granularità è molto fine...:-)
Ci sono già una cinquantina di persone...A dopo...
Domani alle 14.30, altro webcast della serie: La piattaforma .NET nel mondo Enterprise: migrazione, interoperabilità e strumenti Faremo una overview su strumenti come NHibernate, il core dell'inversione di controllo di Spring.NET, una tappa veloce sull'Aspet Oriented Programming sempre con Spring.NET, il framework di MVC di MonoRail e molto altro...sia dal punto di vista architetturale per il disegno di applicazioni enterprise, che con qualche esempio di codice.Il Menu non è niente male...sa di scorpacciata di tecnologia.Vi aspetto.
Ricordo che alla fine della sessione sui pattern di Presentation agli architect days di ottobre, presentata da Corrado, gli chiesi, se l'attuale uso dell'MVP (Model View Presenter) non potesse cominciare a prendere piede con l'avvento dei primi framework che avessero evitato di scrivere una montagna di codice non indifferente. La domanda non era buttata li per caso...Effettivamente per quanto "nobili" siano i principi dietro pattern ultra conosciuti, a volte la loro implementazione su progetti di una certa dimensione non è affatto banale, e questo può notevolmente frenare il loro processo di adozione. Fare una prova a casa e vedere che tutto funziona con...
e mentre Lorenzo si sta preparanzo per la terza delle sette puntate della serie: La piattaforma .NET nel mondo Enterprise: migrazione, interoperabilità e strumenti ...io sto facendo "le notti" per preparare il materiale per il quinto webcast, schedulato per il 16 Gennaio alle14,30...ecco l'abstract:Introduzione a NHibernate, Spring.NET, Log4NET e CastleProjectIn questo Webcast verranno mostrati gli strumenti aperti che stanno cambiando il modo di realizzare le applicazioni .NET. Object Relational Mapping, AOP, Logging, gestione degli oggetti, sono tecnologie molto utili che semplificano la realizzazione di applicazioni anche complesse e facilmente manutenibili. Frutto del lavoro delle community, questi strumenti sono molto potenti...
Del mio webcast ne hanno parlato più gli altri che io! sono commosso!E sto leggendo tutto solo ora, perchè nei due giorni precedenti ero in viaggio di ritorno dalle vacanzine in sicily, e poi non stanto del viaggio, al mio rientro, con il pres, abbiamo pure visto Casino Royale [occhio alla pronuncia: Ruaial...:-)].Del webcast avevo intenzione di scrivere in dettaglio gli argomenti trattati ma mi ha anticipato Alessandro Melchiori, qui, ah...nessuna lesione di copyright Ale, anzi grazie mille!Volevo però dire che, sempre in merito all'argomento Design Idiomatico, anche il nostro "mitico" Adrian ha fatto un'ottima sessione nell'ultimo workshop di Ugi, infatti...
Dalla sessione "C# 3 0 Future Directions in Language Innovation" di Anders Hejlsberg all'ultimo Tech-ed, si apprende che oltre alle tante novità, ci saranno anche delle property generate al volo che wrappano i campi privati.In pratica una scrittura del genere:
public class Product
{
public string Name {get;set;}
}
E' equivalente a questo:
public class Product
{
string name;
public string Name
{
get { return name;}
set { name = value; }
}
}
Sostenevo da anni che ci volesse un metodo di scrittura un po più smart per la definizione di...
Girobloggando qui e li...sono arrivato in questo post interessantissimo di Frank Sommers da cui ho scaricato il pdf di una presentazione fatta da due degli architetti di eBay. Premessa:credo che eBay sia una, se non la più pesante applicazione software distribuita presente al mondo...Il pdf (mi sarebbe piaciuto assistere live alla sue spiegazione) è illuminante, fatto bene e ci fa capire la storia delle evoluzioni dalla prima alla attuale versione.Segno alcuni punti (sparsi) che ritengo interessanti:Le statistiche sono eccezionali, ne riporto alcune: 212,000,000 Utenti registrati 1 miliardo di page views al giorno 26 miliardi di SQL query e updates al giorno 2 petabytes di dati (che andando a ripassare nella scala...
Sono online su GUISA le slide del webcast della serie "Aspire Architect" che ho erogato qualche settimana fa in microsoft.Si tratta dell'episodio 7 dal titolo:Disegno architetturale, gli idiomi e le linee guida di design per il .NET Framework.Qui il download.
on essendo presente nella Domain Driven Design un vero e proprio manifesto o dei comandamenti, ho fatto in modo che da un estratto della mia bibbia...se ne potessero tirare fuori alcuni. Sono generici e saranno completati poi da modalità più specifiche di design, ma devo dire che già espressi in questa forma fanno il loro effetto: Partizionare le applicazioni in Layer. Il design dei layer deve garantire la loro coesione. I Layer dovrebbero dipendere solo da layer sottostanti. Usare pattern architetturali per garantire un basso accoppiamento di un layer con un altro. Concentrare tutto il codice che riguarda il...
Il odel Driven Design, pretenderebbe di poter generare il codice partendo dall'UML. Ed è li che il fallimento ci aspetta dietro l'angolo.Fare una generazione di codice da UML e poi continuare a mantenere il codice allineato al modello è un lavoro pesante e difficilmente automatizzabile. Teniamo a mente anche che: I diagrammi rappresentano una vista del modello analitico. Ma non sono il modello analitico. Per dirla con un detto zen...se qualcuno vi indica la luna con il dito...non confondete il dito con la luna. E' invece il codice di un progetto (e volendo astrarre, anche il design) che riesce a catturare...
Gli sperti di dominio (i clienti) conoscono i termini del loro campo di conoscenza, ma non conoscono i termini propri dello sviluppo software. Concordemente gli sviluppatori che utilizzano termini di propri di sviluppo, possono descrivere bene un sistema in termini funzionali ma privo di significato per un esperto di dominio. Nella Domain Driven Design l'uso di un linguaggio comune tra gli sviluppatori, architetti, analisti ed esperti di dominio è essenziale alla riuscita del progetto. Il mancato uso di un linguaggio comune rischia di confondere il visione del modello analitico, e della sua implementazione. Peggio ancora può indirizzare verso un refactoring sbagliato. E' errato...
li analisti finanziari hanno a che fare numeri.
Gli avvocati hanno a che fare con le leggi.
I Domain Modelers hanno a che fare con la conoscenza. Non fanno altro che acquisire conoscenza dagli Esperti di Dominio (i clienti) e distillare questa conoscenza in modo da selezionare la parte rilevante ai fini dell'effettiva soluzione del problema di business.
n mindset (una forma-mentis), cioè una serie di principi e priorità, atte ad accelerare la progettazione software che ha a che fare con domini di particolare complessità.
Le premesse fondamentali sono:
La maggior parte dei progetti, dovrebbe basarsi su un Dominio, e su una Logica di Dominio.
La progettazione di Domini complessi dovrebbe basarsi su un modello analitico.
Bisogna tener presente che:
Il modello analitico (cioè il risultato del lavoro degli analisti) è uno strumento di sola comprensione.
Un analista poi può usare UML per la visualizzazione del modello stesso.
Il modello non porterà nessun dettaglio implementativo ai fini di non inquinare la comprensione.
L'implementazione di un modello molte...