<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>PeppeDotNet.it</title><link>http://www.peppedotnet.it/</link><description>Marchi Giuseppe personal site</description><dc:language>it-it</dc:language><pubDate>Fri, 22 Oct 2004 00:00:00 GMT</pubDate><lastBuildDate>Thu, 23 May 2013 18:01:25 GMT</lastBuildDate><webMaster>info@peppedotnet.it (Giuseppe Marchi)</webMaster><managingEditor>info@peppedotnet.it (Giuseppe Marchi)</managingEditor><copyright>PeppeDotNet 2004/06</copyright><generator>dotRss 0.9.3.28434 Beta2 - http://www.peppedotnet.it/Projects/dotRSS.aspx</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><category>.NET and Sharepoint programming</category><ttl>60</ttl><image><title>PeppeDotNet</title><url>http://www.peppedotnet.it/img/logo.gif</url><link>http://www.peppedotnet.it/Blog</link><width>144</width><height>30</height><description>PeppeDotNet.it</description></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PeppeDotNet" /><feedburner:info uri="peppedotnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>Quando uno sviluppatore SharePoint incontra JavaScript</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/EBpR0MbaMYg/WhenSharePointDevsMeetJavaScript.aspx</link><pubDate>Tue, 21 May 2013 12:12:10 GMT</pubDate><description>E' da un po' che mi diverto con JavaScript. Non gli avevo mai dato peso, anzi, a dir la verità ho pensato spesso che fosse un linguaggio da pazzi schizzati con la totale assenza di regole (ed io, che sono nato negli stessi anni di C#, alle regole ci sono affezionato).
&lt;br /&gt;Perché JavaScript? Perché ormai le applicazioni web non possono esistere senza. Senza l'appeal che è in grado di dare anche solo una piccola animazione o la totale assenza di postback. 
&lt;br /&gt;Quando infatti ci si approccia ad una nuova applicazione web di questi tempi, è impossibile ormai non prescindere da:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;uno sviluppo di back-end: a cui ormai siamo abituati, anche su SharePoint con il suo modello a oggetti,&lt;/li&gt;&lt;li&gt;uno sviluppo di front-end: ed è qui la novità.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Dicesi sviluppo di front-end tutta l'architettura client-side della nostra applicazione web (JavaScript) assieme all'implementazione della struttura della pagina (HTML5) e del suo aspetto grafico (CSS3).
&lt;br /&gt;Ecco quindi che uno sviluppatore SharePoint con me, abituato ad utilizzare il postback, i web control e, per il suo periodo di massimo splendore Silverlight, si ritrova ad imparare tutto un nuovo mondo di tecnologie a cui fino ad ora era rimasto allo scuro.
&lt;br /&gt;Oltretutto, con l'arrivo di SharePoint 2013, JavaScript è diventata una vera e propria &lt;b&gt;CORE SKILL&lt;/b&gt; per uno sviluppatore SharePoint, mentre invece in tutti questi anni siamo diventati dei super eroi del server object model.
&lt;br /&gt;Quello che mi serviva era capire bene erano le basi di questo linguaggio e i principali pattern di sviluppo che mi avrebbero permesso di scrivere applicazioni di front-end robuste, in linea con gli standard del momento e con un'alta user experience.
&lt;br /&gt;Okkei, la prima cosa che ho imparato quindi è che JavaScript è un linguaggio dinamico, che non ha un compilatore (ma usa il browser per beccare solo gli errori a run-time), con solamente 7 tipi primitivi, case sensitive, basato sul concetto di funzioni, che (e qui è stata una grande sorpresa) è orientato agli oggetti e che, soprattutto, &lt;b&gt;JAVASCRIPT NON E’ C#&lt;/b&gt;.
&lt;br /&gt;Non è C# perché permette delle cose scellerate tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function foo() {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;for&lt;/span&gt;(var i = 0; i &lt; 10; i++) { 
&lt;br /&gt;		&lt;span style="color: #008200"&gt;//do anything you want
&lt;/span&gt;
	}
