Microsoft uvedl první veřejnou betaverzi nové generace providerů pro membership, role, profily a session. Na rozdíl od těch současných kromě SQL Serveru podporují i SQL Server Compact a Windows Azure. Neřeší sice všechny problémy, ale jsou docela zajímavé.

Stávající implementace (ve třídách SqlMembershipProvider, SqlRoleProvider atd.) je dost hrozná. Podporuje jenom Microsoft SQL Server a vyžaduje vytvoření dost divoké struktury tabulek, pohledů a uložených procedur, a to ve jménu maximální univerzálnosti celého řešení. Provider model sám je ovšem velice funkční, jenom to chce mít schopné providery (nejlépe samozřejmě ty moje ;-).

Nová generace providerů je založena na Entity Frameworku a je, jak již bylo řečeno, dosti univerzální. Na základě connection stringu umí fungovat proti "velkému" Microsoft SQL Serveru 2005 a vyššímu, "malému" SQL Compact a Windows Azure (předpokládám že proti Table Storage, ale zatím jsem do toho moc nešťoural).

Má nižší nároky na databázovou strukturu, vyžaduje jenom šest tabulek (žádné uložené procedury a pohledy), a struktura tabulek je skoro příčetná:

UniversalProviders

Bohužel i nadále zůstává plně zachována logika ukládání údajů více aplikací do jedné databáze, což činí propojení dat providera se zbytkem datové struktury poněkud komplikované. Rovněž je zachováno ukládání profilových vlastností serializovaně.

Podrobné informace najdete na blogu Scotta Hanselmana, knihovnu si můžete stáhnout pomocí NuGetu jako package jménem System.Web.Providers.