ComputerLand

Tu sei qui: Articoli MSDN

Notizie dal web

Windows Azure Conf con DotNetLombardia : 6 Maggio

E-mail Stampa PDF

 

image

Lunedì prossimo 6 Maggio si terrà un evento dedicato a Windows Azure, organizzato dalla community DotNetLombardia in collaborazione con Microsoft. L'obiettivo dell'evento è raccontare le funzionalità di Azure tramite esperienze reali di sviluppatori che utilizzano nella loro vita lavorativa diverse funzionalità di Windows Azure e condividere esperienze con le persone della community che spesso sono i primi utilizzatori di Windows Azure, sempre disponibili a dare consigli e condividere esperienze.

Alla conferenza avrò la possibilità di raccontarvi in breve qualche ultima novità sulle funzionalità di Azure, introducendo la giornata organizzata dalla Community.

L'evento di una giornata intera, totalmente gratuito, si terrà nella sede Microsoft di Peschiera Borromeo e potete registrarvi sul sito a questo link, dove trovate tutte le informazioni sulla logistica.

Vi aspetto & Happy Coding!


read full article

Backup di Windows Server 2012 su Windows Azure

E-mail Stampa PDF

Con l'ultimo aggiornamento di Windows Azure è stato introdotto un nuovo servizio in anteprima, Recovery Services, che mette a disposizione un nuovo modo semplice e intuitivo per effettuare il backup e il rispristino di Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 Essentials e System Center Data Protection Manager 2012 SP1.

È quindi ora possibile gestire il backup sul cloud attraverso gli strumenti familiari di Windows Server, sfruttando le nuove funzionalità di configurazione, monitoraggio e recupero dei backup su Windows Azure Storage.

Questa guida nello specifico spiega passo a passo come effettuare il backup di Windows Server 2012 su Windows Azure.

Nota: per poter effettuare il backup di Windows Server 2012 su Windows Azure è necessario avere un certificato X.509 v3 per registrare il server. Il certificato deve avere una chiave lunga almeno 2048 bit che dovrebbe risiedere nel deposito dei certificati personali del computer locale.

E' possibile utilizzare:

  • un certificato self-signed
  • qualsiasi certificato SSL valido rilasciato da un autorità di certificazione (CA) considerata attendibile da Microsoft.

Per ulteriori informazioni consultare http://support.microsoft.com/kb/931125.
In questa guida utilizzeremo un certificato self-signed generato con il tool di creazione dei certificati, makecert.exe.

 

1. Creazione del certificato self-signed

Per creare il proprio certificato seguire i seguenti passaggi:

       a. Makecert.exe è disponibile come parte di Windows SDK che potete scaricare al seguente link: http://go.microsoft.com/fwl ink/?linkid=84091

       b. Installare Windows SDK per Windows 8. Il tool makecert.exe lo troverete in <system drive>:\Program Files (x86)\Windows Kits\8.0\bin\x64

       c. Lanciare il prompt dei comandi (cmd.exe) con privilegi da amministratore ed eseguire il seguente comando sostituendo CertificateName con il nome che volete dare al vostro certificato:

makecert.exe -r -pe -n CN=CertificateName -ss my -sr localmachine -eku 1.3.6.1.5.5.7.3.2 -len 2048 -e 01/01/2016 CertificateName.cer

      d. Installare il certificato

 

2. Abilitazione delle funzionalità in "Preview"

Per attivare il Recovery Services dal portale di gestione di Windows Azure è necessario:  

     a. Accedere al portale di gestione di Windows Azure inserendo username/indirizzo email e password del proprio account;

image

 

     b. Sulla barra dei comandi in fondo alla pagina del portale di gestione, scegliere New, quindi dalla voce Data Services scegliere Recovery Services e poi posizionarsi su Backup Vault e cliccare sul link preview program (come indicato nella figura sottostante):

 

image

 

 

     c. Dalla lista dei servizi in preview attivare il servizio di Backup effettuando il sign up. Una volta ricevuta l'email di conferma di attivazione del servizio potrete tornare nel portale di gestione di Windows Azure e iniziare ad utilizzarlo.

 

image

 

 

3. Creazione di un deposito per il backup

Per creare il deposito per il backup del vostro server seguire i seguenti passaggi:

     a. Sulla barra dei comandi in fondo alla pagina del portale di gestione, scegliere New, quindi dalla voce Data Services scegliere Recovery Services poi Backup Vault poi Quick Create:

      - in Name, inserire il nome del deposito per il backup;

      - in Region, selezionare la regione per l'archiviazione;

      - infine cliccare su Create Vault.

image

 

 

Dopo che l'account di archiviazione è stato creato lo status passerà ad active e l'account sarà pronto ad essere utilizzato:

 

image

 

 

     b. Prima di poter registrare il server di cui vogliamo gestire il backup si deve caricare il certificato. Sulla barra dei comandi a centro pagina cliccare Manage Certificate e caricare il certificato (.cer) creato nel primo punto di questa guida.

 

