agosto 2004 - Posts
Dopo i post di Marco
http://blogs.devleap.com/marco/archive/2004/08/28/1590.aspx
http://blogs.devleap.com/paolo/archive/2004/08/28/1591.aspx
http://blogs.devleap.com/marco/archive/2004/08/28/1594.aspx
ribadisco il mio parere sul marketing....a volte fuorviante ! Non che Longhorn non sia comunque un passo avanti, ma se 3 tre tecnologie core saranno indipendenti da Longhorn....viene ancora meno la frase di Steve Ballmer che ho citato nel precedente post.
Con Avalon su XP e 2003, Indigo su XP e 2003 e WinFS che sarà in beta quando uscirà Longhorn (e quindi non sarà nella prima versione di Longhorn), con WinFX che gira anche su XP e 2003.....Longhorn non è poi una totale rivoluzione, un investimento colossale, un salto come non c'è mai stato nella storia di Windows...
Sto partendo per le ferie...a presto
Dopo il mio, Michele mi ha prontamente segnalato altri due messaggi su GMail...riporto il suo blog http://www.datadream.it/PermaLink,guid,7151f19c-dee0-4bad-a87d-4a6e2a44e344.aspx
Stavo finalmente attivando l'accont GMail....e dopo aver compilato il form per la creazione dell'account ho ricevuto questo messaggio secondo me bellissimo:
Server Error
Gmail is temporarily unavailable. Cross your fingers and try again in a few minutes. We're sorry for the inconvenience.
A parte che è tutto in beta, quindi non c'è da stupirsi o innervosirsi è bellissima la forma del messaggio....incrocia le dita e riprova fra qualche minuto...forse su un sito ebusiness non potremmo usare questi termini, però credo che la tonnellata di utenti che si sta abituando ai malfunzionamenti dei computer avrebbe un approccio diverso rispetto alla tecnologia.Molto meno critico.
Leggo questo in un blog:
"It's a big release, and pulling together that many pieces in an integrated fashion, it's bigger than anything we've ever done," said CEO Steve Ballmer. "I always tell our people relative to our scale, it's a lot more like Windows 1.0, maybe 3.0 than anything we've done before. It's a whole new development platform, and getting the whole new development platform done is harder than just making incremental improvements in user and administration features. We're working hard at it."
Steva Ballmer afferma che è il più grande cambiamento che MS abbia mai fatto nella sua storia...molto di più dei salti generazionali delle varie versioni di Windows precedenti...ho sentito questa frase decine di volte per altrettanti prodotti e a latere si afferma anche che sarà garantita la compatibilità totale....
Lavoro su Longhorn (non in produzione si intende) da ottobre dello scorso anno e sicuramente ci sono tantissime cose nuove e soprattutto interessanti: il nuovo file system (ma i vecchi file funzionano sempre), Avalon con XAML e compagni per la definizione di interfacce utenti (uno spettacolo, una rivoluzione nel modo di sviluppare applicazioni Windows....ma ancora una volta sull'interfaccia utente), Indigo (evoluzione della messaggistica....cose che oggi si devono fare a mano in un BEL prodotto completo). Ci sono nuovi servizi, nuovi meccanismi di security...ma...per nostra fortuna (fortuna di noi sviluppatori intendo) il cuore dello sviluppo è sempre il .NET Framework, quindi la filosofia, le modalità di progettazione e la scrittura del codice resta in un ambiente che ormai conosciamo da 2 anni e mezzo (o da 4 anni se avete usato la build consegnata alla PDC di luglio 2000).
Io sono sempre affascinato dalle novità, credo come tutti noi, sono curioso per le nuove tecnologie, ed è assolutamente normale che i prodotti subiscano miglioramenti, cambi semplici di versione o cambi radicali di versione....non è quello che accade ai tutti i software che produciamo ???!?!?!?
Personalmente ritengo Longhorn un cambio generazionale e un'aggrezione di tanti servizi e funzionalità non disponibili oggi se non con prodotti di terze parti o autosviluppati, ma mi sembrerebbe importante, per Microsoft soprattutto, mettere bene in chiaro che .NET ci sarà sempre....personalmente (di nuovo) ritengo che a volte il marketing possa falsare la realtà delle cose: spesso si sente dire tutto compatibile quando sappiamo benissimo che non può essere così o che comunque conviene riscrivere per beneficiare di una serie di cose o abbandonare problemi esistenti, spesso si sente dire solo l'opposto, una rivoluzione, un cambio totale, quando in realtà non è proprio così.
Longhorn credo sia un lungo salto in avanti, ma tutte le conoscenze .NET (con aggiunto WSE 2.0) siano la base per svilupparci sopra applicazioni. Impareremo come funzionano i nuovi servizi, ma il modo di creare una classe, di derivarla, di usarla resta invariato. Avremo una enorme libreria con tante funzioni in più: ben vengano !
Scusate "lo sfogo" pre-ferie....ma a volte resto allibito sentendo certe affermazioni che incredibilmente si inculcano nella mente degli sviluppatori e sono poi difficili da "estirpare"...
Il supporto 3D per adesso è basilare e limitato a:
- Definizione di wireframe meshes
- Definizione di solid shaded meshes
- Ambient light
- Directional light
- Tutte le trasformazioni
La versione beta di Xamalon è abbastanza allineata con le specifiche XAML.
Per chi non lo sapesse Xamalon è un ambiente XAML che gira su Windows 98, 2000, XP comprensivo di Editor "visuale".
Il prodotto è disponibile su www.xamalon.com (siamo alle versione 0.9 Beta5)
Dato l'aggiornamento del motore dei blog, ci sono alcune modifiche agli url da usare per l'accesso.
La parte html è http://blogs.devleap.com/rob/ (di conseguenza per gli altri /paolo /marco /silvano)
Per il feed rss http://blogs.devleap.com/rob/Rss.aspx (di conseguenza per gli altri /paolo/Rss.aspx /marco/Rss.aspx /silvano/Rss.aspx)
Http://blogs.devleap.com resta l'indirizzo per tutti i blog di DevLeap.
L' RSS globale per tutti i blog nostri è http://blogs.devleap.com/MainFeed.aspx?GroupID=2
L'RSS globale per tutti i blog degli ospiti di DevLeap è http://blogs.devleap.com/MainFeed.aspx?GroupID=4
Personalization è stato rinominato in Profile, come avevamo già accennato alla DevCon di Maggio. Il nome più corretto è Profile visto che si tratta di modulo per la gestione dei dati di profilo dell'utente...volendo utilizzabile per fornire interfacce personalizzate all'utente e non viceversa.
La classe utilizzabile da codice era gia denominata Profile.
La sezione di configurazione è quindi stata modificata in:
<profile enabled="true" defaultProvider="AspNetAccessProvider" >
<providers>
<add name="AspNetSqlProvider"
type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
applicationName="/"
description="Stores and retrieves profile data from the local Microsoft SQL Server database" />
<add name="AspNetAccessProvider"
type="System.Web.Profile.AccessProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AccessFileName"
applicationName="/"
description="Stores and retrieves profile data from the local Microsoft Access database file" />
</providers>
<properties>
<!-- Add profile properties here. Example:
<add name="FriendlyName" type="string" />
<add name="Height" type="int" />
<add name="Weight" type="int" />
-->
</properties>
</profile>
Il namespace di riferimento per la parte Profile è System.Web.Profile
Nel global.asax l’evento intercettabile a fronte di login/registrazione di un utente anonimo è il seguente
void Profile_OnMigrateAnonymous(Object s, ProfileMigrateEventArgs e)
{
// Ad esempio migro la proprietà Nome dal profilo anonimo
// Posso decidere cosa portare
Profile.Nome = Profile.GetProfile(e.AnonymousId).Nome;
}
Nella versione Alpha era void Personalization_OnMigrateAnonymous(Object s, PersonalizationMigrateEventArgs e), mentre l’accesso al profilo anomino appena abbandonato è rimasto identico.
La proprietà requiresQuestionAndAnswer di Membership è impostata a "true" di default mentre prima era false, quindi non si possono creare utenti senza insirere anche il testo della domanda per il "Ricordami la password".
Poco male....ma il codice dell'alpha non va più a meno di non personalizzare il comportamento nel web.config aggiungendo il provider con le impostazioni custom.
Saranno ferie con portatile...ma giusto per controllare la posta e leggere un po' di documentazione...per il resto sole/mare/riposo...
Visto che Paolo e Marco hanno implementato la nuova versione della parte di sito relativa ai blog...ho pensato di categorizzare tutti i miei post in varie categorie per facilitare la lettura.
Per adesso ho creato ASP.NET 1.x, ASP.NET 2.0, Longhorn, Mobility e Varie.
Tutti i post di Agosto e quelli che creerò da ora in poi sono categorizzati.
Salutoni e buon blogging
I controlli di Login e i database a supporto non sono stati modificati, quindi il codice scritto con l'Alpha funziona anche con la Beta.
Ci sono due nuovi controlli:
1) ChangePassword
2) CreateUserWizard
Non hanno bisogno di spiegazioni e sono come sempre personalizzabili come contenuto, lingua e funzionalità
Non sono cambiati i metodi per la creazione di ruoli (tra l'altro il formato del DB è rimasto pressochè identico...cioè cose create per Membership e Role Manager nell'Alpha funzionano nella Beta1), l'associazioni di utenti a ruoli, la lettura dei ruoli e degli utenti ad essi legati.
Novità: Durante l'associazione di un utente a un ruolo viene eseguito il controllo di esistenza di entrambi...nell'Alpha non esistevano constraint !
Incredibile...anche la sezione roleManager non ha subito modifiche.
Esiste un Provider in più (oltre a Access, SQL e Windows) denominato AspNetAuthorizationStoreProvider che consente la gestione delle autorizzazioni di accesso tramite uno store esterno in formato XML.
Riporto per completezza la sezione del machine.config.comment.
<roleManager
enabled="false" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30"
cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false"
cookieProtection="All" defaultProvider="AspNetAccessProvider" >
<providers>
<add name="AspNetSqlProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
applicationName="/"
description="Stores and retrieves roles data from the local Microsoft SQL Server database" />
<add name="WindowsToken"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="Retrieves roles data from the Windows authenticated token for the request" />
<add name="AspNetAccessProvider"
type="System.Web.Security.AccessRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AccessFileName"
applicationName="/"
description="Stores and retrieves roles data from the local Microsoft Access database file" />
<add name="AspNetAuthorizationStoreProvider"
type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AuthorizationStore"
applicationName="MyApplication"
scopeName="MyScope"
description="Stores and retrieves roles data from the authorization store" />
</providers>
</roleManager>
Ecco la prima differenza rispetto a Membership.
Per implementare un proprio Membership Provider non deve più essere implementata l'interfaccia IMembershipProvider ma derivare la classe astratta MembershipProvider. L'interfaccia infatti è stata sostituita da una classe astratta.
MembershipProvider deriva a sua volta da ProviderBase, quindi nella propria classe occorre implementare anche i membri richiesti da ProviderBase.
Per avere l'elenco dei membri da implementare ecco un link all'help di .NET 2.0 Beta 1 attivabile anche da VS 2005: ms-help://MS.VSCC.v80/MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_aspnetcon/html/d8658b8e-c962-4f64-95e1-4acce35e4582.htm
More Posts
Next page »