2014-06-17 17 views
5

Sto scrivendo un'applicazione che verrà distribuita sia al cloud che ai data center on-premise (per quei clienti che, essenzialmente, non si fidano ancora del cloud con i loro datiÈ un ruolo di lavoro di Azure per una soluzione in locale disponibile tramite Windows Azure Pack o App Fabric

Se scelgo di passare a MS Azure, posso utilizzare i nuovi tipi di progetti cloud con i loro ruoli Web e Worker. Ma come posso ottenere i ruoli dei lavoratori in esecuzione per l'on- premessa variante?

devo scrivere il mio host (diciamo come servizio di Windows)? Questo non è l'ideale in quanto richiede il codice e la distribuzione aggiuntivo.

Esiste un approccio compatibile con Azure, ad esempio nel pacchetto Windows Azure o nel materiale App Fabric (è ancora presente App Fabric?) Che non richiede la configurazione completa del cloud privato?

risposta

4

Questo non esiste in Azure Pack.

Non è necessario provare e avere un ruolo di lavoratore in premessa. Tutto quello che devi fare è avere una macchina virtuale su cui installi un servizio Windows.

È facile creare un servizio di Windows utilizzando Topshelf.

distribuzione di un servizio Windows con TopShelf è in realtà molto più facile di implementazioni per i ruoli dei lavoratori, perché basta eseguire il file EXE si crea con il install e poi con i start argomenti.

Per questo motivo è necessario meno codice rispetto a un ruolo di lavoro poiché non è necessario un secondo progetto wrapper.

+0

Se si sta tentando di eseguire lo stesso codice nel cloud e in locale, è comunque possibile creare un'applicazione della console del servizio Windows e quindi distribuirla in un ruolo Web (come un Ruolo del lavoratore a tutti gli effetti) utilizzando qualcosa come [AzureWebFarm.OctopusDeploy] (https://github.com/MRCollective/AzureWebFarm.OctopusDeploy), oppure è possibile distribuire l'applicazione della console come un lavoro Web (che probabilmente è disponibile in AzurePack e, in caso contrario, un .exe di TopShelf viene eseguito come un normale exe comunque senza argomenti). –

+0

La cosa bella quindi non è mai necessario fare riferimento a ServiceRuntime o utilizzare RoleEnvironment o altre cose specifiche di Azure: il codice è agnostico su dove è distribuito :)) –

0

Anche se non ho utilizzato Windows Azure Pack prima sembra in grado di fornire questa funzionalità internamente, tuttavia i requisiti e le procedure di installazione sono intensi e sono certamente orientati all'impresa.

Un'opzione migliore è quella di creare un'app console che attiva le funzioni OnStart() e Run() per WorkerRole in base all'utilità di pianificazione del sistema operativo.

Non troppo lavoro a mio parere e puoi mantenere i tuoi WorkerRoles così com'è, ma aggiungi l'app per console per qualsiasi soluzione on-premise.

+0

Generalmente si utilizza RoleEnvironment nel metodo OnStart ed Esegui in modo che non funzioni. –

+0

È possibile utilizzare il valore booleano RoleEnvironment.IsAvailable per passare da ciò che si fa dipende da dove ci si trova (ad esempio, Azure o Local) –

+0

Sì. Ma ciò richiede l'installazione di Azure SDK per un'installazione onpremise che di solito non si desidera. –

Problemi correlati