image

 

 

4. Download e installazione di Windows Azure Online Backup Agent

Per poter eseguire il backup del server su Windows Azure è necessario prima scaricare e installare l'agente di backup sul vostro Windows Server 2012.

     a. Dalla Dashbord cliccare su Download Agent e scaricare l'agente relativo a Windows server 2012 e System Center 2012 SP1;

image

 

     b. Installare l'agente nel server eseguendo WABIstaller.exe:

       1. Verrà visualizzato l'avviso Informativa supplementare per il servizio. Fare clic su Accetto le condizioni del contratto di assistenza e quindi su OK per continuare l'installazione;

      2. Nella pagina Prerequisites Check verrà selezionato per l'installazione tutto il software mancante. Scegliere Next per confermare l'installazione del software prerequisito e continuare l'installazione;

image< /a>

      3. Nella pagina Installation Settings, specificare un valore nei campi Installation Folder e Cache Location per Windows Azure Online Backup. La cartella di installazione predefinita è <system drive>:\Program Files\Windows Azure Online Backup Agent. Per scegliere un nuovo percorso in cui creare la cartella Windows Azure Online Backup, fare clic su Browse. Durante il processo di installazione verrà creata una cartella denominata Scratch all'interno della cartella Agente di Windows Azure Online Backup Agent nel percorso della cache. Nel percorso della cache deve essere disponibile uno spazio minimo di 2,5 GB. Dopo avere identificato le cartelle che dovranno essere utilizzate dall'Windows Azure Online Backup Agent, fare clic su Next;

image

 

      4. Verrà visualizzata la pagina Installation. Quando l'installazione ha inizio viene visualizzato un indicatore di stato, che indica lo stato dell'installazione. Al termine dell'installazione, verrà visualizzato un messaggio per informare che l'installazione dell'Windows Azure Online Backup Agent è stata completata. A questo punto è possibile scegliere se verificare la disponibilità di aggiornamenti. È consigliabile consentire il controllo d egli aggiornamenti.

Fare clic su Finish. Se si è scelto di verificare la disponibilità di aggiornamenti, verrà avviato automaticamente Internet Explorer e verrà eseguito il controllo. Dopo l'installazione di eventuali aggiornamenti, è possibile iniziare a configurare l'Windows Azure Online Backup Agent.

image

 

 

5. Registrazione del server con Windows Azure Online Backup Agent

      a. Eseguire l'agente Windows Azure Backup appena installato e scegliere Register server dal menu Action per avviare la Registrazione guidata server; 

     b. Verrà visualizzata la pagina Proxy Configuration. Se si desidera che l'Windows Azure Online Backup Agent utilizzi un server proxy univoco per la connessione Internet, fare clic su Use a proxy server for Windows Azure Online Backup e quindi digitare l'URL del server proxy. Utilizzare il nome di dominio completo o l'indirizzo IP del server proxy, ad esempio http://proxy.corp.contoso.com oppure http://10.186.173.132, e il numero di porta del server configurato per le connessioni Internet.

image

 

Se il server proxy richiede l'autenticazione prima di consentire connessioni, fare clic su The proxy server requests authentication quindi digitare il nome utente e la password che l'Windows Azure Online Backup Agent dovrà inviare quando vengono richieste le credenziali. Scegliere Next per continuare;

    c. Verrà visualizzata la pagina Vault Identification. Caricate il certificato creato e specificate il Backup Vault di Windows Azure su cuoi volete che venga memorizzato il backup; 

                            image

 

  d. Verrà visualizzata la pagina Encryption Setting. In Enter Passphrase digitare una passphrase composta da almeno 16 caratteri per crittografare i backup dal server. Per creare una passphrase casuale, fare clic su Generate passphrase. In questa fase è necessario specificare una passphrase per proteggere la riservatezza del backup. È consigliato salvare una copia in locale di questa passphrase poiché non è possibile chiamare Microsoft in seguito per ottenere l'acces so ai vostri dati se dimenticate o perdete questa frase;

image

 

Dopo avere immesso la passphrase, fare clic su Register per iniziare il processo di registrazione del server. In caso di esito positivo, verrà visualizzato un messaggio di conferma della registrazione e sarà quindi possibile chiudere la procedura guidata.

 

  e. Programmare il backup cliccando su Scehdule Backup;

image

      f. Cliccate su Add Items per aggiungere i file e le cartelle per il backup;

 

image

 

    g. Cliccare Next e successivamente specificate quando dovrà essere effettuato il backup specificando per quanti giorni dovrà essere effettuato;

 

image

 

    h. Cliccare Finish e successivamente Close per completare la procedura;

 

image

 

 

 

 

 

Per ulteriori approfondimenti:

http://technet.microsoft.com/en-us/library/hh831419.aspx

