13 messaggi dal 24 marzo 2006
Ciao a tutti,
sto progettando una nuova applicazione che sarà organizzata secono il three layered application pattern con relativi strati Data Access, Business e Presentation.

Per il presentation layer utilizzerò ASP.NET e vorrei poter utilizzare la gestione di membership e roles offerte dal Framework con un'autenticazione di tipo form. Sarebbe ottimo poter utilizzare SqlMembershipProvider il SqlRoleManagerProvider.

A questo punto però ho dei problemi architetturali perchè le informazioni sull'utente dell'applicazione fanno parte anche degli oggetti "business" veri e propri da gestire e da mettere in relazione con altre informazioni.

Se gestissi gli utenti solo con i provider standard queste informazioni sarebbero presenti solo sul presentation layer e inutilizzabili dai livelli sottostanti.

Le possibili soluzioni che ho individuato sono:

- implementare dei provider custom che poggino sul business e sul data access layer

- implementare l'oggetto business "utente" (e relativi metodi di accesso alla base dati nel DAL) duplicandolo rispetto all'utenza di ASP.NET vera e propria, facendo cura di gestire in fase di creazione e modifica degli utenti la relazione tra i due oggetti separati

La prima soluzione probabilmente è architetturalmente più pulita ma a mio parere costosa.
La seconda mi permetterebbe di ri-utilizzare le librerie già disponibili con il costo di una complessità e criticità maggiore nelle fasi di creazione e modifica delle utenze.

Apprezzerei qualche opinione al proposito.

Grazie
Roberto
438 messaggi dal 04 agosto 2002
Contributi
io sto seguendo la seconda strada in un progetto non piccolo, non banale, ma di tipo diciamo così "hobbistico" ...

Per progetti "seri" e di una certa complessità sarei per seguire la prima strada. Senza dubbi.

ciao,
v

A questo punto però ho dei problemi architetturali perchè le informazioni sull'utente dell'applicazione fanno parte anche degli oggetti "business" veri e propri da gestire e da mettere in relazione con altre informazioni.

Se gestissi gli utenti solo con i provider standard queste informazioni sarebbero presenti solo sul presentation layer e inutilizzabili dai livelli sottostanti.



assolutamente no, attraverso le Role e Memebership API puoi utilizzarle a qualsiasi liverllo

se successivamente hai necessità particolari pui estendere i provider esistenti ma le API rimaranno immutate

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
13 messaggi dal 24 marzo 2006
Ciao Marco,
vediamo se ho capito cosa intendi.
Potrei utilizzare i provider a livello di DAL come interfaccia verso i dati anzichè direttamente ADO.NET mantenendo entità ed oggetti business per gli utenti da utilizzare nei tre livelli (a parte la gestione dell'autenticazione e gestione dei ruoli in ASP.NET che utilizzerebbe direttamente i provider)?
Mi rimane il dubbio però che a livello di base dati e di DAL questa parte non sarebbe omogenea rispetto agli altri oggetti gestiti.

Comunque è un'idea, che era proprio quello che stavo cercando.

Farò qualche prova e quando avrò deciso cosa fare aggiornerò il thread.

Grazie Mille
Roberto
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Appoggio quello che ha detto Marco, in una applicazione un pochino più 'progettata' abbiamo incapsulato Membership e Profile nello stratto di business, (Role invece non era all'altezza delle aspettative del cliente  ), ho scritto due appunti su come ho fatto qui: http://blogs.aspitalia.com/novecento/post1934/Usato-Membership-API--Co.aspx, magari una lettura ti può aiutare a scegliere.

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
438 messaggi dal 04 agosto 2002
Contributi
ragazzi, ma non penso che Roberto intendesse rinunciare a Role e Memebership API. Ho inteso che volesse ridefinire il comportamento dei due rispettivi provider affinchè si integrassero a dovere con lo schema del suo db. Si sarà chiesto come tutti, come me, e moh che ho queste belle tabelle aspnet_xxx come c***o le lego alle mie tabelle? Faccio una relazione uno a uno sul campo email??? Io son stato più fortunato, perchè quando mi si presentò il problema lavoravo su un db mysql, non c'erano ancora in giro provider mysql per quelle API già fatti e me li ero scritti partendo dai sorgenti MS per Access(!).
Ora, visto che ci sono i sorgenti da cui partire e visto che, se l'ho fatto io può farlo chiunque  ...

ciao ciao,
vladi

p.s. -
ho scritto due appunti su come ho fatto qui: http://blogs.aspitalia.com/novecento/post1934/Usato-Membership-API--Co.aspx ...
è oro, vogliamo l'articolo! vogliamo l'articolo!

p.s.2 - mi perdonerà Roberto se ho attribuito a lui, anche se solo in forma ipotetica, pensieri e scurrilità che sono solo e soltanto miei
Modificato da vladimiro il 10 settembre 2008 18.21 -
13 messaggi dal 24 marzo 2006
Ciao a tutti,
sono state utilissime tutte le risposte e l'articolo scritto da Alessio
 .
Effettivamente i dubbi esposti da Vladimiro sull'integrazione delle tabelle aspnet con quelle del db originale sono anche i miei, specialmente per quanto riguarda le relazioni tra gli oggetti che dovrò implementare. Queste differenze tra l'altro si propagherebbero sugli oggetti a livello DAL e business.

Ho scaricato e dato un'occhiata ai sorgenti dei provider Sql di Microsoft, e riletto l'articolo di Alessio e penso che utilizzerò entrambi come spunto per costruire dei provider custom che non utilizzino direttamente il DB ma utilizzino lo strato business e sottostante DAL, di modo da mantenere omogenea la struttura dell'applicazione. Magari implementando a livello business le regole per l'autenticazione.

Così ad occhio mi sembra che con 3-4 giorni di lavoro si possano realizzare i provider.
Se pensate che invece mi stia infilando in un ginepraio non esitate a farmelo sapere.

Grazie Mille
438 messaggi dal 04 agosto 2002
Contributi
Quella che hai esposto era quella che intendevo con strada 1. Io farei esattamente così; i 3/4 giorni mi sembrano una stima ottima abbondante.

ciao,
vladi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.