# service AdminAxway

## Introducción
Solución en c# para servicios gRPC .NET Core 6 conectado al API Manager de Axway para la creación, suministro y administración de licencias.

## Requisitos 

- [SDK de NET 6.0 para Linux, macOS y Windows](https://dotnet.microsoft.com/es-es/download/dotnet/6.0)  **Obligatorio**
- [Visual studio 2022 para macOS y Windows](https://visualstudio.microsoft.com/es/vs/)  **Opcional**
- [Visual 2022 para Linux, macOS y Windows](https://visualstudio.microsoft.com/es/vs/)  **Opcional**

Se considera obligatorio el SDK ya que es necesario para compilar y ejecutar este proyecto.

## Debug
A considerar que el proyecto actualmente no tiene habilitados los certificados OpenSSL.
Cuenta con proyecto tipo cliente para pruebas de consumo.
El guardado en base de datos se ejecuta bajo el supuesto de no contar con user_id.

## Contenido
La solución cuenta con tres proyectos: DAO, servidor y cliente, este último tiene definido por defecto el consumo del servicio de contratación de licencias, para probar otro servicio es necesario editar y recompilar el proyecto.


### Terminal/Línea de comandos

En este método tendremos que compilar y ejecutar de manera individual cada proyecto comenzando por el servidor.

Una vez clonado el repositorio ejecutamos lo siguiente:

Primero comprobar la versión de SDK, si el comando no es reconocido es debido que no se instaló correctamente el SDK
```
dotnet –version 
```


En caso de no ser alguna versión 6.x.x, listamos las versiones instaladas
```
dotnet --list-sdks
```


Utilizaremos el número de cualquier versión 6.x.x. para armar el siguiente comando:

```
dotnet new globaljson --sdk-version 6.0.405 –force
```

Y revisamos que se este utilizando cualquier versión 6.x.x

```
dotnet –version
```
 
Nos ubicamos en la carpeta de servidor, compilamos y después ejecutamos.

```
cd server
dotnet build
donet run
```

Nota: Si en el momento de ejecutar el proyecto genera un error de que no ubica algunos de los certificados, se deberá copiar los certifcados de la ruta raíz a la ruta donde esté buscando, esto varia en cada sistema operativo.


Repetimos los pasos para el proyecto de cliente.

```
cd ..
cd client
dotnet build
donet run
```
Nota: El problema más común que se presento fue relacionado a los puertos, ya sea para iniciar el servidor o conectarse desde cliente, se recomienda cambiarlos a otros disponibles en el sistema operativo correspondiente. Para cambiarlos es en el archivo Program.cs el cual se encuentra en raíz de las carpetas server y client.

## Ejecución contenedores 

Una vez validado la funcionalidad con los pasos anteriores, procederemos a crear la imagen, nos ubicamos en la carpeta servidor para compilar y publicar.

 ```
cd server
dotnet build 
dotnet publish
```

El comando dotnet build es opcional si ya lo has ejecutado anteriormente, se recomienda en caso de una modificación al código o si no se ha utilizado por primera vez.

Dentro de la carpeta server se encuentra el archivo Dockerfile, procederemos acrear la imagen y posteriormente ejecutar el contenedor.

```
docker build -t server-image -f Dockerfile .   
docker run -p 50051:50051 -p 443:443 --name server server-image  
```
El cliente no es necesario que este en un contenedor, con ejecutarlo locamente podremos acceder al contenedor del servidor. 

```
cd ..
cd client
dotnet build
donet run
```

Nota: El problema más común que se presento fue relacionado a los puertos, ya sea para iniciar el servidor o conectarse desde cliente, se recomienda cambiarlos a otros disponibles en el sistema operativo correspondiente. Para cambiarlos es en el archivo Program.cs el cual se encuentra en raíz de las carpetas server y client.

## Visual studio 2022

Abrimos el archivo "Axway servicesAdminC.sln”, esta es la solución del proyecto, al cargar el proyecto seleccionamos el proyecto (Server o client) e iniciamos en el botón de ejecutar ▷, para ejecutar ambos de manera simultánea daremos clic derecho en nombre de la solución y seleccionamos "Establecer proyectos de inicio", creamos una nueva configuración y marcamos los dos proyectos.

Otra manera para ejecutar de manera simultánea es dar clic derecho en nombre del proyecto y seleccionar “Iniciar depuración” y después repetir paso con el proyecto faltante, se recomienda primero inicializar el servidor.

Nota: Si en el momento de ejecutar el proyecto genera un error de que no ubica algunos de los certificados, se deberá copiar los certifcados de la ruta raíz a la ruta donde esté buscando, esto varia en cada sistema operativo.