http://msdn.microsoft.com/en-us/library/windowsazure/dn169036.aspx

http://msdn.microsoft.com/en-us/171fe77a-8686-4dd1-a45a-b44df729b40b


read full article

Backup di SQL Server 2012 su Windows Azure

E-mail Stampa PDF

A partire dall'aggiornamento cumulativo 2 di SQL Server 2012 SP1, è possibile fare il backup e il restore sul Blob Storage di Windows Azure, sfruttando le funzionalità native di SQL Server sia che esso sia on-premise all'interno dell'azienda o che sia ospitato all'interno di una Virtual Machine. Il database SQL, consente di creare, scalare ed estendere rapidamente le applicazioni localmente e nel cloud con strumenti familiari permettendo così di archiviare economicamente dati quali video, audio e immagini. L'esecuzione del backup nel cloud garantisce vantaggi quali disponibilità, archiviazione illimitata in una posizione esterna replicata a livello geografico e facilità di migrazione dei dati nel cloud. Questa funzionalità, introdotta in SQL Server 2012 SP1 CU2, consente di eseguire il Backup o Restore tramite T-SQL o SMO.

Ecco quindi una guida passo a passo che spiega come effettuare il backup dei database SQL Server 2012 su Windows Azure in soli 4 step.

1. Creazione dell'account di archiviazione su Windows Azure

Per creare un account di archiviazione dal portale di gestione di Windows Azure, attenersi ai passaggi seguenti:

a. Accedere al portale di gestione di Windows Azure con il proprio account:

 

image

 

b. Sulla barra dei comandi in fondo alla pagina del portale di gestione, scegliere New, quindi dalla voce Data Services scegliere Storage e poi Quick Create:

 

image

 

-  in URL, inserire il nome di un sottodominio da usare nell'URL dell'account di archiviazione;

-  in Region/Affinity Group, selezionare la regione/gruppo di affinità per l'archiviazione;

-  se non si desidera una geo-replica per il vostro account di archiviazione, spuntare la casella Enable Geo-Replication;

-  cliccare su Create Storage Account. Dopo che l'account di archiviazione è stato creato lo status sarà online ed è pronto ad essere utilizzato;

 

image

 

-  sulla barra dei comandi a centro pagina cliccare Manage Keys per visualizzare le informazioni sull'account. Copiare il nome dell'account di archiviazione e la chiave primaria di accesso. Queste informazioni sono necessarie per creare le credenziali di SQL Server utilizzate per accedere all'account di archiviazione e per creare il backup.

 

2

 

 

2. Creazione di un contenitore BLOB

I BLOB costituiscono il modo più semplice di archiviare grandi quantità di dati binari o testo non strutturato quali video, audio e immagini. Un contenitore fornisce un raggruppamento di un set di BLOB. Un account di archiviazione può contenere un numero illimitato di contenitori e in un contenitore è possibile archiviare un numero illimitato di BLOB.

Per creare un contenitore :

-  selezionare l'account di archiviazione appena creato, fare click sulla scheda Containers, quindi su Add Container nella parte inferiore della schermata in cui verrà visualizzata una nuova finestra di dialogo;

 

3

 

 

-  immettere il nome associato al contenitore;

-  selezionare Privato come tipologia di accesso. É consigliabile creare contenitori privati per proteggere i file di backup;

 

3. Creare le credenziali di SQL Server

Nelle credenziali di SQL Server sono archiviate le informazioni di autenticazione utilizzate da SQL Server per la scrittura o lettura di un BLOB nel servizio di archiviazione BLOB di Windows Azure.

Per creare le credenziali di SQL Server seguire i seguenti passaggi:

- connettersi a SQL Server Management Studio

 

image

 

-  in Object Explorer connettersi all'istanza del motore di database con il database a cui fare il backup;

-  sulla barra degli strumenti Standard cliccare New Query;

-  copiare e incollare l'esempio seguente nella finestra Query modificando il nome dell'account di archiviazione e la chiave primaria di accesso;

CREATE CREDENTIAL mycredential

WITH IDENTITY = '%mystorageaccount%',

SECRET        = '%storage account access key%';

 

     dove:

          '%mystorageaccount%' è il nome dell'account di archiviazione

          '%storage account access key%' è la chiave primaria o secondaria del vostro account di archiviazione

-  verificare l'istruzione T-SQL e fare click su Execute.

 

4. Backup completo del database nel servizio di archiviazione BLOB di Windows Azure

 

Per creare un backup completo del database attenersi ai passaggi seguenti:

-  da SQL Server Management Studio fare click su New Query sulla barra del menu;

-  copiare e incollare l'esempio seguente nella finestra Query, modificando le informazioni necessarie, quindi fare click su Execute

BACKUP DATABASE [dbName]

TO URL = 'http://mystorageaccount.blob.core.windows.net/blobcontainername/dbName.bak'

WITH CREDENTIAL = 'mycredential';

