Nei precedenti post abbiamo dato un'introduzione al nuovo modello orientato alle App disponibile su SharePoint 2013. Oggi vedremo come dobbiamo preparare il nostro ambiente di sviluppo per la scrittura della nostra prima App.

Nota: vi ricordo che questo post viene scritto durante la fase di Preview di SharePoint 2013 e che tutte le informazioni presenti sono soggette a cambiamento.


Per prima cosa, dobbiamo installare i requisiti software per la scrittura delle nostre App. Quindi:

Fatto questo, dobbiamo preparare l'ambiente ad accogliere le nostre App. E' importante notare che questa configurazione è utile solo per la tipologia di App "SharePoint-hosted", che abbiamo visto nel precedente post. Per le altre tipologie, ci basta installare Visual Studio 2012 e la preview di SharePoint 2013 con il servizio "App Management Service" attivato, senza dover fare ulteriori configurazioni.

Come vi dicevo ogni App che sfrutta SharePoint come piattaforma di host, una volta installata su uno o più siti, viene resa disponibile agli utenti tramite una particolare URL. Quindi il primo passo di configurazione è quello di settare SharePoint in modo da poter servire queste URL, configurazione da fare una a tantum per tutte le App che abbiamo intenzione di sviluppare. L'obbiettivo finale quindi, è quello di avere delle URL di questo tipo:

http://app-[APPID].apps.dev4side.com/[APPNAME]


Dove "APPID" è un identificativo che viene generato da SharePoint 2013 ad ogni installazione della nostra App e "APPNAME" è il nome della mia App. Vedremo in seguito dove si trova questo nome e come possiamo modificarlo.

Ho scelto l'FQDN "apps.dev4side.com", per avere uno spazio di nomi separato dal resto dei miei siti SharePoint. Non c'è nessun vincolo riguardo questa scelta, è solo una questione di ordine. Avreste potuto scegliere anche solo un nome di dominio qualsiasi senza il prefisso "apps" per intenerci, senza il bisogno effettivo di esporre questi nomi su internet.

In fase di sviluppo, per configurare questa URL non è necessario configurare il DNS (come invece è richiesto al momento di spostarsi in produzione), perché sarà poi Visual Studio 2012 a modificare per noi il file "hosts" di Windows ad ogni deploy e ad ogni retract dell'applicazione.

Detto questo, dobbiamo quindi registrare la nostra URL all'interno di SharePoint. Per farlo dobbiamo prima controllare che i servizi SharePoint Administration (spadminv4) e Sharepoint Timer Service (sptimerv4) siano accesi,

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

poi possiamo utilizzare il comando PowerShell "Set-SPAppDomain" utilizzando il tool "SharePoint 2013 Management Shell", specificando l'URL scelta.

Set-SPAppDomain "apps.dev4side.com" 


Come vi dicevo, il dominio "apps.dev4side.com" non esiste, non è necessario registrarlo in nessun provider, ne tantomeno è esposto su internet. Serve solo a me per sviluppare e a SharePoint per legare le mie App ad un gruppo di URL ben preciso. Quando andrete in produzione, allora è compito vostro quello di registrare correttamente il nome sul DNS, configurare il firewall e fare in modo che gli utenti possano navigare senza problemi le vostre App.
Tramite questo comando quindi, abbiamo appena registrato il dominio per fruire le nostre App SharePoint 2013.

Poi, altro requirement è dato dalla presenza del servizio "App Management Service" e dal suo stato (deve essere ovviamente "started"), così da permettere il corretto funzionamento delle App che andremo a sviluppare.

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Assieme alla presenza della relativa service application e di una istanza del suo proxy.

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Fatto questo dobbiamo specificare un managed account di SharePoint 2013 in modo tale da configurare correttamente l'istanza della service application "App Management Service Application" e della service application "Subscription Service Application", entrambe utili al corretto funzionamento di tutta l'architettura App-oriented di SharePoint 2013.
Per prima cosa verifichiamo che all'interno della Central Administration > Security > Configure Managed Accounts ci sia almeno un account da poter utilizzare.

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Se ne abbiamo almeno uno e lo vogliamo utilizzare anche per le service application utili al funzionamento delle App SharePoint 2013, possiamo passare ai prossimi passi. Altrimenti è necessario specificare un nuovo managed account da utilizzare attraverso il comando "New-SPManagedAccount", che ci permette di scegliere l'utente di dominio che preferiamo.

$account = New-SPManagedAccount 


Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Ovviamente, questa operazione può essere fatta anche tramite interfaccia grafica, all'interno della Central Administration.

Se invece abbiamo già un managed account che vogliamo utilizzare anche per queste service application, ci basta semplicemente recuperarlo attraverso il comando "Get-SPManagedAccount".

$account = Get-SPManagedAccount 'DEV4SIDE\$SPSService' 


Nota: se, come me, avete un nome utente con dei caratteri particolari che potrebbero dar fastidio alla normale sintassi di PowerShell (come per esempio il carattere dollaro), utilizzate i singoli apici per specificare il nome dell'account.


Ok, una volta recuperato l'account, possiamo utilizzarlo per configurare le due service app. Ecco lo script utile a completare la configurazione:

$appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account 

$appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
$appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolSubSvc –Name SettingsServiceApp –DatabaseName SettingsServiceDB
$proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc
$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServiceDB
$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc

Come ultima operazione ci basta specificare il nostro tenant name, che verrà utilizzato da SharePoint 2013 per la costruzione dell'URL di ogni App. Possiamo raggiungere questo obbiettivo lanciando il comando "Set-SPAppSiteSubscriptionName" e specificando il parametro "Name".

Set-SPAppSiteSubscriptionName -Name "app" -Confirm:$false 


Dove "app" è il nostro "TENANTNAME".

Così facendo, da ora in poi, le nostre App avranno una URL di questo tipo:

http://app-[APPID].apps.dev4side.com/[APP-NAME] 


Per verificare che la configurazione che abbiamo appena fatto è funzionante, apriamo una nuova istanza di Visual Studio 2012, creiamo una nuova App SharePoint 2013 (di tipo "SharePoint-hosted" chiaramente) e facciamo F5 (run).

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Se non abbiamo alcun errore in fase di deploy e vediamo l'App all'interno del browser significa che la configurazione è corretta.

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013

Le istruzioni che abbiamo appena descritto, sono le stesse riportate sulla documentazione di preview di SharePoint 2013 a questo indirizzo.

Attenzione però. L'articolo sulla documentazione non è completo. E' probabile che in questa configurazione per un ambiente di sviluppo, abbiate degli errori 401 (problemi di autenticazione quindi) quando cercate di accedere alle URL delle vostre App. Per risolverli seguite il metodo 2 presente all'interno di questo articolo della KB: http://support.microsoft.com/kb/896861

Se invece volete configurare l'app-domain utilizzando un DNS e simulando ancora di più un ambiente di produzione, vi consiglio di seguire questo post di Mirjam Van Olst:
- http://www.sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx

Bene, ora siamo pronti allo sviluppo della nostra prima App! :)