Ho installato da poco i Windows Live Tools for Microsoft Visual Studio (November 2008 CTP). Le novità introdotte da questa versione sono le seguenti:
- All the controls are now compatible with trust policy of Windows Azure
- New templates - Windows Live Web Application and Windows Live Web Role. Windows Live Web Role works for creating web sites web role in a Windows Azure Cloud Project.
- SilverlightStreamingMediaPlayer Control upgraded to Silverlight 2.0 Tools.
L'installazione integra tre nuovi template di progetto per Visual Studio:
- ASP.NET Windows Live Web Site
- Windows Live Web Application
- Windows Live Web Role (template for Windows Azure Cloud Projects)
Provando a creare un progetto ASP.NET Windows Live Web Site, automaticamente vengono aggiunti al progetto i riferimenti alle library
- Microsoft.Live.ServerControls.dll (Controlli Live e Virtual Earth)
- System.Web.Silverlight.dll (Controlli Silverlight)
Per curiosità mi sono subito messo a studiare le potenzialità dei nuovi controlli Windows Live. Ecco una loro breve presentazione:
- IDLoginStatus : permette di integrare il login di Windows Live nella nostra applicazione web. Per un corretto utilizzo è necessaria una procedura di registrazione (Getting Your Application ID for Web Authentication) su Azure Services Developer Portal in modo da ottenere una coppia [ApplicationID,SecretKey] da impostare nella sezione <appSettings> del web.config (di default troviamo già due apposite keys: wll_appid e wll_secret). Tali valori vanno obbligatoriamente specificati rispettivamente nelle proprietà ApplicationIDConfigKey e ApplicationSecretConfigKey del controllo. Ad esempio:
<live:IDLoginStatus ID="IDLoginStatus1" runat="server" ApplicationIDConfigKey="wll_appid"ApplicationSecretConfigKey="wll_secret"/>
- IDLoginView : estende le funzionalità del controllo LoginView di ASP.NET e fornisce dei template aggiuntivi per gestire sia la singola autenticazione Windows Live (LoggedInIDTemplate) che entrambe le autenticazioni Windows Live / ASP.NET (LoggedInAllTemplate). I metodi di questo controllo ci permette inoltre di associare un MembershipUser della nostra Web application ad un Windows Live ID in modo da realizzare un meccanismo vero e proprio di single sign-on. Addirittura impostando a true la proprietà AutomaticallyAssociateAuthentication è possibile effettuare tale associazione automaticamente.
- MessengerChat : abilita l'accesso WLM in una nostra pagina web. Anche in questo caso l'aspetto interessante è la possibilità di associare una Messenger Chat ID (CID) ad un MembershipUser di ASP.NET (se autenticato). Qua sotto ho riportato un esempio a riguardo.
- Contacts : permette l'integrazione delle funzionalità Windows Live Contacts tramite un set di API client-side / server-side. Praticamente consiste nella versione ASP.NET del corrispondente controllo Javascript http://dev.live.com/contacts.
- SilverlightStreamingMediaPlayer: estende il controllo Silverlight Media Player permettendo la riproduzione di video anche da un account Silverlight Streaming. In fase di design si possono specificare le credenziali di accesso e scegliere i video che si vogliono visualizzare.
- Map: versione ASP.NET del corrispondente controllo Javascript http://dev.live.com/virtualearth/sdk/.
Vediamo ora un semplice esempio di utilizzo dei controlli Contacts e MessengerChat:
Il controllo MessengerChat offre diverse possibilità di personalizzazione, soprattutto per quanto riguarda il layout. Anzitutto, tramite la proprietà View possiamo impostare 3 diverse possibilità di visualizzazione (Window (default), Icon, Button).
La proprietà PrivacyStatementURL invece va valorizzata con l'URL della pagina Web contenente l'informativa sulla privacy da visualizzare all'utente al momento dell'accesso a WLM. Questa proprietà è OBBLIGATORIA.
<live:MessengerChat ID="MessengerChat1" runat="server" PrivacyStatementURL="~/privacyPolicy.htm" Height="400px"
Market="it-IT" SignUpLinkText="WLM SignUp!" View="Window"
onmessengerchatsignup="OnMessengerChatSignUp">
<ColorTheme Name="Default"></ColorTheme>
</live:MessengerChat>
Il controllo espone un evento OnMessengerChatSignup che possiamo sfruttare per l'associazione della Chat (CID) all'utente ASP.NET correntemente "loggato":
protected void OnMessengerChatSignup(object sender, MessengerChatSignupEventArgs e)
{
if (Page.User.Identity.IsAuthenticated) MessengerChat1.SetUserAssociation(Page.User.Identity.Name, e.CID);
}
Per quanto riguarda il controllo Contacts, allo stesso modo possiamo scegliere diverse View: List, Tile, TileList(default). Per la modalità List in particolare possiamo valorizzare la proprietà DataDesired specificando una lista di informazioni separate da virgola (es. name, email, phone, firstname...) che vogliamo rendere visibili.
<live:Contacts ID="Contacts1" runat="server" DataDesired="name,email..."
Height="400px" View="Tile" Width="250px" Market="it-IT" Message="ciao"
PrivacyStatementURL="~/privacyPolicy.htm" />
Infine, l'enanchement questo controllo permette ora l'aggiunta e la rimozione di Live contacts server-side :
using Microsoft.Live.ServerControls;
List<Contact> myContacts = new List<Contact>();
Contact myContact = new Contact();
myContact.EmailPersonal = abc@xyz.com;
myContact.FirstName = "Dario";
myContact.LastName = "Santarelli";
myContacts.Add(myContact);
ContactsControl.CreateContacts(myContacts);
ContactsControl.CommitContacts();
N.B.: Il metodo CommitContacts() applica effettivamente ciascun cambiamento apportato, scatenando l'aggiornamento del contact store dell'utente.
Riferimenti utili: