Fabrizio Basilio, DecatecEnhancing SharePoint Experience with Client Side Technologieshttp://www.decatec.it
Fabrizio Basilio, Decatec2AgendaIntroduzione alle RIA (Rich Internet Application)Sharepoint 2007 e jQuerySharepoint 2007 e SilverlightSharepoint 2010: Client ObjectModel
Fabrizio Basilio, Decatec3Cosa sono le RIA?Applicazioni web con caratteristiche e le funzionalità delle applicazioni desktopInterattive, multimediali e velociAggiornamento e deploy immediatoAccesso da qualsiasi pc in reteQualità di navigazione:RiccaFluidaImmediataPersonalizzata
Fabrizio Basilio, Decatec4Vantaggi delle RIAConsistente incremento del businessDiffusione AssolutaSemplicità di implementazioneVantaggi di gestione
Fabrizio Basilio, Decatec5RIA e SharepointjQuery (http://www.jquery.com)Silverlight  (http://www.silverlight.net)
Fabrizio Basilio, Decatec6Cosa è jQuery?Framework basato su JavascriptRiassume in poche righe script molto complessiModifica radicalmente le modalità di sviluppo client-siteCross – browserChainability(concatenabilità) $('div#content').addClass('current').html('blablabla').width(100);
Fabrizio Basilio, Decatec7Integrare jQuery: ModalitàCopiare nella cartella Layouts Libreria JqueryRendere disponibile la libreria nelle pagine SharePointAggiungendo ContentEditor Web Part
Aggiungendo reference nella MasterPage del Sito SharePoint
AdditionalPageHead Delegate ControlFabrizio Basilio, Decatec8How to work jQuery
Fabrizio Basilio, Decatec9jQuery: SelettoriSelettori di base o selettori semplici$("a"); $("#blocco"); $("a.external"); Selettori gerarchici (padre->figlio)$("#blocco a"); $("#blocco"); $("a.external"); Selettori per attributo$("a[target='_blank']");
Fabrizio Basilio, Decatec10jQuery: CaratteristicheDOM TraversingManipolazioneCSSEventiEffettiAJAX
Fabrizio Basilio, Decatec11jQuery: EsempiRow Highlight al mouse over o staticoRicerca in un calendarioRunTimeFilter Data List Web Part
Fabrizio Basilio, Decatec12jQuery: ConclusioniRapidità di esecuzioneCarico di lavoro prevalentemente del clientAccesso in get / set a tutti gli elementi di una paginaSfuttare un’unica libreria per l’intera piattaformaEstendibilitàSupporto di una grossa communityLeggero (pesa solo 16 kb)
Fabrizio Basilio, Decatec13jQuery: ConclusioniRapidità di esecuzioneCarico di lavoro prevalentemente del clientAccesso in get / set a tutti gli elementi di una paginaSfuttare un’unica libreria per l’intera piattaformaEstendibilitàSupporto di una grossa communityLeggero (pesa solo 16 kb)
Fabrizio Basilio, Decatec14Silverlight: IntroduzioneInterazione complessa e dinamica con i dati nelle Dashboard (grafici, relazioni, ...)Visualizzare elementi multimediali in SharePointControlli di navigazioneOff-load di lavoro per i client
Fabrizio Basilio, Decatec15Silverlight: Introduzione
Fabrizio Basilio, Decatec16Perchè Silverlight?Dare un nuovo look rispetto al classico SharepointRappresentazione dei dati in formato graficoFacilità d‘usoSupporto Business IntelligenceColpo d‘occhio
Fabrizio Basilio, Decatec17Silverlight e SharepointBrowser Backend SystemSilverlightXAML + C#
XAML + VB.NETSharePointListe
Documenti
Contatti
ImmaginiAPIs
Fabrizio Basilio, Decatec18Silverlight e Sharepoint: Integrazione          Object ModelSharePoint Object ModelSilverlight + WCF					Web Services ModelSharePoint (APIs)SilverlightMixed ModeSilverlight + WCFSharePoint Web Service + Object Model
Fabrizio Basilio, Decatec19Silverlight e Sharepoint: Integrazione
Fabrizio Basilio, Decatec20Silverlight: Hello World!Silverlight 2.0 project in Visual Studio 2008Create your user experience using XAML:IntelliSense®Silverlight Controls in ToolboxPreview in DesignerMicrosoft Expression Blend for complex designCode-behind class:Event-handlerBusiness logicAsynchronous communication with server data
Fabrizio Basilio, Decatec21Silverlight: Hello World!XAMLCODE BEHIND<TextBlock x:Name="HelloWorldTextBlock" Canvas.Left="50" Canvas.Top="45" FontFamily="Trebuchet MS" FontWeight="Bold" FontSize="25" Text="Hello World" Foreground="#FF333333"  MouseLeftButtonDown="HelloWorldTextBlock_MouseLeftButtonDown" />private void HelloWorldTextBlock_MouseLeftButtonDown    (object sender, MouseButtonEventArgs e){HelloWorldTextBlock.Text = "I am clicked!";}
Fabrizio Basilio, Decatec22Silverlight: EsempioSilverlight Browser
Fabrizio Basilio, Decatec23Sharepoint 2010 vs Sharepoint 2007
Fabrizio Basilio, Decatec24Sharepoint 2010 vs Sharepoint 2007
Fabrizio Basilio, Decatec25Sharepoint 2010 vs Sharepoint 2007
Fabrizio Basilio, Decatec26Sharepoint 2010: Client Object ModelTree new client APIs.NET Managed Applications (using the .NET CLR) Silverlight Applications ECMAScript (JavaScript, JScript)
Fabrizio Basilio, Decatec27Sharepoint 2010: Client Object ModelRequisiti.NET 3.5 FrameworkMicrosoft.SharePoint.Client.dllMicrosoft.SharePoint.Client.Runtime.dll  Assemblies Location%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI
Fabrizio Basilio, Decatec28Client Object Model: Namespace
Fabrizio Basilio, Decatec29Client Object Model: How to work?
Fabrizio Basilio, Decatec30Sharepoint 2010: Client Object ModelRequisiti.NET 3.5 FrameworkMicrosoft.SharePoint.Client.dllMicrosoft.SharePoint.Client.Runtime.dll  Assemblies Location%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI
Fabrizio Basilio, Decatec31Client Object Model:First Codestatic void Main()    {       ClientContextclientContext =            new ClientContext("http://intranet.contoso.com");        Web site = clientContext.Web;        clientContext.Load(site);        clientContext.ExecuteQuery();        Console.WriteLine("Title: {0}", site.Title);    }
Fabrizio Basilio, Decatec32Client Object Model: CaratteristicheAccesso a tutti i componenti SharepointObject IdentityTrim Result Sets (Direttiva Include)Usare CAMLLINQ per filtrare (Query Innestate)AsynchronousProcessing

Sharepoint 2010 JQuery

Editor's Notes

  • #4 Punto 1:Punto 2: Infatti la parte dell&apos;applicazione che elabora i dati è trasferita a livello client e fornisce una pronta risposta all&apos;interfaccia utente, mentre la gran parte dei dati e dell&apos;applicazione rimane sul server remoto, con notevole alleggerimento per il computer utente. Le RIA si fondano perciò su un&apos;architettura di tipo distribuito. In un certo senso le RIA rappresentano una generazione di applicazioni che permette un&apos;interazione totalmente rinnovata, fondata sugli aspetti migliori delle caratteristiche funzionali e progettuali che finora erano prerogativa alternata del web o delle applicazioni desktop
  • #5 Una gratificante Esperienza di fruizione si traduce rapidamente in un consistente incremento del vostro Business, applicabile a pressoché qualunque aspetto della comunicazione via web. Diffusione assolutaPer godere di un’applicazione RIA, realizzata con Adobe® Flash, è sufficiente possedere un browser dotato del plugin gratuito Adobe® Flash Player, presente nei 98% dei navigatori Internet, compresi numerosi palmari, telefoni cellulari ed addirittura alcuni tipi di console. Semplicità d’implementazioneLe RIA possono essere agevolmente inserite in qualunque contesto web integrandosi con il vostro sito aziendale preesistente senza doverne rivedere interamente l’architettura. Vantaggi di gestioneOltre ad essere applicabili pressoché a qualunque ambiente operativo e substrato informativo, alcune RIA permettono di integrare nel vostro sito web funzionalità in grado di semplificare la gestione delle attività connesse con la vostra azienda (un esempio su tutti può essere offerto dalla RIA realizzata per Swissflex, attraverso la quale possono essere gestiti i dettagli d’ordine dei prodotti personalizzati).
  • #7 jQuery è un framework per il web, strutturato in javascript, che si prepone come obiettivo quello di astrarre ad un livello più alto la programmazione lato client del comportamento di ogni singola pagina HTML.Pubblicato in stato molto primordiale da John Resig per la prima volta il 22 agosto2005, ha in realtà raggiunto la versione 1 (stabile) soltanto il 26 agosto dell&apos;anno successivo.È possibile, con poche righe di codice, effettuare operazioni semplici o complesse, come ottenere l&apos;altezza di un elemento, o farlo scomparire con effetto dissolvenza.Anche la gestione degli eventi è completamente standardizzata e gestita automaticamente, assieme alla loro propagazione; stessa cosa per quanto riguarda l&apos;utilizzo di AJAX, in quanto sono presenti alcune funzioni molto utili e veloci che si occupano di istanziare i giusti oggetti ed effettuare la connessione / invio di dati.Il framework fornisce metodi e funzioni per gestire al meglio aspetti grafici e strutturali come posizione di elementi, effetto di click su immagini, manipolazione del DocumentObjectModel e quant&apos;altro ancora, mantenendo la compatibilità tra browser diversi e standardizzando gli oggetti messi a disposizione dall&apos;interprete javascript del browser.
  • #10 Selettori di basePer prima cosa potete utilizzare selettori semplici (tutte le combinazioni di tag, classi e id):$(&quot;a&quot;); //tutti i link nel documento$(&quot;#blocco&quot;); //seleziona un singolo elemento con id &quot;blocco&quot;$(&quot;a.external&quot;); //solo i link con classe &quot;external&quot; Selettori gerarchiciUn&apos;altra possibilità è quella di utilizzare i selettori gerarchici per ricercare gli elementi all&apos;interno di altri elementi piuttosto che all&apos;interno di tutto il documento. Il selettore gerarchico più conosciuto è senza dubbio quello padre &gt; figlio:$(&quot;#blocco a&quot;); //i link all&apos;interno dell&apos;elemento con id &quot;blocco&quot; Tuttavia jQuery supporta altri selettori che possono risultare spesso molto utili come padre &gt; figlio, che permette di selezionare solo gli elementi che sono direttamante contenuti nell&apos;elemento padre:$(&quot;ul &gt; li&quot;); //solo gli elementi lista diretti discendenti del tagulEcco un esempio pratico per capire la differenza con il selettore precedenteAltri due selettori interessanti sono precedente + seguente, in cui vengono selezionati tutti gli elementi preceduti direttamente da uno specifico elemento:$(&quot;label + input&quot;); //tutti i tag input preceduti da un taglabeloppure precedente ~ adiacente, che seleziona tutti gli elementi direttamente adiacenti ad un elemento (esempio):$(&quot;#prev ~ div&quot;); n metodo di selezione degli elementi molto utile è quello che permette di indicare regole specifiche per gli attributi degli elementi. Come in precedenza, la sintassi non si discosta da quella dei CSS:$(&quot;a[target=&apos;_blank&apos;]&quot;); //tutti i link che si aprono in nuove finestr
  • #11 DOM Traversing[modifica]Per risalire a elementi padre, figli, per i nodi foglia o per elementi successivi, il framework propone numerosi metodi e funzioni per attraversare e scorrere il DOM del documento.Manipolazione [modifica]La manipolazione del DOM è semplificata da numerosi metodi:Per aggiungere e rimuovere elementi alla pagina, o in una posizione specificaPer sostituire elementi, o per circondarli con del nuovo contenutoPer eliminare tutti gli elementi contenuti in un certo nodo, o per copiarliCSS [modifica]Per controllare lo stile degli elementi, in maniera semplificata e standardizzata. Sono forniti i metodi:Per cambiare, rimuovere o aggiungere proprietà grafiche di tutti gli elementi selezionatiPer ottenere e sostituire velocemente proprietà solitamente difficili da manipolare Lo scroll di pagina o di un elementoLe dimensioni (height() e width())Le dimensioni interne (escludendo quindi il margine)L&apos;offset rispetto ai bordiEventi [modifica]Il framework riconosce gli oggetti di tipo event e provvede a modificare le loro proprietà rendendoli uniformi, semplificando la loro gestione, la loro propagazione, e fornendo un utile modalità per impedire al browser di continuare l&apos;esecuzione (ad esempio sulla onclick di un link). L&apos;assegnazione di eventi quali click, load, mouseover è gestita in maniera efficace e non invadente.Effetti [modifica]Gli effetti messi a disposizione dal framework, servono a manipolare la visibilità degli elementi selezionati. È possibile mostrarli o nasconderli con vari effetti, tra i quali:Effetto fading, la dissolvenza in entrata o uscitaEffetto sliding, l&apos;effetto scivolataNascondimento o visualizzazione piatta, istantaneaÈ possibile definire facilmente effetti personalizzati specificando la proprietà css da manipolare (può essere l&apos;altezza, il bordo, o quant&apos;altro), come è pure possibile specificare la durata dell&apos;effetto e una funzione di callback da eseguire dopo l&apos;animazione.AJAX [modifica]La gestione delle chiamate asincrone è davvero semplificata, e sono fornite le funzioni:Per caricare contenuti dinamicamente Funzione di caricamento piattoFunzione di caricamento di codice HTML con inserimento automaticoPer eseguire richieste asincrone Con metodo GETCon metodo POSTPer l&apos;interazione con javascript Funzione per caricare un oggetto JSONFunzione per caricare un file javascript remoto ed eseguirlo automaticamenteAnche gli eventi AJAX sono comodamente gestiti, per il completamento, gli errori e l&apos;invio.
  • #29 Somiglianza dei nomi oggetto