GO 

 

dove:

l'URL incl ude l'endpoint del servizio BLOB, seguito dal nome del contenitore e il nome del file di backup

e 'mycredential' sono le credenziali create nel passo precedente

 

-  in Object explorer, connettersi a Azure Storage. L'Account key richiesto è la chiave primaria o secondaria del vostro account di archiviazione.

 

image

Sfogliare per individuare il contenitore e il file di backup appena creato.

 

Infine per eseguire il restore da un backup del database attenersi ai seguenti passaggi:

-  da SQL Server Management Studio fare click su New Query sulla barra del menu;

-  copiare e incollare l'esempio seguente nella finestra Query, modificando le informazioni necessarie, quindi fare click su Execute;

RESTORE DATABASE dbName 

FROM URL = 'http://mystorageaccount.blob.core.windows.net/blobcontainername/dbName.bak'

WITH CREDENTIAL = 'mycredential';

GO

 

 

 

 

 

Per Approfondimenti:

· http://msdn.microsoft.com/en-us/library/jj919148.aspx


read full article

Windows Azure: IaaS ora disponibile

E-mail Stampa PDF

Da oggi i servizi IaaS di Windows Azure, che includono le Virtual Machine e le funzionalità di Virtual Network escono dallo stato di preview e sono rilasciati in produzione. Questo vuol dire che hanno uno SLA associato e sono ora ufficialmente supportati dal Supporto Microsoft.

Tra le novità di questo rilascio:

  • Nuove taglie per le macchine virtuali (dette "memory intensive") con 2 nuove opzioni da 28 GB e 58 GB di memoria.
  • Nuovi template disponibili per SQL Server 2012 (Standard e Enterprise), SharePoint 2013 e BizTalk Server (Evaluation, Standard e Enterprise)
  • Una riduzione di prezzi tra il 21% e il 33%, sui prezzi annunciati in precedenza, sia per le macchine virtuali che per i più tradizionali Cloud Services. A questo link trovate i nuovi prezzi delle macchine virtuali e le date da quando saranno disponibili.
  • Possibilità di creare private network con indirizzi IP persistenti. Le macchine all'interno della stessa network avranno lo stesso indirizzo anche in caso di un reboot per un hardware failure.
  • Remote PowerShell viene abilitato di default quando viene creata una VM con PowerShell. In questo modo è possibile lanciare uno script di bootstrap non appena la VM ha fatto il boot, così da semplificare il deploy senza dover fare il login alla macchina in modo interattivo.

Link utili:


read full article

Web e ASP.NET Live : da ASPITALIA

E-mail Stampa PDF

Il prossimo 16 Maggio la community ASPITALIA dedicherà un intero pomeriggio (dalle 14.30 alle 18.20) ad ASP.NET con una diretta web!

Ecco la lista delle sessioni ad oggi in programma:

  • Le novità di Visual Studio 2012 Web Tools Update 2012.2
  • Gestire i dati con ASP.NET Web Forms 4.5 e l'Update 2012.2
  • Social login con ASP.NET Web Forms 4.5 e ASP.NET MVC 4
  • Creare Single Page Application (SPA) con ASP.NET MVC
  • Sfruttare ASP.NET Web API al massimo
  • Creare applicazioni in real-time con ASP.NET SignalR

Un pomeriggio da non perdere; vi rimando sulla pagina del sito per l'agenda completa e l'iscrizione.

Happy coding!


read full article

Prossimi Dev Camp: Aprile e Maggio

E-mail Stampa PDF

Ecco le date dei prossimi Dev Camp su Windows 8, Windows Azure e Windows Phone

APRILE

  • Torino, 16 aprile Dev Camp con laboratorio Windows Azure
  • Roma, 18 aprile DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure
  • Napoli, 19 aprile DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure
  • Milano, 23 aprile DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure

MAGGIO

  • Venezia, 7 maggio DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure
  • Pisa, 9 maggio DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure
  • Perugia, 10 maggio DevCamp con laboratori su Windows 8, Windows Phone e Windows Azure

I link per la registrazione li trovate qui.

 

Inoltre se siete interessati allo sviluppo con Office e SharePoint


read full article

Guest Post: Introduzione al Kinect SDK v1.7

E-mail Stampa PDF

Questo post è stato scritto da Massimo Bonanni, MVP Visual Basic

In questo post daremo un'occhiata alle novità e i miglioramenti introdotti nella versione 1.7 dell'SDK rilasciata il 18 Marzo 2013.

Tra le novità più importanti troviamo:

  • Introduzione del KinectInteraction Framework, un insieme di classi e componenti che forniscono funzionalità di base per l'implementazione dell'interazione tra il device e le nostre applicazioni;
  • Miglioramento dell'engagement model, cioè della parte dell'SDK che si occupa di capire quale player è attualmente tracciato dal device e garantire che tale tracciamento sia quanto più consistente;
  • Kinect Fusion: permette di utilizzare il device come uno "scanner" 3D per disegnare a run-time modelli tridimensionali ripresi direttamente dal Kinect.

