Bene, veniamo alle cose interessanti. Ogni App SharePoint 2013 vede un modello di programmazione differente in base alla propria natura.

La principale differenza è tra:

  • le "SharePoint-Hosted" Apps: in cui non si può eseguire alcun tipo di istruzione server-side e in cui si può accedere ai contenuti del relativo AppWeb solo tramite REST o tramite Client Object Model (Silverlight o Javascript)
  • le "Cloud-Hosted" Apps: in cui possiamo utilizzare qualsiasi tipo di linguaggio server-side (perché l'applicazione non è hostata da SharePoint) e in cui possiamo accedere ai contenuti e alle funzionalità del relativo AppWeb SharePoint 2013 sempre solo tramite REST o tramite il Client Object Model (in questo caso, oltre al modello per Silverlight e Javascript, possiamo utilizzare anche le relative librerie compilate per il .NET Framework)

Quindi, come avrete capito, bisogna mettersi giù di impegno ed impararsi per bene le novità legate ai servizi esposti in modalità REST da SharePoint 2013 e il Client Object Model, entrambi notevolmente arricchiti.

Ecco il modello di programmazione relativo al nuovo App-Model di SharePoint 2013 rappresentato in figura:

SharePoint 2013 App Model Programming

Nel nostro caso, la parte "client" può essere una pagina HTML5 + CSS + Javascript (nel caso di una "SharePoint-Hosted" App) o un pagina ASP.NET, PHP, JSP, Ruby, ecc.. (nel caso di una "Cloud-Hosted" App). La parte "server" invece è formata da un singolo entry point: il servizio WCF che espone tutte le funzionalità alle varie librerie del Client Object Model.
Per chi di voi già lavora con SharePoint 2010, dovrebbe sapere che tutte le richieste che si fanno tramite le librerie Silverlight, Javascript o .NET del Client Object Model confluiscono sul servizio all'url: /_vti_bin/client.svc, servizio che si preoccupa di ritornare i vari risultati in json per poi permettere a tali librerie di ricostruire gli oggetti richiesti dall'applicazione client.

Ora, questo specifico servizio è stato modificato in modo tale che un parte di esso possa essere esposta (e quindi consumabile) in modalità REST. Per semplificare le cose poi, è stato semplicemente mappato all'indirizzo "_api", il che ci permette di utilizzare parte delle funzionalità del Client Object Model, tramite delle query HTTP in modalità REST (es: per recuperare il titolo del sito corrente, basta fare una chiamata all'indirizzo "http://siteurl/_api/web/title"). Parleremo in seguito delle nuove funzionalità legate a questo servizio REST, non preoccupatevi.

Il servizio "listdata.svc" (che possiamo rinominare come il "vecchio servizio REST") e i web services (i vari "listdata.asmx", ecc..) sono ancora presenti, funzionanti ed utilizzabili, così da mantenere la retro-compatibilità con le applicazioni scritte per le versioni precedenti di SharePoint, ma devono comunque essere ritenuti obsoleti a favore dell'utilizzo del Client Object Model o della sua nuova interfaccia REST. Questo lo si può leggere direttamente dalle pagine della documentazione di SharePoint 2013 (qua, al capitolo "Depracated API sets").