&lt;br /&gt;	alert(i); &lt;span style="color: #008200"&gt;//will display 10
&lt;/span&gt;
}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;...tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function foo() {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;for&lt;/span&gt;(var i = 0; i &lt; arguments.length; i++) { 
&lt;br /&gt;		console.log(arguments[i]);
&lt;br /&gt;	}
&lt;br /&gt;}
&lt;br /&gt;foo('here', 'you','can','pass','what','ever','you','want');&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;...e tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function checkEquals(a, b) {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;return&lt;/span&gt; a == b;
&lt;br /&gt;}
&lt;br /&gt;function multiplication(a, b) {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;return&lt;/span&gt; a * b;
&lt;br /&gt;}
&lt;br /&gt;var result = checkEquals('', 0); &lt;span style="color: #008200"&gt;//returns true
&lt;/span&gt;
var result2 = checkEquals('0', 0); &lt;span style="color: #008200"&gt;//returns true
&lt;/span&gt;
var result3 = multiplication('4', 4); &lt;span style="color: #008200"&gt;//returns 16
&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Cose che per noi sviluppatori C# sono da pazzi.	
&lt;br /&gt;Al che ho cercato di prendermi un po' di capisaldi ed è venuto fuori che:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;le variabili si istanziano utilizzando la parola chiave "var" e che, in base al valore attribuito, cambiano il loro tipo (anche a run-time)&lt;/li&gt;&lt;li&gt;l'esecuzione del codice va dall'alto al basso della pagina&lt;/li&gt;&lt;li&gt;esistono gli oggetti e che possono essere creati in differenti maniere:&lt;ul&gt;&lt;li&gt;sfruttando la classe Object&lt;/li&gt;&lt;li&gt;sfruttando la sintassi JSON (detta anche "literal notation")&lt;/li&gt;&lt;li&gt;sfruttando le funzioni&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;esistono anche le proprietà e i metodi&lt;/li&gt;&lt;li&gt;esistono i namespace e il namespace di root "window"&lt;/li&gt;&lt;li&gt;esistono i concetti di scoping delle variabili ed ereditarietà (che sono molto diversi da quelli di C#)&lt;/li&gt;&lt;li&gt;l'ugualianza (o la disugualianza) si usa tramite l'uso di 3 uguali, perchè con 2 uguali viene fatto un cast e poi il controllo del valore&lt;/li&gt;&lt;li&gt;una funzione JavaScript in realtà è un oggetto&lt;/li&gt;&lt;li&gt;una funzione JavaScript può essere assegnata ad una variabile, ad un oggetto, ad una proprietà o può essere passata come parametro&lt;/li&gt;&lt;li&gt;una funzione JavaScript ha la parola chiave "this" (che ha però un valore diverso da quello che ha in C#)&lt;/li&gt;&lt;li&gt;esiste l'oggetto "prototype", che viene creato in automatico ogni volta che si crea una nuova istanza di un oggetto e che è veramente utile per risparmiare memoria&lt;/li&gt;&lt;li&gt;esiste il concetto di closure, che da una "durata di vita" alle variabili diversa da quella delle variabili C#&lt;/li&gt;&lt;li&gt;se inserisco la stringa 'use strict' come prima riga del mio script mi assicuro di scrivere codice pulito ed evitare sfondoni come dimenticarmi l'utilizzo della parola chiave "var" per la definizione di una variabile (così è il browser che me lo indica a run-time)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Queste nozioni mi sono diventate veramente utili quando poi mi sono messo a studiare un po’ di pattern. Ho letto più volte con piacere questo:
&lt;br /&gt;&lt;a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/" title="JavaScript Pattern Book" target="_blank"&gt;http://addyosmani.com/resources/essentialjsdesignpatterns/book/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' veramente una bella risorsa, ve la consiglio.
&lt;br /&gt;Da lì ho capito che potevo scrivere del codice JavaScript che assomigliasse un po' di più al codice C# cui sono stato abituato fino a poco tempo fa e la cosa mi piaceva molto.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #008200"&gt;//namespaces
&lt;/span&gt;
window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.SP13 = window.D4S.SP13 || {};
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//constructor pattern
&lt;/span&gt;
D4S.SP13.Contact = function(firstName, lastName, mail, id) {
&lt;br /&gt;	var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;	self.FirstName = firstName;
&lt;br /&gt;	self.Title = lastName;
&lt;br /&gt;	self.Id = id;
&lt;br /&gt;	self.EMail = mail;
&lt;br /&gt;	self.__metadata = { 'type': 'SP.Data.RubricaListItem' };
&lt;br /&gt;	self.ShowFullName = function() {
&lt;br /&gt;		alert(self.FirstName + ' ' + self.Title);
&lt;br /&gt;	};
&lt;br /&gt;}
&lt;br /&gt;&lt;span style="color: #008200"&gt;//instances
&lt;/span&gt;
var peppe = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact('Peppe', 'Marchi', 'giuseppe.marchi@dev4side.com');
&lt;br /&gt;var miro = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact('Miro', 'Radenovic', 'miro.radenovic@dev4side.com');
&lt;br /&gt;peppe.ShowFullName(); &lt;span style="color: #008200"&gt;//Peppe Marchi
&lt;/span&gt;
miro.ShowFullName(); &lt;span style="color: #008200"&gt;//Miro Radenovic
&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ho capito anche che, se volevo fare le cose per bene e controllare la memoria che la mia applicazione di front-end occupava all'interno del browser, dovevo farmi amico l’oggetto "prototype" e sfruttarlo nel migliore dei modi.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.SP13 = window.D4S.SP13 || {};
&lt;br /&gt;
&lt;br /&gt;D4S.SP13.Contact = function (id, firstname, lastname, email) {
&lt;br /&gt;    var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;    self.Id = id;
&lt;br /&gt;    self.FirstName = firstname;
&lt;br /&gt;    self.Title = lastname;
&lt;br /&gt;    self.EMail = email;
&lt;br /&gt;};
&lt;br /&gt;D4S.SP13.Contact.prototype.ShowFullName = function () {
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.FirstName + ' ' + &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.Title;
&lt;br /&gt;};
&lt;br /&gt;var peppe = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact(1, 'Peppe', 'Marchi', 'giuseppe.marchi@dev4side.com');
&lt;br /&gt;var miro = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact(2, 'Miro', 'Radenovic', 'miro.radenovic@dev4side.com');
&lt;br /&gt;
&lt;br /&gt;alert(peppe.ShowFullName());
&lt;br /&gt;alert(miro.ShowFullName());&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Fin quando poi ho parlato con &lt;a href="https://twitter.com/robymes" title="Roberto Messora" target="_blank"&gt;Roberto&lt;/a&gt; che mi ha introdotto &lt;a href="http://knockoutjs.com" title="KnockoutJs" target="_blank"&gt;KnockoutJs&lt;/a&gt;, libreria open-source con qualche anno di esperienza ormai che mi permette di implementare un pattern che conosco molto bene dalle mie esperienze di lavoro con Silverlight: il pattern MVVM (Model-View-ViewModel).
&lt;br /&gt;Fantastico!
&lt;br /&gt;Con questa libreria e veramente poche righe di codice, si fanno delle cose pazzesche. Questo perché KnockoutJs ti permette di fare un binding dichiarativo sulla pagina, staccando totalmente quella che è l'interfaccia dell'applicazione dalla logica di business ed occupandosi di fare refresh della UI a fronte di un cambiamento di una proprietà del ViewModel (proprietà definita "osservabile"), di utilizzare dei template di rendering HTML e di fare dependency tracking.
&lt;br /&gt;Oltre al sito ufficiale della libreria, vermante ben fatto, vi lascio qualche lettura molto interessante:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ugidotnet.org/Article/Detail/1340" title="KnockoutJs su UgiDotNet" target="_blank"&gt;http://www.ugidotnet.org/Article/Detail/1340&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ugidotnet.org/Article/Detail/1342" title="KnockoutJs su UgiDotNet" target="_blank"&gt;http://www.ugidotnet.org/Article/Detail/1342&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;Abbiamo visto già un po' di sintassi di KnockoutJs nei precedenti post e seguirà una serie di post utili a farvi capire come sfruttare questa libreria all'interno di applicazioni SharePoint 2013 (Apps o Farm solutions che siano).
&lt;br /&gt;In generale, è importante ricordarsi che se volete che l'interfaccia venga modificata in automatico al cambiamento del valore di una proprietà del ViewModel da KnockoutJs è necessario che tale proprietà venga dichiarata come "osservabile" (ko.observable() o ko.observableArray()) e che, una volta che una proprietà è stata segnata come osservabile, va seguita questa sintassi:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;per la lettura: var valore = model.property()&lt;/li&gt;&lt;li&gt;per la scrittura: model.property(‘nuovo valore’);&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;Vi assicuro che vi ci abituerete presto.
&lt;br /&gt;Vi assicuro anche che, se non conoscete per niente o poco JavaScript, vi ci potete divertire tanto e oltretutto acquisite un bagaglio tecnico veramente molto utile di questi tempi.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/KnockoutJs.aspx" title="TAG: KnockoutJs"&gt;KnockoutJs&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/EBpR0MbaMYg" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/WhenSharePointDevsMeetJavaScript.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/WhenSharePointDevsMeetJavaScript.aspx</feedburner:origLink></item><item><title>Le slide della mia sessione sulle App allo SharePoint Saturday</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/-pZh9Xptu08/SharePointSaturdayItaliaSlideApps.aspx</link><pubDate>Mon, 20 May 2013 10:46:33 GMT</pubDate><description>Come vi dicevo, sabato scorso c'è stato il primo SharePoint Satuday qui in Italia ed è andata veramente bene.
&lt;br /&gt;E' stata un'ottima occasione per rivedere un sacco di persone e per conoscerne altrettante di nuove, oltre a rimanere aggiornati riguardo le novità di quest'ultima versione di SharePoint.
&lt;br /&gt;
&lt;br /&gt;Vi lascio qui le slide della mia sessione sulle App:
&lt;br /&gt;
&lt;br /&gt;&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/21500825" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/PeppeDotNet/apps-for-sharepoint-online-2013" title="Apps for SharePoint Online 2013" target="_blank"&gt;Apps for SharePoint Online 2013&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/PeppeDotNet" target="_blank"&gt;Giuseppe Marchi&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Di codice non ne ho, perchè ho usato per lo più il codice presente nei template di default presenti all'interno dei developer tools per Office 2013 e SharePoint 2013 di Visual Studio.
&lt;br /&gt;
&lt;br /&gt;A riguardo, &lt;a href="http://www.sharepoint-reference.com/default.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; mi ha fatto notare un'inesattezza. Cito paro paro quel che mi ha detto (e mi toccherà anche offrigli da bere mi sa).
&lt;br /&gt;Slide 10: le Sandboxed Solutions non sono + deprecate, hanno cambiato il messaggio ad ottobre (rispetto a quanto dichiarato in luglio 2012). Ora sono "sconsigliate" solo le sandboxed solutions code-based, mentre il provisioning di artifact via sandbox è supportato e in molti casi unico modo x fare alcune cose.
&lt;br /&gt;
&lt;br /&gt;Speriamo si riesca ad organizzare anche in altre città questo tipo di eventi. Sarebbe fantastico.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Saturday.aspx" title="TAG: SharePoint Saturday"&gt;SharePoint Saturday&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/-pZh9Xptu08" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/SharePointSaturdayItaliaSlideApps.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/SharePointSaturdayItaliaSlideApps.aspx</feedburner:origLink></item><item><title>SharePoint Saturday anche in Italia! Milano, 18 maggio 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/pwH2hi_m6AI/SharePointSaturdayItalia.aspx</link><pubDate>Tue, 07 May 2013 10:08:08 GMT</pubDate><description>&lt;div style="margin: 10px; float: right"&gt;&lt;img src="http://www.peppedotnet.it/images/spsitaly.jpg" alt="SharePoint Daturday Italia" /&gt;&lt;/div&gt;Sabato &lt;b&gt;18 maggio 2013&lt;/b&gt; (quindi tra pochissimo!!), in Via Lepetit 8/10 (Milano, nei pressi della stazione Centrale) si terrà il primo evento della "saga" SharePoint Saturday.
&lt;br /&gt;Questa tipologia di eventi è molto famosa nel resto del mondo, basta andare sul sito e vedere l'elenco dei sabati occupati da incontri di questo tipo nelle varie città: &lt;a href="http://spsevents.org/" title="SPS Events" target="_blank"&gt;http://spsevents.org/&lt;/a&gt;
&lt;br /&gt;Non si tratta nient'altro che di un incontro gratuito per parlare di SharePoint e delle cose che gli girano attorno.
&lt;br /&gt;Ecco, grazie all'iniziativa di qualche volenteroso, questo tipo di evento è sbarcato anche in Italia.
&lt;br /&gt;L'agenda vede argomenti molto interessanti:
&lt;br /&gt;
&lt;br /&gt;8:30 – 9:00
&lt;br /&gt;Registration
&lt;br /&gt;	 	 	 	 
&lt;br /&gt;9:00 – 9:30
&lt;br /&gt;SP Saturday Intro (Casu e Rizzi)
&lt;br /&gt;
&lt;br /&gt;9:30 – 10:30
&lt;br /&gt;Sviluppare App per SharePoint Online 2013 (Marchi)
&lt;br /&gt;
&lt;br /&gt;BREAK	 	 	 	 	 
&lt;br /&gt;
&lt;br /&gt;10:40 – 11:40
&lt;br /&gt;Single Page Applications &amp; SharePoint (Franzini)
&lt;br /&gt;
&lt;br /&gt;11:40 – 12:40
&lt;br /&gt;The power of Windows 8 and SharePoint together (Prota)
&lt;br /&gt;
&lt;br /&gt;LUNCH AND PANNEL	 	 	 	 	 
&lt;br /&gt;
&lt;br /&gt;14:00 – 15:00
&lt;br /&gt;Dal File Server a SharePoint 2013 (Macori)
&lt;br /&gt;
&lt;br /&gt;15:00 – 16:00
&lt;br /&gt;Javascript Patterns (Di Fazio)
&lt;br /&gt;
&lt;br /&gt;BREAK	 
&lt;br /&gt;
&lt;br /&gt;16:10 – 17:10	 	 	 	 
&lt;br /&gt;Passare da un modello di sviluppo tradizionale a quello cloud (Rizzi)
&lt;br /&gt;
&lt;br /&gt;17:10 – 17:30
&lt;br /&gt;Giveaway gifts and high tech gadgets (Casu)
&lt;br /&gt;
&lt;br /&gt;Come vedete, io parlerò per un'oretta di App per SharePoint 2013 (il nuovo modello di sviluppo di cui abbiamo già parlato sul blog) e di come sfruttare questo modello per sviluppare sia sulle vostre strutture che sul cloud, tramite il nuovo Office 365.
&lt;br /&gt;
&lt;br /&gt;Quindi, per prima cosa, potete registrarvi GRATUITAMENTE all'evento qua: 
&lt;br /&gt;- &lt;a href="http://spsitaly-efbevent.eventbrite.it/" title="SharePoint Saturday - Registrazione" target="_blank"&gt;http://spsitaly-efbevent.eventbrite.it/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Il resto delle informazioni invece (agenda, elenco degli speaker e degli sponsor e location), le potete trovare al sito: 
&lt;br /&gt;- &lt;a href="http://spsevents.org/worldwide/Milan/Pages/SPSMilan2013.aspx" title="SharePoint Saturday Milano 2013" target="_blank"&gt;http://spsevents.org/worldwide/Milan/Pages/SPSMilan2013.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ci vediamo la! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Saturday.aspx" title="TAG: SharePoint Saturday"&gt;SharePoint Saturday&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/pwH2hi_m6AI" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/SharePointSaturdayItalia.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/SharePointSaturdayItalia.aspx</feedburner:origLink></item><item><title>Filtri multipli utilizzando la querystring $filter del servizio REST di SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/p9jGzPfwns4/MultipleFiltersWithRESTSP2013.aspx</link><pubDate>Mon, 06 May 2013 18:33:16 GMT</pubDate><description>&lt;a href="http://www.peppedotnet.it/Blog/FIlterPropertiesWithSharePoint2013REST.aspx" title="Filtrare i risultati con una chiamata REST su SharePoint 2013" target="_blank"&gt;Abbiamo già parlato&lt;/a&gt; della possibilità di effettuare query filtrare utilizzando la nuova interfaccia REST di SharePoint 2013. In quel post però, avevo scritto una stupidata.
&lt;br /&gt;L'applicazione di filtri multipli non avviene specificando più volte la querystring $filter, ma bensì specificando un'unica volta tale querystring ed inserendo le varie condizioni tra parentesi tonde.
&lt;br /&gt;E' solo un errore di sintassi, ma ovviamente questo è l'unico modo di farlo funzionare.
&lt;br /&gt;Ecco un esempio:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=(BaseTemplate eq 101) and (startswith(Title,'Shared'))
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo modo le URL si complicano ancor di più è vero, ma avete così la possibilità di fare filtri in "and" o in "or" inserendo tutte le clausole che volete. Vi assicuro che in applicazioni reali, vi servirà sicuramente.
&lt;br /&gt;Vi ricordo inoltre che se scrivete codice JavaScript, potete utilizzare la mia libreria per aiutarvi a scrivere queste query: 
&lt;br /&gt;- &lt;a href="http://nuget.org/packages/d4s.sp2013.rest" title="SharePoint 2013 REST Helper for JavaScript" target="_blank"&gt;http://nuget.org/packages/d4s.sp2013.rest&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/p9jGzPfwns4" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/MultipleFiltersWithRESTSP2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/MultipleFiltersWithRESTSP2013.aspx</feedburner:origLink></item><item><title>Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/4GRM5bKGLGw/HowToEnableFilterByQuerystringInSP2013.aspx</link><pubDate>Thu, 02 May 2013 14:44:33 GMT</pubDate><description>Per chi di voi ha già installato la nuova versione del prodotto, provate ad eseguire queste operazioni:
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create una nuova lista semplice (io l'ho chiamata "Categorie") e metteteci dentro 3 elementi&lt;/li&gt;&lt;li&gt;Create una seconda nuova lista semplice (io l'ho chiamata "Fatture"), create un nuovo campo lookup sulla lista appena creata (la lista "Categorie") ed inserite qualche elemento dentro questa lista, specificando sempre un valore nel campo di lookup&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Ok, provate ora a filtrare la lista di fatture inserendo nella URL le seguenti querystring:
&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;/Lists/Fatture/AllItems.aspx?FilterField1=Categoria&amp;FilterValue1=Due&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove "Categoria" è il nome del campo lookup che avete creato prima e "Due" uno dei valori possibili da attribuire a quel campo.
&lt;br /&gt;Quello che succede è che SharePoint filtra la lista al caricamento della pagina in base al contenuto della querystring. Questa funzionalità è così da un sacco di versioni addietro e molto spesso risulta veramente utile, anche all'interno di applicazioni custom.
&lt;br /&gt;Inoltre, la stessa funzionalità è utilizzata anche dalla "QueryString Filter Web Part".
&lt;br /&gt;Se però provate a cambiare filtro o resettarlo, vi accorgerete che tali operazioni non sono più disponibili. Cioè non funzionano proprio.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/serversiderendering_01.png" alt="Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere dall'immagine, nonostante io abbia tolto il filtro continuo a vedere solamente gli elementi filtrati inizialmente.
&lt;br /&gt;Questo perché le web part di lista (rappresentate dalla web part XsltListViewWebPart) in SharePoint 2013 sono state modificate per renderizzare le liste in maniera differente, inserendo nel giro anche molto rendering JavaScript. Questa funzionalità (di cui parleremo in uno dei prossimi post) ci permette grandi spazi di customizzazione, perché con JavaScript abbiamo sicuramente più potenza che con XSLT (per esempio), ma non permette più l'utilizzo del filtro via querystring che magari utilizziamo per alcune delle applicazioni che stiamo portando da SharePoint 2010 a SharePoint 2013.
&lt;br /&gt;Per fortuna però, c?è modo di tornare indietro. Tornare cioè al funzionamento che avevamo in SharePoint 2010, modificando le proprietà dalla web part e flaggando l'opzione "Server Render" presente all'interno della categoria "Miscellaneous".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/serversiderendering_02.png" alt="Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;In questo modo il filtro via querystring continuerà a funzionare come ha sempre fatto.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/4GRM5bKGLGw" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/HowToEnableFilterByQuerystringInSP2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/HowToEnableFilterByQuerystringInSP2013.aspx</feedburner:origLink></item><item><title>Creare servizi REST su SharePoint 2010</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/pFwhb3wGG_w/HowToImplementRESTServicesInSharePoint2010.aspx</link><pubDate>Mon, 22 Apr 2013 16:05:01 GMT</pubDate><description>Durante questi periodi stiamo imparando a conoscere la nuova interfaccia REST di SharePoint 2013. Questa interfaccia è una figata perchè permette di sfruttare gli standard del momento, in ambito di sviluppo web, per la scrittura delle vostre applicazioni. 
&lt;br /&gt;Applicazioni che vedono un utilizzo molto più accentuato di JavaScript, rispetto a quanto si aveva prima. 
&lt;br /&gt;Perchè JavaScript? Perchè lo impone il mercato attuale. Applicazioni con una forte user experience ed un utilizzo di tecnologie client-side ben distribuito sono sicuramente di impatto per l'utente finale e pensare di poter affiancare a queste tecnologie una base server-side orientata ai servizi, molto solida e basata su standard come JSON, ecc.. è sicuramente rassicurante.
&lt;br /&gt;Benissimo. Il problema è che in questo momento storico, soprattutto qui in Italia, noi "SharePointiani" è come se fossimo sotto attacco. Si perchè dobbiamo avere a che fare con molti clienti che usano ancora MOSS 2007, la maggior parte che sono ben consolidati su SharePoint 2010 e qualche avventuriero che sta iniziando ad utilizzare 2013, il che ci mette in forte difficoltà durante lo sviluppo delle nostre applicazioni. Questo perchè non tutte le tecnologie e le librerie che possiamo sfruttare in questi periodi sono compatibili con software di "vecchia generazione".
&lt;br /&gt;Ecco quindi che, se dobbiamo pensare ad un'applicazione su SharePoint 2010 (su MOSS 2007 ci ho messo una pietra sopra ormai), per prima cosa è molto importante che la pensiamo in ottica di una futura migrazione. 
&lt;br /&gt;Poi, è altrettanto importante che cerchiamo di svilupparla seguendo lo standard del momento, lo standard che si aspettano gli utenti ora, cioè quello di applicazioni molto responsive, di facile utilizzo, che guidano l'utente all'obbiettivo e con un certo appeal grafico e funzionale.
&lt;br /&gt;In parole povere, è necessario pensare l'applicazione con una buona dose di sviluppo di front-end ed una solida architettura a servizi.
&lt;br /&gt;Se vi ricordate, SharePoint ha sempre esposto molte delle sue funzionalità tramite servizi, ma l'utilizzo di tecnologie attuali come REST per le richieste e JSON per la rappresentazione del dato è stato applicato solamente per un singolo servizio (il ListData.svc), che però ci dava solo la possibilità di fare operazioni sulle liste. Carino eh, però limitante.
&lt;br /&gt;Vediamo invece come possiamo scrivere dei servizi personalizzati, in grado di rispondere a chiamate REST e di ritornare i dati nel formato che si ormai presentato come uno dei più vincenti: JSON.
&lt;br /&gt;
&lt;br /&gt;Per prima cosa è necessario aprire Visual Studio 2010 e creare un nuovo progetto SharePoint 2010.
&lt;br /&gt;Fatto questo, aggiungete alla vostra soluzione una nuova "mapped folder" e selezionate la cartella "ISAPI", che sarà la cartella che conterrà i nostri servizi. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_1.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Perchè la cartella ISAPI? Perchè è la cartella che SharePoint stesso utilizza per i suoi web services e perchè contiene la configurazione (tramite un web.config specifico) per implementare nuovi servizi SOAP o REST.
&lt;br /&gt;Fatto questo, dobbiamo aggiungere la referenza alla libreria Microsoft.SharePoint.Client.ServerRuntime.dll; questa libreria si trova solo in GAC (una volta che avete installato SharePoint ovviamente) e contiene le strutture utili alla creazione del nostro servizio custom.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_2.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Queste libreria le inseriamo solamente perchè ci danno la possibilità di decorare un nostro servizio con un attributo che fa capire a SharePoint di generare anche l'endpoint "MEX" utile allo scambio dei metadati del servizio.
&lt;br /&gt;Oltre a tale libreria dobbiamo aggiungere le varie referenze per l'utilizzo di servizi WCF (quindi per esempio la System.ServiceModel, la System.ServiceModel.Web e la System.Runtime.Serialization).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_3.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Benissimo. Passiamo ora alla creazione del servizio. 
&lt;br /&gt;Ogni servizio WCF deve vedere la presenza di un endpoint (che può essere una URI dinamica o un file .svc) e di un contratto utile a definire quali sono i metodi esposti dal servizio stesso. Per chi di voi già lavora con WCF, queste nozioni dovrebbero essere superflue.
&lt;br /&gt;All'interno di una soluzione SharePoint 2010, l'endpoint del nostro servizio personalizzato sarà un file .svc che dovrete create all'interno della cartella "ISAPI". Questo file deve contenere la seguente dichiarazione:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;%@&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ServiceHost Language&lt;span style='color:#0000FF'&gt;="C#"&lt;/span&gt; 
&lt;br /&gt;                Factory&lt;span style='color:#0000FF'&gt;="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, 
&lt;br /&gt;                Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"&lt;/span&gt;
&lt;br /&gt;                Service&lt;span style='color:#0000FF'&gt;="D4S.SP2010.RestService.Services.SampleRESTService, 
&lt;br /&gt;                D4S.SP2010.RestService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=05336b2be73eec53"&lt;/span&gt; %&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;I punti importanti della dichiarazione del servizio appena vista sono:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;L'attributo "Service", che rappresenta la classe concreta del nostro servizio&lt;/li&gt;&lt;li&gt;L'attributo "Factory", che rappresenta la classe factory presente all'interno delle librerie del Server Object Model di SharePoint 2010 e che stabilisce quale tipo di binding SharePoint dovrà applicare al nostro servizio. Nel nostro caso, viene scelta la classe MultipleBaseAddressWebServiceHostFactory che è la classe che ci permette di creare il servizio in modalità REST, al posto di utilizzare SOAP o di creare un servizio ADO.NET Data Service.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Riguardo il secondo punto, vi ricordo che i servizi WCF cambiano comportamento (e talvolta anche protocollo) in base alla configurazione (binding) presente all'interno del web.config dell'applicazione web che funge da host per il servizio.
&lt;br /&gt;SharePoint offre un pò di factory di default, in grado di permetterci di creare dei servizi in maniera dinamica (quindi senza darne una vera e propria definizione all'interno del web.config), che sono disponibili a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff521586(v=office.14).aspx" title="WCF Services in SharePoint Foundation 2010" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ff521586(v=office.14).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Creato l'endpoint, dobbiamo specificare il contratto del nostro servizio. Il contratto è solitamente dato dall'utilizzo di un'interfaccia (anche se non è obbligatorio ovviamente), a cui assegnare l'attributo "ServiceContract" e di una serie di metodi, che saranno poi quelli esposti dal servizio, decorati invece con  l’attributo "OperationContract".
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Services
&lt;br /&gt;{
&lt;br /&gt;    [ServiceContract]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;interface&lt;/span&gt; ISampleRESTService
&lt;br /&gt;    {
&lt;br /&gt;        [WebGet(UriTemplate=&lt;span style="color: #A31515"&gt;"list"&lt;/span&gt;, BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Json)]
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        List&lt;SampleDto&gt; ReturnAListOfSomething();
&lt;br /&gt;
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        [WebGet(UriTemplate=&lt;span style="color: #A31515"&gt;"list/?id={id}"&lt;/span&gt;, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
&lt;br /&gt;        SampleDto GetSomethingById(&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; id);
&lt;br /&gt;
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        [WebGet(UriTemplate = &lt;span style="color: #A31515"&gt;"list/{id}"&lt;/span&gt;, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
&lt;br /&gt;        SampleDto GetSomethingElseById(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; id);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come avete visto, su ogni metodo esposto abbiamo la possibilità di specificare:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il template della URL utilizzata per chiamare tale metodo (tramite l'attributo UriTemplate)&lt;/li&gt;&lt;li&gt;Il tipo di messaggio&lt;/li&gt;&lt;li&gt;Il formato della risposta (assieme a quella della richiesta, che in questo esempio ho omesso)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;A tale interfaccia dobbiamo poi legare un'implementazione concreta. La classe che conterrà tale implementazione sarà la stessa che abbiamo definito all'interno dell'endpoint.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Services
&lt;br /&gt;{
&lt;br /&gt;    [BasicHttpBindingServiceMetadataExchangeEndpoint]
&lt;br /&gt;    [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; SampleRESTService : ISampleRESTService
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; List&lt;SampleDto&gt; ReturnAListOfSomething()
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData();
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; SampleDto GetSomethingById(&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; id)
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData().Where(s =&gt; s.SampleIntProperty == id).FirstOrDefault();
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; SampleDto GetSomethingElseById(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; id)
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;int&lt;/span&gt; requestedId = 0;
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (Int32.TryParse(id, &lt;span style="color: #0000FF"&gt;out&lt;/span&gt; requestedId))
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData().Where(s =&gt; s.SampleIntProperty == requestedId).FirstOrDefault();
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;else&lt;/span&gt;
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; List&lt;SampleDto&gt; SampleData() 
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; List&lt;SampleDto&gt;() 
&lt;br /&gt;            { 
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 0, SampleStringProperty = &lt;span style="color: #A31515"&gt;"zero"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 1, SampleStringProperty = &lt;span style="color: #A31515"&gt;"uno"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 2, SampleStringProperty = &lt;span style="color: #A31515"&gt;"due"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 3, SampleStringProperty = &lt;span style="color: #A31515"&gt;"tre"&lt;/span&gt; },
&lt;br /&gt;            };
&lt;br /&gt;        }        
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ovviamente l'implementazione è solo d'esempio. Quello a cui dovete far caso è l'utilizzo dell'attributo BasicHttpBindingServiceMetadataExchangeEndpoint, per permettere la creazione dinamica dell'endpoint /mex utile allo scambio dei metadati del nostro servizio.
&lt;br /&gt;
&lt;br /&gt;Ok, ci siamo quasi.
&lt;br /&gt;Come avete visto, i metodi esposti dal nostro servizio ritornano sia dei tipi di dati base (void, string, int, ecc..) sia dei tipi di dati custom (nell'esempio, il tipo "SampleDto"). Quello che dovete ricordarvi di fare, che chi di voi usa WCF sa bene, è di decorare la classe e le proprietà che abbiamo intenzione di utilizzare all'interno del nostro servizio con gli attributi "DataContract" e "DataMember".
&lt;br /&gt;Questi due attributi fanno in modo che il framework di WCF riesca a serializzare i dati che escono dal nostro servizio (nel nostro caso in JSON) e deserializzare quelli che arrivano in entrata.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Dto
&lt;br /&gt;{
&lt;br /&gt;    [DataContract]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; SampleDto
&lt;br /&gt;    {
&lt;br /&gt;        [DataMember]
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; SampleStringProperty { get; set; }
&lt;br /&gt;
&lt;br /&gt;        [DataMember]
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;int&lt;/span&gt; SampleIntProperty { get; set; }
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Benissimo. Ora possiamo fare deploy della nostra soluzione su SharePoint 2010.
&lt;br /&gt;Per testarla ci basta semplicemente aprire il browser, andare all’indirizzo:
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_4.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;e chiamare uno dei metodi esposti:
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc/list
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_5.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc/list/2
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_6.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ecco pronto il vostro servizio REST, che vi torna dati in formato JSON da utilizzare all’interno della parte di front-end delle vostre applicazioni.
&lt;br /&gt;Vi lascio qua i sorgenti, così potete provarlo direttamente:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/D4S.SP2010.RestService.zip" title="Scarica i sorgenti" target="_blank"&gt;D4S.SP2010.RestService.zip&lt;/a&gt; (50 Kb)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WCF.aspx" title="TAG: WCF"&gt;WCF&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/pFwhb3wGG_w" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/HowToImplementRESTServicesInSharePoint2010.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/HowToImplementRESTServicesInSharePoint2010.aspx</feedburner:origLink></item><item><title>Scaricare un WSP già installato sulla vostra farm SharePoint</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/bcZ3rDB2qpk/HowToDownloadAWSPFromTheFarm.aspx</link><pubDate>Sat, 13 Apr 2013 17:30:09 GMT</pubDate><description>L'altro giorno mi è capitato di arrivare in una farm SharePoint e trovare un'applicazione di cui non erano disponibili i sorgenti. Si lo so.. una bella seccatura :)
&lt;br /&gt;Oltre a Reflector o JustDecompile, tool utilissimi per dare un'occhiata all'interno dei vari assembly, dovevo prima recuperare il WSP dal config db di SharePoint.
&lt;br /&gt;Per fortuna il modello ad oggetti del prodotto ci mette a disposizione classi e metodi per selezionare la solution di cui abbiamo bisogno e "scaricarla" sul file system.
&lt;br /&gt;Vi lascio qua le 3 righe di codice che vanno utilizzate:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$farm = Get-SPFarm
&lt;br /&gt;$file = $farm.Solutions.Item(&lt;span style="color: #A31515"&gt;"NOME_VOSTRA_SOLUTION.wsp.wsp"&lt;/span&gt;).SolutionFile
&lt;br /&gt;$file.SaveAs(&lt;span style="color: #A31515"&gt;"c:\NOME_VOSTRA_SOLUTION.wsp"&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Molto utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/bcZ3rDB2qpk" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/HowToDownloadAWSPFromTheFarm.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/HowToDownloadAWSPFromTheFarm.aspx</feedburner:origLink></item><item><title>Come chiamare un endpoint remoto da un App SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/C0Swz1V40IU/HowToCallRemoteEndpointsFromSP2013Apps.aspx</link><pubDate>Tue, 02 Apr 2013 09:42:30 GMT</pubDate><description>Come &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx" title="SharePoint 2013 Apps URL" target="_blank"&gt;abbiamo detto&lt;/a&gt;, il modello App-oriented inserito all'interno di questa nuova versione di SharePoint, è stato pensato in modo tale da girare in un contesto isolato (attraverso l'utilizzo di un nuovo dominio).
&lt;br /&gt;Questo fa si che tutte le chiamate HTTP fatte a risorse esterne al contesto dell'App, tramite Javascript, siano in effetti delle chiamate cross-site. Le chiamate cross-site di questo tipo sono espressamente vietate, proprio nel senso che è il browser stesso a bloccarvele.
&lt;br /&gt;Ovviamente, se facciamo richieste di questo tipo da una Provider-Hosted App o da una Auto-Hosted App, sfruttando quindi .NET e la parte di code-behind delle nostre pagine, non abbiamo questo problema.
&lt;br /&gt;Il problema viene fuori, come vi dicevo, quando si effettuano queste chiamate dalla parte front-end della nostra applicazione (quindi dal codice Javascript che decidiamo di scrivere).
&lt;br /&gt;SharePoint ha però una soluzione per questo, che è quella di fare per noi la chiamata cross-site.
&lt;br /&gt;Che significa "fare per noi"?
&lt;br /&gt;Significa che attraverso due particolari classi Javascript (la classe SP.WebRequestInfo e la classe SP.WebProxy) abbiamo la possibilità di passare a SharePoint l'endpoint remoto che vogliamo chiamare (sfruttando quindi una chiamata al servizio Client.svc nello stesso dominio dell'App ed evitando la chiamata cross-site) e farci ritornare il risultato nel formato richiesto.
&lt;br /&gt;Il codice per la chiamata è veramente semplice:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;'use strict';
&lt;br /&gt;
&lt;br /&gt;window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.RssReader = window.D4S.RssReader || {};
&lt;br /&gt;
&lt;br /&gt;D4S.RssReader.RssFeedViewModel = function () {
&lt;br /&gt;    var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    self.feedItems = ko.observableArray([]);
&lt;br /&gt;
&lt;br /&gt;    self.loadFeed = function () {
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//wrong method, because throws a cross-domain exception!        
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//$.ajax({
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    url: 'http://www.peppedotnet.it/Rss.aspx',
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    type: 'GET',            
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    success: function (data) {
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//        //we can't go here
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    },
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    error: function (jqXHR, textStatus, errorThrown) {
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    }
&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//});        
&lt;/span&gt;

&lt;br /&gt;        &lt;span style="color: #008200"&gt;//right method, using SharePoint WebRequestInfo
&lt;/span&gt;
        var context = SP.ClientContext.get_current();
&lt;br /&gt;        var request = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SP.WebRequestInfo();
&lt;br /&gt;        request.set_url('http:&lt;span style="color: #008200"&gt;//www.peppedotnet.it/Rss.aspx');
&lt;/span&gt;
        request.set_method(&lt;span style="color: #A31515"&gt;"GET"&lt;/span&gt;);
&lt;br /&gt;        var response = SP.WebProxy.invoke(context, request); &lt;span style="color: #008200"&gt;//SharePoint makes the cross-domain call for you!
&lt;/span&gt;
        context.executeQueryAsync(function () {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (response.get_statusCode() == 200) {
&lt;br /&gt;                var rss = response.get_body();
&lt;br /&gt;                var items = $(rss).find('item');
&lt;br /&gt;                $.each(items, function (index, item) {
&lt;br /&gt;                    self.feedItems.push({
&lt;br /&gt;                        Id: $(item).find('guid').text(),
&lt;br /&gt;                        Title: $(item).find('title').text(),
&lt;br /&gt;                        Url: 'http:&lt;span style="color: #008200"&gt;//www.peppedotnet.it' + $(item).find('guid').text(),
&lt;/span&gt;
                        Category: $(item).find('category').text(),
&lt;br /&gt;                        Body: $(item).find('description').text()
&lt;br /&gt;                    });
&lt;br /&gt;                });
&lt;br /&gt;            }
&lt;br /&gt;        }, function (sender, args) {
&lt;br /&gt;            alert('error');
&lt;br /&gt;        });
&lt;br /&gt;    };
&lt;br /&gt;};
&lt;br /&gt;
&lt;br /&gt;$(document).ready(function () {
&lt;br /&gt;    var model = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.RssReader.RssFeedViewModel();
&lt;br /&gt;    ko.applyBindings(model);
&lt;br /&gt;
&lt;br /&gt;    model.loadFeed();
&lt;br /&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ho utilizzato KnockoutJs per fare questo esempio. Non è niente di complicato, ma vi rimando cmq al sito ufficiale di questa libreria perchè è veramente utile: &lt;a href="http://knockoutjs.com" title="KnockoutJs" target="_blank"&gt;http://knockoutjs.com&lt;/a&gt;.
&lt;br /&gt;Come potete vedere, le due classi utili ad effettuare la chiamata all'endpoint remoto fanno parte del Client Object Model di SharePoint 2013 e quindi seguono le sue stesse regole e la sua sintassi. Infatti, se guardiamo la chiamata che viene fatta con uno sniffer qualsiasi, vediamo che viene chiamato il servizio Client.svc e che gli vengono passati dei dati in formato XML, all'interno dei quali riconosciamo la nostra URL remota che abbiamo detto a SharePoint di chiamare per noi.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/SP2013/remoteEndpoints2.png" title="Come chiamare un endpoint remoto da un App SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/SP2013/remoteEndpoints2s.png" alt="Come chiamare un endpoint remoto da un App SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'unica cosa che dobbiamo ricordarci di fare è quella di inserire all'interno dell'AppManifest.xml della nostra App, l'endpoint remoto che la stessa App richiama per il suo corretto funzionamento. Questo lo possiamo fare utilizzando l'editor che Visual Studio 2012 ci mette a disposizione (una volta installati i tool per lo sviluppo di applicazioni per SharePoint 2013).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/SP2013/remoteEndpoints.png" alt="Come chiamare un endpoint remoto da un App SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, una volta che l'utente ha acconsentito al fatto che la nostra App effettua delle chiamate ad endpoint remoti, SharePoint è in grado di effettuare la chiamata in tutta tranquillità.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/C0Swz1V40IU" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/HowToCallRemoteEndpointsFromSP2013Apps.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/HowToCallRemoteEndpointsFromSP2013Apps.aspx</feedburner:origLink></item><item><title>Utilizzare le finestre Callout di SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/XiwuuIKxB8g/HowToUseCalloutsSharePoint2013.aspx</link><pubDate>Fri, 15 Mar 2013 18:31:02 GMT</pubDate><description>Come avrete visto, l'interfaccia di SharePoint 2013 è davvero cambiata rispetto a prima. 
&lt;br /&gt;Assieme ai cambiamenti stilistici, abbiamo anche un nuovo elemento di interazione all'interno delle pagine (sfruttato soprattutto in liste e document library): le Callout.
&lt;br /&gt;Che cosa sono? Non sono nient'altro che dei tooltip un pò più fighi dal punto di vista grafico, che ci permettono di fare operazioni contestuali all'oggetto che è stato cliccato.
&lt;br /&gt;In SharePoint 2013 questi oggetti hanno sostituito l'edit control block di elementi di liste o di file di document library, dando la possibilità di fare azioni veloci sull'oggetto selezionato o per esempio (questo solo se avete installato le Office Web Apps) avere la preview del file. In realtà l'edit control block è sempre presente, ma viene renderizzato come azione all'interno di una Callout.
&lt;br /&gt;Bene, a fronte della presenza di questo nuovo componente, il popolo di sviluppatori SharePoint deve sapere che è possibile sfruttare delle API Javascript ed utilizzare le medesime Callout anche all'interno delle nostre customizzazioni.
&lt;br /&gt;Queste API sono presenti all'interno del file callout.js (o callout.debug.js), disponibile all'interno della directory LAYOUTS. 
&lt;br /&gt;Questo file è inserito nella master page di default di SharePoint 2013, mentre invece va inserito a mano all'interno delle pagine delle vostre App se, appunto, volete utilizzare questo nuovo componente all'interno di un'App SharePoint 2013.
&lt;br /&gt;L'utilizzo è davvero semplice, ecco un esempio si base:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;script&lt;/span&gt;&lt;span style='color:#FF0000'&gt; type&lt;span style='color:#0000FF'&gt;="text/javascript"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;function OpenTestCallout(sender) {
&lt;br /&gt;   var c = CalloutManager.createNew({ 
&lt;br /&gt;      ID: 'myCalloutId',
&lt;br /&gt;      launchPoint: sender, 
&lt;br /&gt;      beakOrientation: 'leftRight', 
&lt;br /&gt;      title: 'Titolo', 
&lt;br /&gt;      content: 'Contenuto', 
&lt;br /&gt;      contentWidth: 600 
&lt;br /&gt;   });
&lt;br /&gt;   c.open();
&lt;br /&gt;}
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;script&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;a&lt;/span&gt;&lt;span style='color:#FF0000'&gt; href&lt;span style='color:#0000FF'&gt;="#"&lt;/span&gt; onClick&lt;span style='color:#0000FF'&gt;="OpenTestCallout(this)"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;open callout&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;a&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come vedete, gira tutto intorno al metodo createNew della classe CalloutManager, classe che ci permette di fare tante altre operazioni su questa tipologia di componente. 
&lt;br /&gt;I parametri principali di questo metodo sono sicuramente:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ID - Identificativo della Callout, obbligatorio ed utile per recuperare univocamente la Callout nella pagina&lt;/li&gt;&lt;li&gt;launchPoint - Elemento HTML dalla cui posizione deve essere visualizzato la Callout graficamente&lt;/li&gt;&lt;li&gt;beakOrientation - Enumerazione per decidere l'orientamento grafico della Callout (i possibili valori sono "topBottom" o "leftRight")&lt;/li&gt;&lt;li&gt;title - Titolo della Callout&lt;/li&gt;&lt;li&gt;content - Contenuto della Callout (che può essere anche in formato HTML)&lt;/li&gt;&lt;/ul&gt;Oltre a queste opzioni, abbiamo la possibilità di aggiungere azioni specifiche direttamente all'interno della Callout.
&lt;br /&gt;Vedremo questo esempio in uno dei prossimi post.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Callout.aspx" title="TAG: Callout"&gt;Callout&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/XiwuuIKxB8g" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/HowToUseCalloutsSharePoint2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/HowToUseCalloutsSharePoint2013.aspx</feedburner:origLink></item><item><title>Disponibile per il download la versione ufficiale dei tool di sviluppo per Office e SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/Y675JZqwrXk/RTMForOffice2013AndSharePoint2013Tools.aspx</link><pubDate>Thu, 07 Mar 2013 17:28:56 GMT</pubDate><description>Da qualche giorno (finalmente direi), è disponibile per il download la versione ufficiale dei tool per Visual Studio 2012 per quanto riguarda lo sviluppo di applicazioni Office 2013 e SharePoint 2013.
&lt;br /&gt;Questo download, sostituisce la preview 2 che ci avevano fatto scaricare un pò di tempo fa e che non copriva ancora a pieno le funzionalità che invece si possono sfruttare durante lo sviluppo di applicazioni secondo il nuovo "app-model" di Office e SharePoint.
&lt;br /&gt;L'annuncio viene direttamente dal blog di &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2013/03/04/now-available-office-developer-tools-for-visual-studio-2012.aspx" title="Somasegar" target="_blank"&gt;Somasegar&lt;/a&gt;, ma trovate informazioni anche su &lt;a href="http://dev.office.com" target="_blank" title="dev.office.com"&gt;dev.office.com&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Con questa nuova versione dei tool, abbiamo innanzitutto una pre-validazione di quello che abbiamo prodotto secondo le linee guida dell'Office Store. Questo per aiutarvi durante lo sviluppo ed evitare tempi lunghissimi per la validazione delle vostre App da inserire all'interno dell'Office Store.
&lt;br /&gt;Inoltre, sono stati aggiunti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;delle modifiche all'editor dei file Manifest.xml delle nostre applicazioni&lt;/li&gt;&lt;li&gt;maggiori help e best practices all'interno dei template di elemento o di progetto, per aiutarci nello sviluppo&lt;/li&gt;&lt;li&gt;debug remoto sui remote event receiver e sugli eventi relativi alle App&lt;/li&gt;supporto alla configurazione e alla creazione di workflow&lt;/li&gt;&lt;li&gt;... e tanto altro ancora!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Io ancora non gli ho installati, ma prometto di farlo presto perchè voglio vedere se hanno modificato qualcosa per quanto riguarda la localizzazione delle App per SharePoint (visto che attualmente è un massacro). Vi terrò aggiornati.
&lt;br /&gt;
&lt;br /&gt;In questi giorni, alla SharePoint Conference, siamo andati nel dettaglio di questo nuovo modello. Se non ci sono grossi cambiamenti, ne riparlaremo (ma solo per quanto riguarda Office 2013) al &lt;a href="http://www.dotnetcampus.it/" title=".NET Campus 2013" target="_blank"&gt;.NET Campus&lt;/a&gt;, il 13 Aprile 2013 a Roma.
&lt;br /&gt;
&lt;br /&gt;Bene quindi, trovate i tool a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-US/office/apps/fp123627" title="Downdload office 2013 e sharepoint 2013 tools for VS12" target="_blank"&gt;http://msdn.microsoft.com/en-US/office/apps/fp123627&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download e buono sviluppo! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/Y675JZqwrXk" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/RTMForOffice2013AndSharePoint2013Tools.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/RTMForOffice2013AndSharePoint2013Tools.aspx</feedburner:origLink></item><item><title>Office 365 Developer Subscription per abbonati MSDN</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/HJuiAI6EErg/Office365DeveloperSubscription.aspx</link><pubDate>Sat, 02 Mar 2013 14:17:45 GMT</pubDate><description>Da ieri, per tutti gli abbondati MSDN, è disponibile una nuova sottoscrizione per Office 365 fatta apposta per sviluppare App per SharePoint 2013 ed Office 2013.
&lt;br /&gt;Questo significa che è assieme a tutto il resto delle licenze Microsoft per sviluppo, abbiamo anche a disposizione:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un Sito per sviluppatori di SharePoint Online, personalizzato per la creazione e il testing delle app.&lt;/li&gt;&lt;li&gt;l'accesso agli Strumenti di sviluppo  (Napa, per intenderci)&lt;/li&gt;&lt;li&gt;un account Microsoft Seller Dashboard, per mettere sull'Office Store le vostre App&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Sostanzialmente, è stato inserito all'interno della sottoscrizione MSDN quello che abbiamo potuto provare in questi mesi di beta del nuovo Office 365: un sito SharePoint 2013, di tipo "Developer Site".
&lt;br /&gt;Assieme a questo sito, è disponibile anche una casella di posta Exchange Online per domini del tipo VOSTRONOME.onmicrosoft.com, così da darvi la possibilità di implementare le "Mail-App" di Office 2013.
&lt;br /&gt;
&lt;br /&gt;Ora che anche Office 365 andrà in RTM, ci manca solo la versione ufficiale dei tool per Visual Studio 2012 e abbiamo così tutti i tool ufficiali per implementare le nostre App.
&lt;br /&gt;
&lt;br /&gt;Per chi è interessato, vi ricordo che mercoledì 6 marzo 2013 ci sarà l'evento di lancio del nuovo Office 365 presso la SharePoint Conference italiana (Assago, Centro Congressi Milano Fiori).
&lt;br /&gt;L'evento di lancio sarà aperto a tutti (accesso gratuito quindi). Trovate maggiori info a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/events/2013/office365-launch.aspx" title="Office 365 launch event in Italy" target="_blank"&gt;http://www.sharepointconference.it/events/2013/office365-launch.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/header_office365.gif" alt="SharePoint Conference 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ci vediamo là!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/HJuiAI6EErg" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/Office365DeveloperSubscription.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/Office365DeveloperSubscription.aspx</feedburner:origLink></item><item><title>Slide sulle App per SharePoint 2013 ed Office 2013 ai Community Days</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/gPj2DJj3ubU/SlideCommunityDays2013.aspx</link><pubDate>Wed, 27 Feb 2013 18:52:38 GMT</pubDate><description>Oggi è stata veramente una bella giornata. Ai &lt;a href="http://www.communitydays.it" title="Community Days 2013" target="_blank"&gt;Communit Days&lt;/a&gt; di quest'anno c'erano tantissime persone e le sessioni erano veramente belle.
&lt;br /&gt;C'è stato il solito problema di capienza, perchè molti erano in piedi, per terra o fuori delle sale addirittura, ma in generale è stato un evento pieno di contenuti di alto livello.
&lt;br /&gt;
&lt;br /&gt;Vi lascio qua le mie slide e vi ricordo che se volete entrare più nel dettaglio per quanto riguarda lo sviluppo di App per SharePoint 2013 ed Office 2013, ci vediamo alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; ;)
&lt;br /&gt;
&lt;br /&gt;&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/16811123" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/PeppeDotNet/sp02" title="Sviluppare App per Office 2013 e SharePoint 2013" target="_blank"&gt;Sviluppare App per Office 2013 e SharePoint 2013&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/PeppeDotNet" target="_blank"&gt;Giuseppe Marchi&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Le demo, le trovate direttamente sul sito della conferenza.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/gPj2DJj3ubU" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/SlideCommunityDays2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Eventi</category><feedburner:origLink>http://www.peppedotnet.it/Blog/SlideCommunityDays2013.aspx</feedburner:origLink></item><item><title>Le mie sessioni alla SharePoint Conference 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/b1oN9YGEyo8/MySessionsAtSharePointConference2013.aspx</link><pubDate>Mon, 25 Feb 2013 09:35:57 GMT</pubDate><description>&lt;div style="margin: 10px; float: right; background: #333"&gt;&lt;img src="http://www.peppedotnet.it/Images/spoc-invert_mod.png" alt="SharePoint Conference 2013" /&gt;&lt;/div&gt;Bene, direi che ormai ci siamo.
&lt;br /&gt;La prossima settimana si aprono i tendoni della &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference italiana&lt;/a&gt;, 3 giornate di sessioni tecniche sulle novità di SharePoint 2013 ed Office 2013, con speaker nazionali ed internazionali.
&lt;br /&gt;Io ho appena finito di preparare il materiale. Strano ma vero, ho impacchettato e spedito tutto quanto con una settimana di anticipo. Probabilmente è perché quest’anno ho un totale di 5 sessioni, di cui una per IT PRO, e forse mi sono cagato sotto di non arrivare in tempo :) Poco importa, l’importante è arrivare in fondo no?
&lt;br /&gt;In ogni caso, prima di incontrarci al Centro Congressi Milano Fiori, volevo darvi una preview di quello che vedremo durante le mie sessioni.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;DEV312 - HTML5/JavaScript for SharePointers - 6 marzo, 9.00 - Sala B&lt;/b&gt;
&lt;br /&gt;Senza togliere niente alle altre, è sicuramente la sessione che mi è piaciuto di più preparare. In questi periodi, il web sta prendendo una via chiara e decisa. Seguendo la scia di applicazioni con una user experience veramente elevata, facili all’uso, con un forte impatto grafico e interattivo. Applicazioni che fanno un uso (a volte) spropositato di Javascript, linguaggio che noi (poveri) sviluppatori SharePoint non sempre abbiamo avuto il tempo di approfondire. Siamo sempre stati troppo impegnati con il server object model di SharePoint, il provisioning, ecc…
&lt;br /&gt;In questa sessione cercherò di riportarvi quella che è stata la mia esperienza di approccio al Javascript dallo sviluppo server-side e SharePoint, passando dalle basi, ai modi per evitare problemi, alle tecniche più avanzate per scrivere applicazioni di front-end di alto livello. Speriamo di farcela in un’ora è 15 :)
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;DEV321 - L'app-model di SharePoint 2013 dalla A... - 6 marzo, 10.35 - Sala B&lt;/b&gt;
&lt;br /&gt;Dopo REST, l’app-model è sicuramente la novità più importante di SharePoint 2013 per noi sviluppatori e imparare da subito tutto ciò che sta dietro questo nuovo modello è sicuramente un bel progetto.
&lt;br /&gt;Ho cercato di dividere tutti i contenuti tra questa sessione e quella dopo, ma ho dovuto togliere qualcosa purtroppo. Erano davvero tanti.
&lt;br /&gt;Partiremo sicuramente dall’architettura del nuovo modello, per poi porre attenzione sulle SharePoint-Hosted Apps. Parlando di tecniche di programmazione, provisioning, configurazione, accesso ai dati esterni, App Parts e di tanto altro ancora.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;DEV322 - L'app-model di SharePoint 2013 ... alla Z - 6 marzo, 12.00 - Sala B&lt;/b&gt;
&lt;br /&gt;Questa sessione continuerà il discorso della precedente, portando però l’attenzione sulle Cloud-Hosted Apps (quindi le Auto-Hosted e le Provider-Hosted).
&lt;br /&gt;E’ la sessione poco prima di pranzo, parlo già da 3 ore filate e gli argomenti sono più ostici rispetto alla sessione precedente.. quindi forza e coraggio! ;)
&lt;br /&gt;Vedremo tutto riguardo le App che vengono eseguite al di fuori del contesto di SharePoint, parlando anche qua di architettura (soprattutto di autenticazione), tecniche di programmazione, provisioning, Azure, ecc…
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;IT334 - App Management Service Application - 7 marzo, 14.30 - Sala B&lt;/b&gt;
&lt;br /&gt;Ecco, dopo aver snocciolato per 2 ore e mezza tutto per quanto riguarda lo sviluppo di App è venuto il momento degli IT PRO. Esatto, avete capito bene. Quest’anno tengo una sessione per sistemisti (roba da matti :), in cui cercherò di fargli capire come configurare una Farm SharePoint 2013 per permettere il corretto funzionamento delle App e come gestire richieste, licenze, app catalog, store, e tutto il resto che gravita intorno ad esse.
&lt;br /&gt;Devo esser sincero però... spero tanto che venga qualcuno “dei nostri” a darmi supporto con qualche domanda prettamente dev o robe del genere :)
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;EXPO - Geolocalization in SharePoint 2013 - 5 marzo, 14.45 - Sala EXPO&lt;/b&gt;
&lt;br /&gt;Ed eccoci arrivati al teatrino. Questa è una sessione gratuita, quindi aperta al pubblico, in cui cercherò di farvi vedere una nuova funzionalità introdotta in SharePoint 2013 che permette all’utente finale e allo sviluppatore di sfruttare il servizio di mappe di Bing direttamente all’interno delle strutture di SharePoint (quindi liste e document library).
&lt;br /&gt;La sessione dura solo mezz’ora, ma cercheremo anche qua di vedere tutto quanto, dando un taglio più pratico per chi di voi vuole sin da subito sfruttare questa nuova funzionalità all’interno delle proprie applicazioni.
&lt;br /&gt;
&lt;br /&gt;Per concludere, sono molto orgoglioso di dirvi che quest’anno la mia azienda (&lt;a href="http://www.dev4side.com" title="Dev4Side S.r.l." target="_blank"&gt;Dev4Side S.r.l.&lt;/a&gt;) sarà presente come sponsor gold all’interno della conferenza. Il che significa che troverete dentro il materiale che vi verrà consegnato, la nostra brochure ed una piccola sorpresina ;)
&lt;br /&gt;
&lt;br /&gt;Che dire d’altro? Vi aspetto numerosi!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;][&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/b1oN9YGEyo8" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/MySessionsAtSharePointConference2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>ASP.NET</category><feedburner:origLink>http://www.peppedotnet.it/Blog/MySessionsAtSharePointConference2013.aspx</feedburner:origLink></item><item><title>Errore su App SharePoint 2013: "Access denied. You do not have permission to ..."</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/YPj_-xVb8Mw/AccessDeniedErrorOnSharePoint2013App.aspx</link><pubDate>Tue, 19 Feb 2013 17:38:51 GMT</pubDate><description>Se vi approcciate per la prima volta allo sviluppo di App per SharePoint 2013, assieme all'utilizzo della nuova interfaccia REST, è molto probabile che incontrerete questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: red; font-style: italic; margin-left: 10px"&gt;Access denied. You do not have permission to perform this action or access this resource.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;durante una delle vostre chiamate REST alle informazioni dell'host site.
&lt;br /&gt;Niente paura, vi siete solo dimenticati di inserire i permessi per la vostra App o, ancor più semplicemente, vi siete dimenticati di approvare la vostra App una volta che l'avete installata.
&lt;br /&gt;Come dicevamo nei primi post sul nuovo App Model di SharePoint 2013, ogni App può richiedere dei permessi per accedere al sito padre in cui viene installata (il famoso "Host Site"). Questa richiesta fa parte dell'App Manifest stesso.
&lt;br /&gt;Quindi per ovviare al problema capite bene su che risorse avete bisogno di avere permessi e modificate il vostro AppManifest.xml di modo tale che possa chiederli a SharePoint.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/appManifestPermissions.jpg" alt="AppManifest.xml permissions" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se avete già dato i permessi alla vostra App, basta solo rieseguire l'autorizzazione dalle pagine del sito Host.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/appPermissions.jpg" alt="App authorization" /&gt;
&lt;br /&gt;
&lt;br /&gt;I permessi che potete legare alla vostra App e che trovate disponibili in quella combo all'interno dell'AppManifest.xml sono piuttosto esplicativi, quindi non dovreste aver problemi ;)
&lt;br /&gt;
&lt;br /&gt;Se non vi siete mai avvicinati a questo nuovo modello o magari all'utilizzo della nuova interfaccia REST, vi lascio qua un pò di riferimenti:
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Guides/SharePoint%202013.aspx" title="Guida a SharePoint 2013" target="_blank"&gt;http://www.peppedotnet.it/Guides/SharePoint%202013.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo invece che se volete un'introduzione molto più in dettaglio del nuovo modello orientato alle App, tengo ben due sessioni a riguardo durante la &lt;a href="" title="" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; di quest'anno (5, 6 e 7 marzo 2013, al Centro Congressi MilanoFiori di Assago - Milano).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="/Images/spoc13_Leaderboard.png" alt="SharePoint Conference 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/YPj_-xVb8Mw" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/AccessDeniedErrorOnSharePoint2013App.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/AccessDeniedErrorOnSharePoint2013App.aspx</feedburner:origLink></item><item><title>App per SharePoint 2013 ed Office 2013 ai Community Days</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/EbaN-QkILFo/SharePoint2013AndOffice2013CommunityDays.aspx</link><pubDate>Sun, 17 Feb 2013 13:50:56 GMT</pubDate><description>&lt;img src="http://www.peppedotnet.it/images/communityDays2013.png" alt="Community Days 2013" style="float: right; margin-left: 10px" /&gt;In attesa del grande evento su SharePoint dei primi di marzo (5, 6 e 7), a fine mese (il 27 e 28 febbraio 2013) ci saranno i &lt;a href="http://www.communitydays.it/events/communitydays-2013/" title="Community Days 2013" target="_blank"&gt;Community Days 2013&lt;/a&gt;, l'evento community più grande d'Italia.
&lt;br /&gt;
&lt;br /&gt;Come l'anno scorso, anche &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; sostiene l'evento presentando sessioni su SharePoint 2013, Office 2013, SharePoint Online, Windows Azure e partecipando con la presenza mia, di &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor Macori&lt;/a&gt; e di &lt;a href="http://www.sharepoint-reference.com" title="Paolo Pialorsi" target="_blank"&gt;Paolo Pialorsi&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Durante la mia sessione, vedremo una preview del nuovo "App Model" inserito all'interno delle nuove versioni di Office e SharePoint, in grado di permettere lo sviluppo di applicazioni integrate con i due prodotti, tramite l'utilizzo delle principali tecnologie web del momento.
&lt;br /&gt;La sessione sarà introduttiva all'argomento, così da darvi le prime dritte per iniziare ad esplorare il modello.
&lt;br /&gt;Alla SharePoint Conference entreremo più nel dettaglio, non preoccupatevi ;)
&lt;br /&gt;Quindi, ci vediamo in &lt;b&gt;SALA 4 (HERMES) il 27 febbraio 2013 alle ore 14&lt;/b&gt; (la sala 4 è al secondo piano).
&lt;br /&gt;
&lt;br /&gt;Se volete prepararvi, ecco qua un pò di link utili:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart1.aspx" title="Il nuovo App Model di SharePoint - Parte 1" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart1.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart2.aspx" title="Il nuovo App Model di SharePoint - Parte 2" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart2.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart3.aspx" title="Il nuovo App Model di SharePoint - Parte 3" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart3.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4.aspx" title="App Model: il modello di programmazione" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Poi, alcune info logistiche: quest'anno è stata predisposta un'area con divanetti, chiamata "community plaza", dove poter interagire maggiormente con gli speaker, i memberi della community e le persone di Microsoft. L'area è situata al primo piano. 
&lt;br /&gt;Per una mappa completa, fate riferimento al sito dell'evento:
&lt;br /&gt;&lt;a href="http://www.communitydays.it/events/communitydays-2013/#info" title="Mappa community days 2013" target="_blank"&gt;http://www.communitydays.it/events/communitydays-2013/#info&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se pensate di venire il consiglio è sempre lo stesso (a costo di risultare pesante :) ...fatevi riconoscere! Così facciamo una chiacchierata che di sicuro male non fa.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Community Days.aspx" title="TAG: Community Days"&gt;Community Days&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/EbaN-QkILFo" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/SharePoint2013AndOffice2013CommunityDays.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Eventi</category><feedburner:origLink>http://www.peppedotnet.it/Blog/SharePoint2013AndOffice2013CommunityDays.aspx</feedburner:origLink></item><item><title>Aggiornata la versione del policies di validazione delle app SharePoint e Office per l'Office Store</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/Ud6aDtq97Cs/OfficeStoreValidationPolicies13.aspx</link><pubDate>Wed, 13 Feb 2013 11:04:15 GMT</pubDate><description>E' appena stata aggiornata la lista delle policies di validazione che il team dell'Office Store applica durante il flusso di approvazione delle App che vogliono approdare sul mercato.
&lt;br /&gt;Tale lista è disponibile a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx" title="Validation policies for the apps submitted to the Office Store (version 1.3)" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' importante tenere sempre sott'occhio questa lista se abbiamo intenzione di mandare una delle nostre App (sia SharePoint 2013 che Office 2013) al flusso di validazione proprio dell'Office Store.
&lt;br /&gt;A breve vedremo quali sono i passi per proporre la vostra App all'interno dello Store, ma iniziare a leggersi per bene le regole di validazione non può farvi che bene, perchè sono veramente tante.
&lt;br /&gt;Qual'è il rischio di evitare questo documento? Molto semplice: tempi di attivazione della vostra App eterni.
&lt;br /&gt;Io l'ho provato sulla mia pelle. 
&lt;br /&gt;Quando ho mandato la mia prima App (&lt;a href="http://office.microsoft.com/en-us/store/my-rubrica-WA103938579.aspx" title="My Rubrica - Office Store" target="_blank"&gt;http://office.microsoft.com/en-us/store/my-rubrica-WA103938579.aspx&lt;/a&gt;), il documento era appena stato pubblicato, quindi non gli ho dato troppo peso lo ammetto, ma vi assicuro che ci ho messo almeno 2 settimane per avere l'App pubblicata nello store, a forza di rifiuti e modifiche rispettando quanto richiesto dalle policies di validazione.
&lt;br /&gt;Quindi, come vi dicevo, se avete intenzione di pubblicare qualche App all'interno dell'Office Store, tenete ben a mente il contenuto di questo documento.
&lt;br /&gt;
&lt;br /&gt;Se volete un'introduzione allo sviluppo di App per SharePoint 2013 ed Office 2013, vi ricordo l'appuntamento con la &lt;a href="http://www.sharepointconference.it/events/2013" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; a Milano, nei giorni 5, 6 e 7 Marzo, presso il Centro Congressi Milano Fiori (Assago).
&lt;br /&gt;Oltre alle mie due sessioni sul nuovo App-Model di SharePoint 2013, c'è anche una sessione di Fabio sullo sviluppo di App all'interno dei programmi del pacchetto di Office 2013.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/Ud6aDtq97Cs" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/OfficeStoreValidationPolicies13.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/OfficeStoreValidationPolicies13.aspx</feedburner:origLink></item><item><title>Top 25 SharePoint influencer! :)</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/QYqkc0Xu8nk/Top25EuropeanSharePointInfluencer.aspx</link><pubDate>Fri, 08 Feb 2013 13:09:05 GMT</pubDate><description>&lt;div style="float: right; margin: 10px;"&gt;&lt;a href="http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf" title="I'm one of the TOP 25 SharePoint European Influencers" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/top25EuropeanSharePointInfluencers.jpg" alt="I'm one of the TOP 25 SharePoint European Influencers" /&gt;&lt;/a&gt;&lt;/div&gt;Mercoledì sera ho ricevuto la chiamata da &lt;a href="http://www.sharepoint-reference.com/default.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; che mi diceva che a Copenaghen hanno annunciato il mio nome tra i primi 25 influencers su SharePoint in Europa.
&lt;br /&gt;Hanno detto "Giuseppe Marci" per l'esattezza, ma è stato comunque una bella notizia :)
&lt;br /&gt;Ovviamente anche Paolo ha portato avanti l'orgoglio italiano.
&lt;br /&gt;Ecco qua il PDF ufficiale:
&lt;br /&gt;&lt;a href="http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf" title="" target="_blank"&gt;http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A quelle 57 buon'anime, un grazie di cuore!
&lt;br /&gt;Peppe
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/QYqkc0Xu8nk" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/Top25EuropeanSharePointInfluencer.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/Top25EuropeanSharePointInfluencer.aspx</feedburner:origLink></item><item><title>Domani, 3 febbraio 2013, scade lo sconto per la SharePoint Conference</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/Ag6F4FNO01Y/LastDayForEarlyBirdSPOC2013.aspx</link><pubDate>Sat, 02 Feb 2013 11:11:32 GMT</pubDate><description>Ciao a tutti, vi scrivo per ricordavi che domani (3 febbraio 2013) scade l'ultimo sconto per partecipare alla &lt;a href="http://www.sharepointconference.it/events/2013" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference&lt;/a&gt; di quest'anno e vi assicuro che è veramente un peccato perdervelo.
&lt;br /&gt;Se acquistate l'ingresso entro domani, riuscite a risparmiare ben 150 euro e avete la possibilità di partecipare all'evento più importante per quanto riguarda la nuova versione di SharePoint, di Office e di Office 365.
&lt;br /&gt;
&lt;br /&gt;Per iscrivervi andate sul sito della conferenza a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/events/2013/register.aspx" title="SharePoint Conference 2013" target="_blank"&gt;http://www.sharepointconference.it/events/2013/register.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Inoltre, è notizia di pochi giorni che la conferenza ospiterà il lancio ufficiale della nuova versione di Office 365, con la presenza del nuovo amministratore delegato di Microsoft Italia.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/header_office365.gif" alt="SharePoint Conference 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nei prossimi giorni vedremo un pò quali saranno le sessioni per "noi" dev, così che potete avere già un'idea di quali sono le cose importanti da seguire ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/Ag6F4FNO01Y" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/LastDayForEarlyBirdSPOC2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Eventi</category><feedburner:origLink>http://www.peppedotnet.it/Blog/LastDayForEarlyBirdSPOC2013.aspx</feedburner:origLink></item><item><title>Sono finito nel listone per i top 25 European SharePoint influencers</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/TOa-f2-13nU/Top25EuropeanSharePointInfluencers.aspx</link><pubDate>Thu, 10 Jan 2013 09:30:46 GMT</pubDate><description>Non so bene come sia capitato eh.. sta di fatto che settimana scorsa mi è arrivata la mail che mi avvisava che il mio nominativo era tra i tanti candidati per la classifica dei migliori 25 "influencers" su SharePoint in Europa.
&lt;br /&gt;Ovviamente sono molto contento. Soprattutto perchè nella stessa lista ci sono dei nomi altisonanti di professionisti che lavorano su SharePoint da un sacco di tempo, superbravi e che sono veramente molto attivi nella community.
&lt;br /&gt;Trovate la lista, con la possibilità di esprimere il vostro voto, qua:
&lt;br /&gt;- &lt;a href="http://harmon.ie/top-25-european-sharepoint-community-influencers" title="top 25 European SharePoint influencers" target="_blank"&gt;http://harmon.ie/top-25-european-sharepoint-community-influencers&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Assieme a me, per quanto riguarda "l'orgoglio italiano" :) ci sono Paolo, Igor, Romeo, Claudio, Barbarina, Fabio, Marco, Francesco, Patrick, Gabriele e Martin.
&lt;br /&gt;Siamo in minoranza confronto le altre nazioni, ma facciamo comunque la nostra figura. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/TOa-f2-13nU" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/Top25EuropeanSharePointInfluencers.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/Top25EuropeanSharePointInfluencers.aspx</feedburner:origLink></item><item><title>Paginare i risultati con una chiamata REST su SharePoint 2013</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/I2Pb4EpS8Z0/PaginateRESTResultsWithSharePoint2013.aspx</link><pubDate>Wed, 09 Jan 2013 19:13:24 GMT</pubDate><description>E' il terzo tip sulla nuova interfaccia REST di SharePoint 2013. Fino ad ora abbiamo imparato sia a &lt;a href="" title="" target="_blank"&gt;filtrare&lt;/a&gt; i risultati, sia &lt;a href="" title="" target="_blank"&gt;recuperare solo le proprietà che ci interessano&lt;/a&gt; di una risorsa. Oggi vedremo come paginare i risultati e come ordinarli. 
&lt;br /&gt;
&lt;br /&gt;L'oridinamento è facile. Basta utilizzare la querystring "$orderby", specificare il campo per cui si vuole ordinare i risultati e il tipo di ordinamento, se discendente ("desc") o se ascendente ("asc"). 
&lt;br /&gt;Se volessimo ritornare tutte le liste di un sito, ordinate in base al nome, dovremmo quindi utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$orderby=Title asc
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;La paginazione dei risultati di una richiesta invece, è sempre una best practice da rispettare in qualsiasi applicazione che si basa su dati presi da fonti di date esterne, soprattutto in applicazioni come quelle che andremo a sviluppare, basate su richieste HTTP. 
&lt;br /&gt;Per paginare, il servizio REST di SharePoint 2013 (seguendo le regole del protocollo OData) espone gli operatori "$top" e "$skip", utili rispettivamente a specificare il numero di elementi per pagina e il numero di elementi da saltare. 
&lt;br /&gt;Quindi, volendo prelevare le prime 5 liste di un sito SharePoint, possiamo utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$top=5&amp;$skip=0
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo caso ho specificato anche il parametro $skip a puro titolo d'esempio, perchè di default (se non specificato) prendere il valore 0. Nel caso in cui volessimo visualizzare invece la seconda pagina di risultati, dobbiamo utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists/?$top=5&amp;$skip=5
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo modo sto dicendo la servizio REST di SharePoint 2013 di ritornarmi tutte le liste a partire dalla sesta fino alla decima.
&lt;br /&gt;Poi, fate conto che, è meglio spostare alla fine della URL questi parametri, perchè è sempre meglio prima applicare filtri, ordinamenti, selezioni, ecc.. per poi paginare.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Attenzione però!&lt;/b&gt; Sappiate che il parametro $skip, riguardo la selezione di elementi di lista (quindi, per intenderci, facendo un query tipo /_api/web/lists/getbytitle('LISTNAME')/items), viene IGNORATO!
&lt;br /&gt;Parlaremo a breve di questa issue, che è decisamente seccante.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/I2Pb4EpS8Z0" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Blog/PaginateRESTResultsWithSharePoint2013.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Blog/PaginateRESTResultsWithSharePoint2013.aspx</feedburner:origLink></item><item><title>Configurare i provider di Memebrship e Role su Aruba</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/ytoRwXBJLGU/ConfigurareProviderMembershipRoleAruba.aspx</link><pubDate>Sun, 20 Feb 2011 12:16:54 GMT</pubDate><description>Come configurare la propria applicazione ASP.NET per utilizzare i provider di Membershi e Role all'interno di un SQL Server offerto da Aruba.it&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/ytoRwXBJLGU" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/ConfigurareProviderMembershipRoleAruba.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>ASP.NET 2.0</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/ConfigurareProviderMembershipRoleAruba.aspx</feedburner:origLink></item><item><title>Localizzazione all'interno di una feature</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/MDkCTF3obAg/SharePointFeatureLocalization.aspx</link><pubDate>Sat, 20 Mar 2010 10:34:37 GMT</pubDate><description>I differenti metodi che abbiamo a disposizione per la localizzazione di una feature SharePoint.&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/MDkCTF3obAg" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/SharePointFeatureLocalization.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/SharePointFeatureLocalization.aspx</feedburner:origLink></item><item><title>I nuovi event receivers di SharePoint 2010</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/u6IAXLRjv5Q/NewEventReceiversInSharePoint2010.aspx</link><pubDate>Fri, 18 Dec 2009 10:28:16 GMT</pubDate><description>L'elenco dei nuovi eventi disponibili su SharePoint 2010&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/u6IAXLRjv5Q" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/NewEventReceiversInSharePoint2010.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/NewEventReceiversInSharePoint2010.aspx</feedburner:origLink></item><item><title>Le novità di Visual Studio 2010 Beta 2 per SharePoint 2010</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/AJgtjZPW1iA/VisualStudio2010FeaturesForSharePoint2010Dev.aspx</link><pubDate>Sun, 29 Nov 2009 18:15:27 GMT</pubDate><description>Una rapida panoramica sulle novità introdotte nella versione 2010 di Visual Studio per gli sviluppatori SharePoint 2010.&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/AJgtjZPW1iA" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/VisualStudio2010FeaturesForSharePoint2010Dev.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/VisualStudio2010FeaturesForSharePoint2010Dev.aspx</feedburner:origLink></item><item><title>Deployment di web part di SharePoint attraverso le feature</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/eJiEiEoZbjA/SharePointWebPartDeploymentWithAFeature.aspx</link><pubDate>Tue, 29 Sep 2009 20:41:59 GMT</pubDate><description>Le tecniche di deployment di una web part all'interno della propria farm SharePoint tramite una feature&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/eJiEiEoZbjA" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/SharePointWebPartDeploymentWithAFeature.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/SharePointWebPartDeploymentWithAFeature.aspx</feedburner:origLink></item><item><title>Gestione dei namespace in LINQ to XML</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/8wy4IAhGO9A/XmlNamespaceInLinqToXml.aspx</link><pubDate>Thu, 07 May 2009 19:59:24 GMT</pubDate><description>Come leggere e scrivere documenti XML che utilizzano i namespace per la diversificazione dei nomi degli elementi.&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/8wy4IAhGO9A" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/XmlNamespaceInLinqToXml.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>ASP.NET 3.5</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/XmlNamespaceInLinqToXml.aspx</feedburner:origLink></item><item><title>Condizioni e regole in Windows Workflow Foundation</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/DpvkLDg0wps/WorkflowFoundationConditionsAndRules.aspx</link><pubDate>Tue, 27 Jan 2009 11:58:24 GMT</pubDate><description>Come utilizzare al meglio il motore di valutazione di regole e condizioni offerto da Windows Workflow Foundation.&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/DpvkLDg0wps" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/WorkflowFoundationConditionsAndRules.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Workflow Foundation</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/WorkflowFoundationConditionsAndRules.aspx</feedburner:origLink></item><item><title>L'object model di Windows SharePoint Services 3.0</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/kwdTfFAwhME/WSSObjectModel.aspx</link><pubDate>Sat, 20 Dec 2008 11:35:29 GMT</pubDate><description>Le basi per utilizzare il modello ad oggetti offerto da SharePoint Services 3.0 all'interno delle proprie personalizzazioni.&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/kwdTfFAwhME" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/WSSObjectModel.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Sharepoint</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/WSSObjectModel.aspx</feedburner:origLink></item><item><title>Il controllo LinqDataSource di ASP.NET 3.5</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/WJOcYsRE6jU/LinqDataSourceControl.aspx</link><pubDate>Sun, 16 Nov 2008 16:19:05 GMT</pubDate><description>Tutto sul controllo per usufruire delle potenzialità di LINQ all'interno di pagine ASP.NET&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/WJOcYsRE6jU" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/LinqDataSourceControl.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>ASP.NET 3.5</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/LinqDataSourceControl.aspx</feedburner:origLink></item><item><title>Autenticazione con Live ID</title><link>http://feedproxy.google.com/~r/PeppeDotNet/~3/oBj1miPQ9Ks/WindowsLiveIDAuthentication.aspx</link><pubDate>Thu, 04 Sep 2008 09:07:26 GMT</pubDate><description>Come sfruttare le funzionalità di autenticazione di Windows Live ID all'interno delle proprie applicazioni ASP.NET&lt;img src="http://feeds.feedburner.com/~r/PeppeDotNet/~4/oBj1miPQ9Ks" height="1" width="1"/&gt;</description><dc:creator> (Giuseppe Marchi)</dc:creator><guid isPermaLink="false">/Articoli/WindowsLiveIDAuthentication.aspx</guid><source url="http://www.peppedotnet.it/rss.aspx" /><category>Windows Live</category><feedburner:origLink>http://www.peppedotnet.it/Articoli/WindowsLiveIDAuthentication.aspx</feedburner:origLink></item></channel></rss>