KinectInteraction Framework

KInectInteraction framework mette a disposizione dello sviluppatore una serie di componenti per gestire, appunto, l'interazione tra utente che utilizza il device e applicazione.

Nella seguente figura è rappresentata l'architettura del framework:

clip_image001

Possiamo utilizzare i tre differenti blocchi:

  • KinectInteraction Native API: sono API di basso livello (utilizzabili in C++), dedicate ad applicazioni particolari e con ben determinati requisiti non standard, che consentono di accedere a basso livello allo stream di interazione. Lo stream di interazione è un'altra delle novità introdotte con questa versione dell'SDK e si tratta di uno stream molto simile a quelli già forniti dal Kinect (Depth, Skeletal Tracking, ect., ect.) ma che contiene le informazioni di interazione dell'utente con l'applicazione;
  • KinectInteraction Managed API: sono le API .NET che wrappano le API native. Queste API forniscono la possibilità di accedere ai frame di interazione dell'utente con l'applicazione ad un livello più astratto rispetto alle API native;
  • KinectInteraction Controls: sono controlli managed (WPF) che implementano già un'interazione grafica con l'utente all'interno della nostra applicazione.

Il KinectInteraction Framework introduce tutta una serie di nuove funzionalità e concetti nuovi non presenti nelle versioni precedenti dell'SDK.

Una nuova funzionalità è la possibilità di tracciare delle mani dell'utente: il framework utilizza lo skeletal tracking e il depth stream per recuperare lo stato delle mani dell'utente.

Viene definito il concetto di Physical Interaction Zone (PhIZ), cioè di una mappatura tridimensionale tra lo spazio fisico davanti all'utente e lo spazio logico che lo sviluppatore può utilizzare definire le interazioni ed esiste un PhIZ per ogni mano dell'utente, per ogni utente tracciato (quindi fino a 2 in questo momento). Praticamente PhIZ è la zona attiva in cui la maggior parte delle interazioni sono attive.

Il framework è in grado di tracciare le mani di ogni utente (fino a due). Nel momento in cui davanti al Kinect sono presenti due utenti, uno di questi viene "designato" come primario (tipicamente il primo che viene rilevato dal sensore). Questo utente mantiene il controllo dell'interazione con l'applicazione fi no a che il sistema stesso non è più in grado di rilevare lo stesso. All'utente primario viene assegnata una mano principale con cui gestisce l'interazione con il sistema. L'utente è in grado di gestire l'interazione solo con tale mano anche se può cambiare la mano primaria semplicemente portandola al di fuori della PhIZ e portando dentro la PhIZ l'altra mano.

In questa versione dell'SDK, il framework fornisce, "di serie" le seguenti interazioni:

  • Grip and Release: la gesture di grip si ottiene nel momento in cui l'utente pone la propria mano aperta con il palmo rivolto al sensore e la chiude a pugno. Il release è ottenuto aprendo il pugno. Può essere utilizzata in associazione con il controllo Kinect Scroll Viewer per fornire l'interazione di Grip and Scroll ma anche con altri controlli di interfaccia;
  • Press : il press si ottiene quando l'utente pone la propria mano con il palmo rivolto al sensore e il braccio leggermente piegato verso se ed estende il braccio stesso avvicinando il palmo al sensore;
  • Scroll : lo scroll viewer permette di fornire all'utente la capacità di scorrere liste di oggetti utilizzando, ad esempio, il grip.

Kinect Fusion

Kinect Fusion permette di utilizzare il device come uno scanner tridimensionale per il "disegno" di modelli 3D riprendendo direttamente l'oggetto fisico.

Per poter utilizzare Kinect Fusion sulla propria macchina occorrono delle specifiche hardware ben precise. In particolare occorre un processore multi-core a 3Ghz con una scheda grafica con almeno 2Gb di memoria dedicata (il software del Fusion si basa sulla potenza della GPU per il disegno a runtime). Le schede su cui il Fusion è stato testato sono la NVidia GeForce GTX560 e la AMD Radeon 6950. Fusion dovrebbe funzionare con tutte le schede "superiori" rispetto a quelle elencate.

Dal punto di vista software, richiede DirectX11.

Kinect Fusion utilizza il depth stream e basa il proprio al goritmo (del quale non parleremo in dettaglio qui) sulle variazioni di profondità tra un fotogramma ed il successivo (ad esempio ottenute muovendo il device come un "pennello").

Interessante è la possibilità di esportare i modelli realizzati secondo alcuni degli standard di modellazione esistenti.

Maggiori informazioni sono disponibili all'indirizzo http://msdn.microsoft.com/en-us/library/dn188670.aspx

Human Interface Guidelines

