{"id":21565216,"url":"https://github.com/mastercloudapps-projects/dotnetfullmasterstack","last_synced_at":"2026-02-16T15:03:39.659Z","repository":{"id":55473980,"uuid":"277551159","full_name":"MasterCloudApps-Projects/DotNetFullMasterStack","owner":"MasterCloudApps-Projects","description":"Todas las partes del máster implementadas con tecnologías -Net y afines","archived":false,"fork":false,"pushed_at":"2022-12-08T11:43:55.000Z","size":2960,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T13:25:35.458Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MasterCloudApps-Projects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-06T13:35:50.000Z","updated_at":"2022-01-30T08:36:35.000Z","dependencies_parsed_at":"2023-01-25T12:45:52.063Z","dependency_job_id":null,"html_url":"https://github.com/MasterCloudApps-Projects/DotNetFullMasterStack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MasterCloudApps-Projects/DotNetFullMasterStack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterCloudApps-Projects%2FDotNetFullMasterStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterCloudApps-Projects%2FDotNetFullMasterStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterCloudApps-Projects%2FDotNetFullMasterStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterCloudApps-Projects%2FDotNetFullMasterStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MasterCloudApps-Projects","download_url":"https://codeload.github.com/MasterCloudApps-Projects/DotNetFullMasterStack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MasterCloudApps-Projects%2FDotNetFullMasterStack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29510525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T10:18:53.071Z","updated_at":"2026-02-16T15:03:39.643Z","avatar_url":"https://github.com/MasterCloudApps-Projects.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DotNetFullMasterStack\nEl [máster Cloud Apps](https://www.codeurjc.es/mastercloudapps/) tiene como objetivo el adquirir conocimientos que permitan desarrollar y desplegar aplicaciones de internet utilizando las últimas tendencias del sector. \n\n- [Introducción](#introducción)\n- [Herramientas necesarias](#herramientas-necesarias)\n- [ASP.NET](#aspnet)\n  * [ASP.NET Web Apps](#aspnet-web-apps)\n  * [ASP.NET Web APIs](#aspnet-web-apis)\n- [Testing](#testing)\n- [Persistencia - EntityFramework (EF)](#persistencia---entityframework--ef-)\n- [Feature toggle - Esquio](#feature-toggle---esquio)\n- [ARM (Azure resource manager)](#arm--azure-resource-manager-)\n- [Azure functions](#azure-functions)\n- [Microservicios](#microservicios)\n- [Tye](#tye)\n- [Container instances (ACI)](#container-instances--aci-)\n- [AKS](#aks)\n- [Integración y despliegue continuo](#integración-y-despliegue-continuo)\n\n# Introducción\nEn el recorrido del master se han utilizado tecnologías como java, node, AWS,…. El objetivo trabajo fin de máster es el analizar e implementar varias partes del master con tecnologías .net y afines.\n\nA no ser que se indique lo contrario, todas las librerías indicadas en la memoria son open source y son soportadas por [.net Foundation.](https://dotnetfoundation.org/)\n\nSe han desarrollado cuatro microservicios: customer, kitchen, ordering y restaurant utilizando [ASP.NET Web APIs](https://dotnet.microsoft.com/apps/aspnet/apis). En todos se han incluido unit test y test funcionales con [xUnit](https://xunit.net/), [Moq](https://github.com/Moq/moq4/wiki/Quickstart) y [Coverlet](https://github.com/coverlet-coverage/coverlet). Con [entity framework](https://docs.microsoft.com/en-us/ef/) estos microservicios leen y almacenaman información en un servidor de base de datos [SQL server](https://www.microsoft.com/sql-server)\n\nLos micros se han integrado con el stack [Spring Cloud Netflix](https://spring.io/projects/spring-cloud-netflix) haciendo uso de la libreria [Steeltoe](https://steeltoe.io/), por último se ha desarrollado una aplicación web basada en [blazor](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor)  \n\n![Diagram](./docs/imgs/diagram.png)\n\nPara el desarrollo y depuración de la aplicación se ha utilizado vistual studio, también existe la posibilidad de ejecutar los proyectos desde línea de comandos.\n\nPara ejecutar el microservicio Customer.API desde la línea de comandos API (desde src):\n  ```\n  dotnet run -p Services/Customer/Customer.API\n  ```\n  En la URL http://localhost:5000 se puede acceder a la aplicacion\n\nEjecución toda la solución con docker dompose (desde src/)\n  ```\n  docker-compose -f docker-compose.yml -f docker-compose.override.yml up –build\n  ```\n  Las URLs de la aplicacion son las siguientes: \n  - UI: http://localhost:8080/\n  - admin-service: http://localhost:8889/wallboard\n\nEjecución suite tests (desde src/):\n```\ndocker-compose -f docker-compose-tests.yml -f docker-compose-tests.override.yml up –build\n```\n# Herramientas necesarias\n1. .NET Core 3.1 https://dotnet.microsoft.com/download\n2. Azure CLI  https://docs.microsoft.com/en-us/cli/azure/install-azure-cli\n3. Azure Functions Core Tools https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local\n4. Helm 3 https://github.com/helm/helm/releases\n5. Docker desktop https://www.docker.com/products/docker-desktop\n6. Visual code or visual studio 2019\n    - https://code.visualstudio.com/download\n    - https://visualstudio.microsoft.com/vs/community/ \n7. Type 0.4.0-alpha.20371.1 (dotnet tool install -g Microsoft.Tye --version 0.4.0-alpha.20371.1)\n\n# ASP.NET\nASP.NET es la extensión del framework .NET con herramientas y librerías  para construir aplicaciones y servicios web con .NET y C# para cualquier plataforma (Linux, Windows, macOS…) \n\n## ASP.NET Web Apps\nPermite el desarrollo de aplicaciones web basadas en HTML5, CSS y javascript. Estas aplicaciones son escalables, rápidas y seguras \n## ASP.NET Web APIs\nCon ASP.Net Web APIs se pueden desarrollar APIs de una manera sencilla  para diferentes tipos de clientes con un mismo lenguaje. \n\n# Testing\nUna cuestión importante a la hora de desarrollar una aplicación es incluir los test necesarios a fin de asegurarnos que la aplicación funciona correctamente. Dentro del ecosistema .NET podemos utilizar las siguientes librerías xUnit, moq y coverlet.\n- [xUnit](https://xunit.net/)\n- [Moq](https://github.com/Moq/moq4/wiki/Quickstart) \n- [Coverlet](https://github.com/coverlet-coverage/coverlet) \n# Persistencia - Entity Framework (EF)\n[Entity Framework](https://docs.microsoft.com/en-us/ef/) es un framework disponible para acceder a diferentes motores de bases de datos (sql y no sql): mysql, postgresql, mongo, firebird… \n\n# Feature toggle - Esquio\nLa librería [esquio](https://github.com/Xabaril/Esquio) Ha sido desarrollada por varios desarrolladores españoles y permite utilizar feature toggle en una aplicación .NET de manera rápida y sencilla así como en otros servicios como Azure devops.\n\n# ARM (Azure resource manager)\n[Azure resource manager (ARM)](https://docs.microsoft.com/en-us/azure/azure-resource-manager/) es la solución utilizada por Microsoft para implementar infraestructura como código para las soluciones que utilizan la plataforma Azure. Una plantilla ARM es un JSON (javascript object anotation) que define la infraestructura y configuración necesitaría para crear la infraestructura necesaria para ejecutar una o varias aplicaciones. \n\n# Azure functions\n[Azure functions](https://azure.microsoft.com/en-us/services/functions) permite ejecutar código .net, node, java, power shell o phyton a partir de un evento: Blob storage, Azure cosmos DB, Http, RabbitMQ o Azure queue storage sin necesidad de tener un servidor. Más información, [aqui](./docs/azure-functions.md#azure-functions)\n\n# Microservicios\nA día de hoy una de las arquitecturas más utilizadas a la hora de desarrollar aplicaciones en la nube es la arquitectura de microservicios. Se puede definir un microservicio  como un servicio pequeño y autónomo que interactúa  con otros microservicios. \nUno de los primeros stack de microservicios fue el stack de Netflix y fue adotado por Spring bajo el nombre [spring-cloud-netflix](https://spring.io/projects/spring-cloud-netflix). Está compuesto por los siguientes elementos:\n-\tconfig-server: servicio que externaliza la toda la configuración de los microservicios\n-\teureka: servicio para el registro de microservicios\n-\tzuul: servicio que actuala como api gateway y que actúa como punto de entrada \n-\thystrix: servicio para la gestión de errors utilizando el patron circuit breaker\n  \n[Steeltoe](https://steeltoe.io/) ofrece una serie de librerías cuyo objetivo es integrarse con los servicios Spring Cloud necesarios en una arquitectura de microservicios\n# Tye\n[Type](https://github.com/dotnet/tye) es un proyecto de código abierto y experimental, el objetivo de esta herramienta es el facilitar el desarrollo, testeo y despliegue de microservicios y aplicaciones distribuidas basadas en NetCore. Más información, [aqui](./docs/type.md#Tye)\n\n# Container instances (ACI)\n[Azure container instances](https://azure.microsoft.com/en-us/services/container-instances/) puede arrancar un contenedor en cuestión de segundos utilizando imágenes Linux o Windows desde docker hub o desde un registro de contenedores privado. El acceso a los contenedores puede realizarse a través de una dirección IP o un nombre de dominio, también se puede acceder a la consola del contenedor a fin de revisar o solucionar problemas durante el desarrollo. Más información, [aqui](./docs/aci.md#ACI)\n\n# AKS\n[Azure Kubernetes Service (AKS)](https://docs.microsoft.com/en-us/azure/aks/) facilita el despliegue de un clúster kubernetes como servicio en la nube de Azure reduciendo la complejidad de su administración y facilitando las tareas de mantenimiento.  Más información, [aqui](./docs/aks.md#AKS)\n\n# Integración y despliegue continuo\n[Azure pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) es el servicio cloud que compila, prueba y despliega de manera automática cualquier tipo de aplicación desarrollada en cualquier lenguaje. La definición de una pipeline se realiza en sintaxis yaml y esta versionada junto con el código fuente de la aplicación. https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack\n\n\n##  Build Status\n| Image | Status |\n| ------------- | ------------- |\n| Customer API | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/microservices/customer-api?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=20\u0026branchName=master) |\n| Kitchen API | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/microservices/kitchen-api?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=23\u0026branchName=master) |\n| Ordering API | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/microservices/ordering-api?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=24\u0026branchName=master) |\n| Resturant API | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/microservices/restaurant-api?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=25\u0026branchName=master) |\n| UI ASP.NET blazor | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/ui-aspnet-blazor?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=34\u0026branchName=master) |\n| Infra artefacts | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/infra%20artefacts?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=35\u0026branchName=master) |\n| Notificacion Azure funtions | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/Notification%20Azure%20Functions?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=29\u0026branchName=master) |\n| admin-service | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/Springcloud/admin-service?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=30\u0026branchName=master)\n| config-service | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/Springcloud/config-service?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=31\u0026branchName=master)|\n| eureka-service | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/Springcloud/eureka-service?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=32\u0026branchName=master) |\n| gateway-service | [![Build Status](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_apis/build/status/Springcloud/eureka-service?branchName=master)](https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack/_build/latest?definitionId=32\u0026branchName=master) |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercloudapps-projects%2Fdotnetfullmasterstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastercloudapps-projects%2Fdotnetfullmasterstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercloudapps-projects%2Fdotnetfullmasterstack/lists"}