Introducción
Hoy vamos a crear nuestra primera aplicación usando Service Fabric. Para ello vamos a necesitar:
- Visual Studio 2015 (puedes descargar y usar la versión Community en forma gratuita en https://www.visualstudio.com).
- El SDK de Service Fabric (este post está creado con la versión 2.1.163), que podemos instalar desde el Web Platform Installer.
Vamos al código
Lo primero que necesitamos es lanzar Visual Studio 2015 como Administrador (esto es porque necesitamos permisos de administrador para lanzar el clúster de pruebas local en el cual correremos el ejemplo).
Luego creamos nuestra aplicación, HelloWorldApplication:
Y agregamos un Stateless Service, HelloWorldService:
Esto nos genera una solución con dos proyectos: HelloWorldApplication para la aplicación de Service Fabric y HelloWorldService para el servicio.
Un Stateless Service simplemente tiene que heredar de StatelessService
. El código que nos genera automáticamente el SDK es el siguiente:
using System; | |
using System.Collections.Generic; | |
using System.Fabric; | |
using System.Linq; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using Microsoft.ServiceFabric.Services.Communication.Runtime; | |
using Microsoft.ServiceFabric.Services.Runtime; | |
namespace HelloWorldService | |
{ | |
/// <summary> | |
/// An instance of this class is created for each service instance by the Service Fabric runtime. | |
/// </summary> | |
internal sealed class HelloWorldService : StatelessService | |
{ | |
public HelloWorldService(StatelessServiceContext context) | |
: base(context) | |
{ } | |
/// <summary> | |
/// Optional override to create listeners (e.g., TCP, HTTP) for this service replica to handle client or user requests. | |
/// </summary> | |
/// <returns>A collection of listeners.</returns> | |
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() | |
{ | |
return new ServiceInstanceListener[0]; | |
} | |
/// <summary> | |
/// This is the main entry point for your service instance. | |
/// </summary> | |
/// <param name="cancellationToken">Canceled when Service Fabric needs to shut down this service instance.</param> | |
protected override async Task RunAsync(CancellationToken cancellationToken) | |
{ | |
// TODO: Replace the following sample code with your own logic | |
// or remove this RunAsync override if it's not needed in your service. | |
long iterations = 0; | |
while (true) | |
{ | |
cancellationToken.ThrowIfCancellationRequested(); | |
ServiceEventSource.Current.ServiceMessage(this, "Working-{0}", ++iterations); | |
await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken); | |
} | |
} | |
} | |
} |
Para nuestro ejemplo, modificamos la función RunAsync, insertando el siguiente código:
protected override async Task RunAsync(CancellationToken cancellationToken) | |
{ | |
while (!cancellationToken.IsCancellationRequested) | |
{ | |
ServiceEventSource.Current.ServiceMessage(this, "Hello World at " + DateTime.Now.ToLongTimeString()); | |
await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken); | |
} | |
} |
Sólo nos queda ejecutar nuestra aplicación de manera local presionando F5. Esto lanzará el emulador local y ejecutará nuestra aplicación (paciencia, esto puede demorar varios minutos la primera vez).
Podemos ver los resultados de nuestra ejecución en la pantalla de Diagnostic Events (si no la tenemos abierta, se puede abrir desde View -> Other windows -> Diagnostic Events).
¡Con esto hemos creado nuestra primera aplicación con Service Fabric! No hace nada útil, pero nos sirve para entender la estructura y cómo ejecutar las aplicaciones.
La solución completa está disponible en GitHub.