Assieme all'aggiornamento dell'SDk, Microsoft ha rilasciato anche la nuova versione della Human Interface Guidelines, la guida relativa al corretto utilizzo del Kinect nella realizzazione delle interfacce NUI.

La guida è stata rivista alla luce delle gesture previste in questo nuovo SDK.

Aggiornamento da 1.6 a 1.7

L'aggiornamento dell'SDK e del developer toolkit si fa semplicemento lanciando l'installazione della nuova versione che sostituisce la vecchia senza creare problemi.

Il codice scritto per la versione 1.6 funziona ancora per la versione 1.7 con l'unico accorgimento (non sempre necessario) di dover referenziale la nuova dll.


read full article

Guest post: Differenze tra Source Control centralizzato e distribuito

E-mail Stampa PDF

Questo post è stato scritto da Gian Maria Ricci, MVP Visual Studio ALM. Ed è il primo di una serie. Potete trovare altre informazioni sull'argomento su getlatestversion.it

Sistemi di Version Control System centralizzati

Tradizionalmente un VCS (Version Control System) è un sistema di gestione di file, che prevede un server centrale dove viene manutenuto lo storico di tutte le modifiche solitamente chiamato repository. Questo modello si basa sull'assunzione che le modifiche al repository non vengano effettuate direttamente nel server, ma tramite creazione di copie del repository stesso, fatte nei computer locali degli sviluppatori, le quali vengono modificate e poi sincronizzate con il server centrale quando necessario.

Nel gergo di Team Foundation Server le copie locali vengono chiamate workspace, la loro identità è costituita da tre valori: nome computer / nome utente / percorso locale, in questo modo un utente può avere più workspace in una o più macchine ed avere più copie distinte del server centrale.

clip_image001

Le modalità di lavoro supportate dai vari VCS possono variare, ma si racchiudono tutte in un flusso di lavoro che può essere semplicemente rappresentato in questo modo .

clip_image003

· GetLatest: Viene contattato il server e viene scaricata in locale l'ultima versione dei sorgenti, la copia locale è cosi allineata al repository

· Modifica: Vengono modificati i file in locale

· GetLatest: Prima di inviare i file al server, viene ricontattato il server e riaggiornato con eventuali modifiche che possono essere state inviate da altri durante la fase di modifica

· Conflitti: Se le nostre modifiche riguardano file che sono stati modificati anche da altri è necessario risolvere i conflitti.

o Se non ci sono conflitti si procede tranquillamente

o Se ci sono conflitti, una volta risolti, si effettua nuovamente un GetLatest fino a che non vi sono più conflitti

· Check-in: Invio dei file modificati al repository

Il VCS di TFS supporta attualmente due tipi di workspace (ricordate che worspace = copia locale) chiamate Server Workspace e Local Workspace. Senza entrare in dettaglio nello specifico funzionamento, le differenze sostanziali sono nel modello di lavoro supportato.

Nel workspace server, prima di poter modificare un file è necessario informare il repository attraverso una operazione di check-out. In questo modo si può conoscere in ogni momento chi sta modificando quale file ed è possibile anche mettere lock sui file impedendo agli altri di iniziare una modifica; ad esempio se si sta modificando un file su cui è impossibile risolvere conflitti (Es. un immagi ne). Tutti i file nel workspace hanno l'attributo read-only, e solamente dopo che è stata effettuata correttamente l'operazione di check-out nel server, il read-only viene rimosso ed il file può essere modificato. Gli strumenti integrati come Visual Studio effettuano queste operazioni in modo trasparente quando si inizia ad editare un file. Questo modello di lavoro viene detto check-out / check-in.

Questo modello è poco efficiente per lavorare offline, dato che non è possibile contattare il server per iniziare le operazioni di modifica e naturalmente quando si lavora con strumenti non integrati in TFS (es. Photoshop); tali strumenti non sono infatti in grado di contattare il server per il check-out e rimuovere il readonly dal file. In questo ultimo scenario si usano solitamente i TFS Power Tools, che comprendono un integrazione con l'esplora risorse di Windows che permette di eseguire queste operazioni al di fuori di Visual Studio.

Nei workspace client il modello di lavoro viene invece detto edit / commit dato che non esiste un contatto continuo con il server. I file non sono read-only, e possono essere modificati senza problemi con qualsiasi programma (fase edit). Quando si vuole inviare i file al repository, il server viene contattato, viene verificato quali sono i file che sono stati editati localmente (il workspace tiene traccia di queste info in una cartella nascosta chiamata $tf) ed i file sono poi inviati al server (fase commit).

Questo modello è più intuitivo, supporta scenari offline e di lavoro con strumenti non integrati, ma si perde la possibilità di sapere chi sta lavorando a quale file ed i lock in check-out. Ovvero non è possibile impedire di iniziare a modificare un file (non esiste contatto con il server per il check-out), ma è solamente possibile impostare un lock di check-in, ovvero impedire che qualcuno invii un file al server.

