novembre 2007 - Posts
Come annunciato da Pietro Brambati nel suo blog è stato reso da poco disponibile un percorso formativo su LINQ parte dei cui contenuti sono stati prodotti da me e Marco. Segnalo come assolutamente interessante il webcast conclusivo con l'opportunità di rivolgere dubbi e domande a Luca Bolognese, Lead PM a Redmond del team di LINQ e C#.
L'aspetto interessante di questo nuovo percorso è il fatto che i moduli didattici sono già tutti disponibili e online, quindi potete divertirvi quando e dove preferite!
Con l'occasione ricordo a tutti di non pensare a LINQ come ad un ORM e di non focalizzare la propria attenzione solo su LINQ to SQL, non perché LINQ to SQL non meriti attenzione, ma solo perché LINQ non è solo LINQ to SQL, ma più in generale un nuovo modo di vedere le tecniche di programmazione, non più imperativo ma dichiarativo.
Feedback sul percorso formativo saranno assolutamente graditi. Potete scrivermi direttamente paolo AT devleap.it oppure scrivere nei forum di http://introducinglinq.com .
Domani andrà "in onda" un mio webcast sull'infrastruttura di sicurezza di Windows Vista e Windows Server 2008. Partendo dalla teoria della crittografia e passando per CryptoAPI arriveremo a CNG (Crypto API Next Generation) di Windows Vista e Windows Server 2008. Lascio qui l'applicazione demo scritta in .NET 3.5 che ho utilizzato nel webcast per mostrare operativamente il codice C# per utilizzare: 3DES, AES, DPAPI, RSA, DSA, XML Signature, XML Encryption, ECDSA.
Spero che la demo venga utile anche ad altri.
Fra 15gg circa ci sarà un'altra edizione del corso Intensive SharePoint Training for Developers, che organizziamo come sempre in collaborazione con GreenTeam. Le date esatte sono: 26, 27 e 28 novembre.
Fatevi sotto :-) ...
L'altro giorno durante un training che stavo tenendo in Microsoft a proposito di SharePoint 2007 ho approfondito il tema della Code Access Security in ambito ASP.NET.
Ho notato che vi era molto interesse per l'argomento, per cui segnalo un link di documentazione che in particolare evidenzia i permessi disponibili nei vari livelli di trust nativi di ASP.NET. SharePoint, sin dalla versione 2003, si basa su questi concetti definendo dei livelli di trust personalizzati. Con MOSS2007/WSS3 e il deployment tramite solution WSP è ora possibile automatizzare le politiche di deployment delle web part e dei controlli in generale, senza dover più modificare a mano i file .config, ma semplicemente dichiarando nel manifest di deployment i permessi personalizzati che si richiede di configurare. In pratica nel manifest.xml del file di solution possiamo usare una sintassi come la seguente:
<?xml version="1.0" encoding="utf-8" ?>
<Solution
SolutionId="DEB5DCFC-3AFA-4161-8EFF-8DDABE5C70DD"
xmlns="http://schemas.microsoft.com/sharepoint/" >
<FeatureManifests>
<FeatureManifest Location="WebPartWithCAS\Feature.xml" />
</FeatureManifests>
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet class="NamedPermissionSet" version="1"
Description="WebPartWithCAS PermissionSet">
<IPermission class="AspNetHostingPermission" version="1"
Level="Minimal"/>
<IPermission class="SecurityPermission" version="1"
Flags="Execution" />
<IPermission version="1" Unrestricted="True"
class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
</PermissionSet>
<Assemblies>
<Assembly Name="DevLeap.MOSS2007.WebPartWithCAS" Version="1.0.0.0" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100ed03dd005a4576e00550d75c2329f114b2fe2157e0e3262cb11f7f1faee5e2b10320c9d24c317a6836e6eda1a2e11fafb6ae7d26fa47e5f230ed943039ebe5b43652502467e5724403b7855ad8e730f350d400785da528bb3683c1c77a61b20498176248f2732b58612cb5de4f519ad574ae098d574001b90e5e8844a8dd7cd1" />
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
<Assemblies>
<Assembly Location="DevLeap.MOSS2007.WebPartWithCAS.dll"
DeploymentTarget="WebApplication" >
<SafeControls>
<SafeControl Assembly="DevLeap.MOSS2007.WebPartWithCAS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3ba0d48cf1794abd"
Namespace="DevLeap.MOSS2007.WebPartWithCAS"
TypeName="*" Safe="True" />
</SafeControls>
</Assembly>
</Assemblies>
</Solution>
Ecco in questo download un esempio di WebPart che si installa configurando i permessi corretti. La stessa WebPart, con le impostazioni di default di MOSS2007/WSS3 potrebbe funzionare solo se inserita nella GAC (diventando FullTrust, che quasi sempre è troppo!) oppure andando a configurare a mano un livello di Trust ... perdendo tempo e pazienza :-).
Ovviamente l'installazione della solution e l'attivazione della feature deve avvenire per mano di un utente autorizzato a farlo.
Come era prevedibile, approfittando di TechEd, sono state finalmente rese pubbliche le date di rilascio delle RTM di .NET 3.5 e Visual Studio 2008. Inoltre ADO.NET SyncService è già disponibile con una nuova CTP. Per maggiori dettagli su SyncServices potete leggere qui.
Trovo in particolare molto importante il seguente paragrafo:
<<Sync Services for ADO.NET is a part of the Microsoft Sync Framework (MSF). MSF is a comprehensive synchronization platform that enables developers to add synchronization capabilities to applications, services and devices. MSF solves the fundamental problem of how to synchronize any type of data in any store using any protocol over any topology. Fundamental to MSF is the ability to support offline and collaboration of data between any types of endpoints (e.g. device to desktop, device to server, etc.).
Sync Services for ADO.NET enables synchronization between ADO.NET enabled databases. Since Sync Services for ADO.NET is part of the MSF, any database that uses Sync Services for ADO.NET can then also exchange information with other data sources that are supported by MSF, such as web services, file systems or custom data stores.>> [Fonte: http://msdn2.microsoft.com/en-us/sync/bb887608.aspx]
Possiamo quindi sfruttare MSF per gestire soluzioni di sincronizzazione di qualsiasi tipo e non solo orientate a database e/o DataSet. Ad esempio in questo primo esempio si mostra come usare MSF per sincronizzare due file system.