2010-05-26 5 views
15

Come è possibile rilevare l'affidabilità se la mia applicazione Azure è in esecuzione in fabric di sviluppo e non in 'the cloud'?Come rilevare che l'applicazione azzurra è in esecuzione nel fabric di sviluppo?

RoleEnvironment.IsAvailable è valido per entrambi. Voglio qualcosa che sia vero in un solo caso.

Lo chiedo perché voglio che gli utenti della mia libreria siano in grado di utilizzare gratuitamente la mia libreria in fabric. Quindi inserire manualmente un identificatore o flag separato nel file di configurazione e mantenere due configurazioni per dev e deploy non è fattibile.

risposta

20

Un'opzione è dare un'occhiata a RoleEnvironment.DeploymentId - se si sta eseguendo nel fabric dev, dovrebbe avere un nome come "deployment (n)" dove n è un numero sequenziale. Se stai lavorando in produzione, l'ID di distribuzione dovrebbe assomigliare a una guida.

Un'altra cosa che puoi fare è osservare il nome dell'istanza di un ruolo. In produzione, dovrebbe terminare in _0 (che rappresenta l'istanza 0). Nel fabric di sviluppo, terminerà in .0

EDIT 1/8/2013 - ho capito che questa risposta che ho dato più di 2 anni fa è abbastanza obsoleta! Ora c'è anche - controlla i dettagli here.

+1

+1 per l'aggiornamento della risposta – Tom

3

Ad esempio:

Il tessuto di sviluppo non simula completamente il comportamento del bilanciamento del carico di Windows Azure. Ad esempio, se il codice in esecuzione in un'istanza del ruolo Web chiama il metodo SetBusy dal gestore eventi RoleEnvironment.StatusCheck per indicare che l'istanza del ruolo deve essere esclusa dalla rotazione del bilanciamento del carico, sarà comunque possibile accedere al proprio ruolo dal proprio browser mentre il suo stato è RoleInstanceStatus.Busy.

anche in tessuto azzurro viene eseguito normalmente in one of the few fixed OS Images. Quindi puoi anche investigare su System.Environment. per alcuni modelli che si verificano solo in tessuto azzurro (ad esempio, versione del sistema operativo specifica che corrisponde al sistema operativo Windows Azure o qualcosa del genere).

1

C'è una tecnica molto semplice che uso da un po '- e mi trovo a usarla spesso. Il trucco è impostare una variabile di ambiente sulla macchina di sviluppo e utilizzare le tecniche di base del file batch DOS (o PowerShell), saltare sopra le cose che non si desidera se tale variabile è presente. Questa variabile d'ambiente non sarà presente nel cloud.

ho bloggato su di esso qui: Azure FAQ: Can I create a Startup Task that executes only when really in the Cloud?

16

Windows Azure SDK 1.5 ha introdotto la proprietà static bool RoleEnvironment.IsEmulated per determinare dal codice se l'istanza ruolo è in esecuzione in calcolo emulatore di Windows Azure. Queste informazioni possono essere passate anche alle attività di avvio. C'è un grande articolo di Steve Marx here a riguardo.

+1

Tuttavia non è affidabile poiché si basa solo su Variabile d'ambiente e per chi vuole ignorare le licenze in base a questo controllo dovrebbe essere facilmente in grado di impostare questa variabile e quindi l'IsEmulato restituirebbe true . –

Problemi correlati