Sistemi distribuiti

Il modello c entralizzato non è adatto per tutti gli scenari, in particolar modo ha delle mancanze che in alcune situazioni possono rendere difficile il lavoro di tutti i giorni.

· Lavoro offline

· Parti di team che lavorano senza avere accesso al server centrale

Oltre queste mancanze, alcuni scenari possono essere comunque gestiti da un VCS centralizzato, ma in modo limitato o inefficiente

· Team altamente distribuiti

· Codice sorgente altamente modulare

Per questa ragione negli ultimi anni è emerso un nuovo modello di VCS chiamato "distribuito" il cui paradigma di base è molto differente da quello centralizzato. Mentre un VCS centralizzato ha un server centrale e una serie di copie locali nei computer degli utilizzatori, che vengono periodicamente sincronizzate con il server, in un VCS distribuito tutti gli utilizzatori hanno un repository locale, ed il sistema permette di sincronizzare i vari repository tra loro. In un distribuito quindi i flussi di lavoro possono essere molteplici e gli scenari supportati sono molto più vasti e spesso complessi.

Per evitare di perdersi, soprattutto se si viene da anni di uso di un VCS centralizzato, è opportuno approcciare un VCS distribuito con molto pragmatismo:

· Studiare bene lo strumento scelto

· Verificare i modelli supportati

· Scegliere un modello ed attenersi a quello

Il rischio maggiore infatti è quello di andare fuori controllo, dato che ogni utilizzatore può decidere di sincronizzare il proprio lavoro con il repository di chiunque altro, creando quindi una delocalizzazione completa dei sorgenti. Un altro errore tipico è approcciare un VCS distribuito allo stesso modo in cui si approccia un centralizzato e quindi attendersi gli stessi comportamenti. La chiave di volta è sempre essere coscienti che si sta lavorando con uno strumento differente adatto a risolvere scenari differenti.

L'Abc di Git

