L'ObjectDataSource che non ti aspetti

Ieri sera, prima di tornare in albergo, ho seguito una sessione di livello 400 su ObjectDataSource. Da premettere che secondo me il livello era errato, però i contenuti sono stati comunque interessanti.

L'ODS è l'unico modo sensato, se volete fare applicazioni decenti dal punto di vista dell'architettura, di utilizzare i nuovi data controls di ASP.NET 2.0. Insomma, il SqlDataSource sta lì per far venire bene le demo (ed in effetti mi viene benissimo questa in particolare :D) ma ci hanno insegnato che nel mondo reale si usano le collection e tutto il resto che ormai conoscete a menadito.

Un po' di tempo fa durante una calda sera milanese, per non avere altro meglio da fare, io ed Andrea ci siamo arrovellati sul supporto, in fase di inserimento/modifica/cancellazione, dell'entità anzichè delle sue proprietà. Il motivo è semplice: se cambia qualcosa nella mia entità, non devo stare lì a ricambiare tutto...

Ebbene, la scoperta più importante è che sì, l'ODS è in grado di lavorare direttamente sull'entità, garantendo dunque una certa flessibilità (ed una migliore architettura) all'applicazione.

Per il resto, la sessione mi è servita per ripassarmi un po' di cose: SqlCacheDepedency (vabbè, stendiamo un velo pietoso su cosa è diventa nella RTM...), aggiornamenti sfruttando gli eventi quando si ha bisogno di personalizzazione e più in generale, un po' di dettagli che non fanno mai male ripassare.

Nella stessa categoria

Commenti
novecento scrive:
L'ObjectDataSource che non ti aspetti

ciao,

cosa intendi per "sul supporto, in fase di inserimento/modifica/cancellazione, dell'entità anzichè delle sue proprietà" ?

(grazie per la precisazione sul testo del messaggio di password_recovery, a dire il vero quando hai citato .txt mi è venuto in mente qualcosa che avaeva già scritto AZ ... :D)
17/03/2006 ore 23.39 | 4 risposte
»»»» Daniele Bochicchio scrive:
Re: L'ObjectDataSource che non ti aspetti

novecento wrote:
cosa intendi per "sul supporto, in fase di
inserimento/modifica/cancellazione, dell'entità anzichè delle sue proprietà" ?

che il tuo metodo può essere qualcosa come:
Update(author as Author)
come pure
Update(username as string, x as Y.... etc)
nel primo caso accetta direttamente l'entity, nel secondo l'elenco delle proprietà. inutile dire che la prima è la scelta migliore, anche dal punto di vista dell'OO, ma soprattuto dal punto di vista della flessibilità: se aggiungi proprietà all'entity, non devi cambiare quel metodo
(grazie per la precisazione sul testo del messaggio di password_recovery, a dire il vero quando hai citato .txt mi è venuto in mente qualcosa che avaeva già scritto AZ ...  )

è che con tutte le novità che ci sono, certe volte faccio davvero fatica a ricordarmi tutto e per evitare di dire fesserie, preferisco controllare
18/03/2006 ore 9.23 | 1 risposta
novecento scrive:
Re: L'ObjectDataSource che non ti aspetti

a parte il forte legame con tutta la famiglia dei controlli data-bound, con i quali i vantaggi sono incredibili, l'unico aspetto che porta a sforzarmi verso ObjectDataSource è per usare il modello ad eventi preparato in questo oggetto da microsoft , quindi mi viene di trattare ObjectDataSource come classe Manager ad una classe business stratificando :

- pagina con ObjectDataSource;
- (businessAuthor) : oggetto che contiene la logica business di manipolazione di (Author) ;
- (Author) ;
- data provider ;

tuttavia ho dei dubbi su questo uso di ObjectDataSource al di fuori di oggetti strettamente data-bound, prima avrei fatto

protected void Insert_Click(object sender, EventArgs e)
{
Business.Author _Author = new Business.Author();
_Author.Name = NameTextBox.Text;
_Author.Insert();
}

adesso:

<asp:ObjectDataSource
ID="ObjectDataSourceUsersGroup"
runat="server"
TypeName="TP.UsersGroupODS"
InsertMethod="Insert"
OnInserting="ObjectDataSourceUsersGroup_Inserting"
OnInserted="ObjectDataSourceUsersGroup_Inserted">
</asp:ObjectDataSource>

protected void SaveButton_Click(object sender, EventArgs e)
{
ObjectDataSourceUsersGroup.Insert();
}

protected void ObjectDataSourceUsersGroup_Inserting(object source, ObjectDataSourceMethodEventArgs e)
{
IDictionary _Params = e.InputParameters;

Business.Author _Author = new Business.Author();
_Author.Name = "pippo";

_Params.Clear();
_Params.Add("_pAuthor", _Author);

}

però ho facilmente una serie di eventi per i messaggi di errore, esito ecc.

quanto sono reali le mie perplessità e quanto è sbagliato fare come sopra descritto e trattare InputParameters in questo modo?

come per ogni novità , ho un sacco di perplessità ..
buona serata a tutti
19/03/2006 ore 16.46 | 1 risposta
»»»» Daniele Bochicchio scrive:
Re: L'ObjectDataSource che non ti aspetti

novecento wrote:
a parte il forte legame con tutta la famiglia dei controlli data-bound, con i quali i vantaggi sono incredibili, l'unico aspetto che porta a sforzarmi verso ObjectDataSource è per usare il modello ad eventi preparato in questo oggetto da microsoft , quindi mi viene di trattare ObjectDataSource come classe Manager ad una classe business stratificando :

beh, è proprio (più o meno) quello che è il modello del sistema
quanto sono reali le mie perplessità e quanto è sbagliato fare come sopra descritto e trattare InputParameters in questo modo?

perdi il vantaggio di avere tutto fatto in automatico dall'ODS, che è il motivo per cui è nato. così in realtà torni ad un approccio meno "data bound", mentre con l'uso dei metodi definiti nell'ODS viene creata una nuova istanza del tuo oggetto di business e passato al tuo metodo (nel quale poi puoi fare .Insert()).
io lo preferisco come approccio, perchè è centralizzato e lo puoi usare anche per altri ambiti che non siano l'ODS.
come per ogni novità , ho un sacco di perplessità ..

è normale
20/03/2006 ore 11.47 | 1 risposta
novecento scrive:
20/03/2006 ore 15.01

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - ASP.NET, Media Center e tecnologia - Il blog di Daniele Bochicchio

TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, 10annidi, ADO.NET, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 3.5, ASP.NET 3.5 per tutti, ASP.NET AJAX, ASP.NET MVC, ASPItalia.com, Cache, CSS, Custom Control, Database, Databinding, Datagrid, Deployment, HttpHandler, HttpModule, HttpRuntime, IIS, ISAPI, Javascript, LINQ, LINQ to SQL, LogParser, Master Pages, Media Center, Membership API, Microsoft Expression, Mono, MySQL, Object Oriented Programming, Off Topic, Office, Pattern, Profile API, Provider Model, Report, Roles API, Security, Silverlight, Silverlight 2.0, SQL Server, User Control, Visual Studio, Web Service, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Mobile, Windows Presentation Foundation, Windows Server, Windows Vista, WinFS, XAML, XBox 360, XHTML, XML, XSLT
BLOG INFO
  • Post: 846
  • Commenti: 364
  • TrackBacks: 185
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA