Carta Clara: carta QR, administración y lectura de fotos con Gemini
Una carta QR con panel por restaurante y lectura de fotos mediante Gemini. Código abierto, edición manual y revisión antes de incorporar platos.
Diseña microservicios con IA en .NET usando Semantic Kernel y Azure OpenAI: patrones de arquitectura, seguridad, observabilidad, resiliencia, testing y escalabilidad.

Este tutorial cubre aspectos esenciales de Arquitectura de Microservicios con IA en aplicaciones .NET con Semantic Kernel y Azure OpenAI.
La implementación correcta de estos conceptos es crucial para aplicaciones de IA robustas y escalables.
// Ejemplo de implementación
public class ExampleService
{
private readonly Kernel _kernel;
private readonly ILogger<ExampleService> _logger;
public ExampleService(Kernel kernel, ILogger<ExampleService> logger)
{
_kernel = kernel;
_logger = logger;
}
public async Task<string> ProcessAsync(string input)
{
try
{
_logger.LogInformation("Procesando input: {Input}", input);
var function = _kernel.CreateFunctionFromPrompt(
"Procesa: {{\}}");
var result = await _kernel.InvokeAsync(function, new KernelArguments
{
["input"] = input
});
return result.GetValue<string>() ?? string.Empty;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error procesando input");
throw;
}
}
}
Configura los componentes necesarios en tu aplicación:
builder.Services.AddScoped<ExampleService>();
builder.Services.AddLogging();
Implementa la lógica específica para tu caso de uso:
var service = serviceProvider.GetRequiredService<ExampleService>();
var result = await service.ProcessAsync("ejemplo");
Console.WriteLine(result);
public interface IServiceFactory
{
ExampleService Create();
}
public class ServiceFactory : IServiceFactory
{
private readonly IServiceProvider _serviceProvider;
public ServiceFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public ExampleService Create()
{
return _serviceProvider.GetRequiredService<ExampleService>();
}
}
public interface IProcessingStrategy
{
Task<string> ProcessAsync(string input);
}
public class StandardStrategy : IProcessingStrategy
{
public async Task<string> ProcessAsync(string input)
{
// Implementación estándar
return await Task.FromResult(input);
}
}
public class AdvancedStrategy : IProcessingStrategy
{
public async Task<string> ProcessAsync(string input)
{
// Implementación avanzada
return await Task.FromResult(input.ToUpper());
}
}
using Xunit;
using Moq;
public class ExampleServiceTests
{
[Fact]
public async Task ProcessAsync_WithValidInput_ReturnsResult()
{
// Arrange
var mockKernel = new Mock<Kernel>();
var mockLogger = new Mock<ILogger<ExampleService>>();
var service = new ExampleService(mockKernel.Object, mockLogger.Object);
// Act
var result = await service.ProcessAsync("test");
// Assert
Assert.NotNull(result);
}
}
[Collection("Integration")]
public class ExampleServiceIntegrationTests
{
[Fact]
public async Task ProcessAsync_EndToEnd_Success()
{
// Configurar servicio real
var kernel = CreateRealKernel();
var logger = NullLogger<ExampleService>.Instance;
var service = new ExampleService(kernel, logger);
// Ejecutar
var result = await service.ProcessAsync("integration test");
// Verificar
Assert.NotEmpty(result);
}
private Kernel CreateRealKernel()
{
// Configuración real para tests de integración
return Kernel.CreateBuilder().Build();
}
}
La implementación correcta de estos conceptos es fundamental para aplicaciones de IA robustas y escalables. Sigue las mejores prácticas, implementa testing exhaustivo, y monitorea constantemente el rendimiento en producción.
Palabras clave: microservices, architecture, distributed systems, AI integration, .NET, C#, Semantic Kernel, Azure OpenAI, best practices