Tra i VCS distribuiti (da qui in poi DVCS) negli ultimi anni sicuramente Git è emerso su tutti gli altri, soprattutto grazie al supporto per l'opensource fornito da GitHub. Per questa ragione il team di Team Foundation Server ha deciso di fornire supporto DVCS in TFS integrando Git, invece di sviluppare un DVCS custom. Attualmente l'opzione Git è disponibile solamente per chi usa TF Service (http://tfs.visualstudio.com), ma in futuro sarà comunque disponibile anche per chi deciderà di usare TFS on-premise.

Premettendo che non sono un utilizzatore con anni di esperienza su Git, posso fin da subito affermare che il modo peggiore di approcciare questo strumento è tentare di usarlo come si usa un normale VCS centralizzato. Vediamo quindi l'ABC di come sia possibile usare git con i tool di Visual Studio 2012 Update 2, tenendo sempre in considerazione che alcune operazioni debbono essere fatte in command line.

Supponiamo di avere creato un repository Git su TF Service, navigando sul tab CODE dall'interfaccia web è possibile notare un icona a destra che permette di recuperare l'indirizzo del repository.

clip_image005

È possibile a questo punto fare clone da riga di comando se avete installato Msysgit (https://code.google.com/p/msysgit/) usando il comando suggerito (git clone https://.....), oppure installare l'Update2 di Visual studio 2012 ed installare l'integrazione di Git con il Team Explorer (http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c) a questo punto connettersi al Team Project e nel Team Explorer avrete la possibilità di fare clone direttamente dalla UI di VS2012.

clip_image006

L'operazione di clone effettua due macro-operazioni distinte, la prima è creare nella cartella locale una copia del repository presente in TF Service e la seconda è configurare un remote per la sincronizzazione.

È comunque bene fin da subito fare familiarità con la riga di comando, perché data la complessità di Git, solamente un sottoinsieme dei comandi è disponibile nella UI di Visual Studio (potete trovare dettagli ulteriori qui http://blogs.msdn.com/b/visualstudioalm/archive/2013/03/08/use-the-git-command-prompt-to-supplement-visual-studio.aspx).

Per usare la command line in modo efficace, una volta installato Msysgit basta selezionare una cartella con un repository locale, fare tasto destro e scegliere Git bash here.

clip_image007

A questo punto avete una bash che permette di lavorare in riga di comando sul repository, è utile appena avete installato msysgit definire alcuni alias, ad esempio

git config --global alias.logf "log --graph --oneline --all --decorate"

questo alias non fa altro che creare un nuovo comando fittizio chiamato logf per fare log del repository con alcune opzioni di default, senza dovere ogni volta digitare tutto il comando. Il parametro --global applica questa configurazione al settaggio globale per cui sarà poi disponibile per tutti i repository dell'utente.

A questo punto digitando

git logf

viene effettuato il log del contenuto del proprio repository.

clip_image008

L'aspetto interessante è che l'operazione di clone ha scaricato tutta la storia del repository e nel proprio hard disk locale è presente una copia esatta del repository remoto di TF Service.

Aprendo da Visual Studio una solution presente nel repository, si può notare come siano presenti le stesse icone di quando il progetto è connesso a TFS, per cui si può semplicemente iniziare ad editare i file e lavorare in maniera normale.

clip_image009

Come potete vedere nella figura sopra, il file UnitTest1 è stato modificato e questo viene indicato da un semplice segno di spunta, assolutamente identico a quando si è connessi al VCS standard di TFS. La reale differenza si ha quando si vuole inviare le modifiche al repository, in questo caso nel menu del Team Explorer trovate un menu differente, dato che siete connessi ad un repository Git.

clip_image010

In questo menu potete premere Changes per visualizzare i file modificati che debbono essere committati, in maniera analoga alla finestra Pending Changes che si ha usando il normale VCS di TFS. A questo punto basta inserire un commento e premere Commit per effettuare il commit nel proprio repository locale (e non in TF Service). Questo fatto è molto importante, in un DVCS quando si effettua un commit lo si fa nel proprio repository locale e la sincronia con eventuali repository remoti viene invece effettuata da una schermata differente. Questo permette di lavorare localmente, anche offline se necessario, e sincronizzare solamente quando si vuole che il resto del team veda le modifiche effettuate.

Una volta effettuato il commit potete tornare alla home del Team Explorer e scegliere il link Commits

clip_image011

Come potete vedere viene listato il commit appena effettuato nella sezione Outgoing Commits ad indicare che è un commit locale e deve ancora essere inviato al server. Questa sincronia viene fatta con una operazione detta Push, potete infatti verificare che immediatamente al di sopra del commit è presente un link Push, operazione che invia le modifiche al TF Service.

Prima di effettuare push potete effettuare un git logf da riga di comando per vedere lo stato del repository locale

clip_image012

Questa immagine è molto interessante, in rosso viene infatti mostrata la posizione attuale della branch master (è la branch principale che esiste di default) nel server remoto (di default i server remoti vengono chiamati origin). In questo modo si indica che la origin/master, ovvero il repository remoto di TF Service, è attualmente posizionata al commit 1d200e8 mentre la versione locale (HEAD, master) è avanti di un commit.

In git ogni commit è infatti identificato da un hash del commit stesso, questo significa che non avete un flusso lineare di changeset, ma soprattutto che non avete un flusso lineare di tutto il repository, data app unto la natura distribuita del tool e la possibilità per chiunque di fare commit sul proprio repository locale e sincronizzare poi con qualsiasi altro repository.

Nota per gli utilizzatori di git: se come me usate già git per altri progetti, es github, è probabile che i vostri tool siano già settati con l'utente di github, se osservate la figura precedente, noterete che l'utente che ha effettuato il checkin si chiama alkampfergit che è il mio utente di github, e soprattutto che l'immagine dell'utente non viene rappresentata, nonostante in TF Service il mio profilo abbia un'immagine. Questo accade perché la configurazione globale di git è stata precedentemente configurata con quell'utente, e dato che Visual Studio e TF Service utilizzano una versione completamente standard di git, durante il commit viene usato l'utente globale impostato. Questo significa che dopo avere fatto il primo clone di Visual Studio dovete settare username ed email corrette, ad esempio da riga di comando

clip_image013

Naturalmente è possibile anche impostare questi valori andando nella sezione settings del team explorer, che ha una nuova sezione chiamata git, nella quale trovate Git Settings che vi permette di configurare i settaggi da Visual Studio. La maniera migliore di configurare git rimane però sempre la riga di comando :), anche perché come potete vedere sotto Visual Studio vi permette di configurare i Global Settings, mentre se si lavora con più server, è consigliabile che ogni repository abbia la sua corret ta configurazione locale.

clip_image014

Questo problema accade perché i tool di VS sono ancora in beta, e quindi sono ancora leggermente acerbi. L'opzione interessante è comunque la "enable donwload of Author images from 3rd party source" che permette di recuperare le immagini dell'autore anche dai repository di terze parti come github (ad esempio usando gravatar)

Ora che avete riconfigurato correttamente il vostro username e password localmente, potete modificare nuovamente un file, ed effettuare un secondo commit.

clip_image015

Come potete vedere il primo commit ha ora l'immagine (si usa gravatar), ed il secondo commit riporta l'autore corretto, alkampfer, invece di quello di github presente nel commit precedente. Premendo push invierete le modifiche al server,e se non ci sono conflitti, avete sincronizzato il repository remoto con quello locale.

Come potete vedere dalla figura seguente, che rappresenta la visione del sorgente dall'interfaccia web, entrambi i commit sono stati inviati al server, ma il primo non ha immagine, ed è associato al mi o utente di github.

clip_image016


read full article

Pagina 15 di 49

 
 
 
 
Certificazioni