it

C# Blazor Pod Scheduling — จัดการ Blazor App บน

c blazor pod scheduling
C# Blazor Pod Scheduling — จัดการ Blazor App บน

Blazor Pod Scheduling

C# Blazor Pod Scheduling — จัดการ Blazor App บน

C# Blazor Pod Scheduling Kubernetes Docker SignalR WebSocket Sticky Session HPA Health Check .NET 8 Razor Components

AspectBlazor ServerBlazor WASMBlazor United (.NET 8)
RenderServer (SignalR)Browser (WASM)ทั้งสอง (per component)
Sticky Sessionต้องใช้ไม่ต้องขึ้นกับ Component
Image Size80-120MB20-30MB (Nginx)80-120MB
ResourceCPU+RAM มากน้อย (Static)ปานกลาง
Scaleซับซ้อน (Session)ง่าย (Stateless)ปานกลาง
Offlineไม่ได้ได้บางส่วน

Docker Configuration

# === Blazor Docker Setup === # Dockerfile (Blazor Server) # FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build # WORKDIR /src # COPY *.csproj ./ # RUN dotnet restore # COPY . . # RUN dotnet publish -c Release -o /app/publish # # FROM mcr.microsoft.com/dotnet/aspnet:8.0 # WORKDIR /app # COPY --from=build /app/publish . # ENV ASPNETCORE_URLS=http://+:8080 # ENV ASPNETCORE_ENVIRONMENT=Production # EXPOSE 8080 # HEALTHCHECK --interval=30s --timeout=3s \ # CMD curl -f http://localhost:8080/health || exit 1 # ENTRYPOINT ["dotnet", "BlazorApp.dll"] # Program.cs Health Checks # var builder = WebApplication.CreateBuilder(args); # builder.Services.AddHealthChecks() # .AddDbContextCheck("database") # .AddRedis(builder.Configuration["Redis:Connection"], "redis") # .AddUrlGroup(new Uri("https://api.example.com/health"), "external-api"); # # var app = builder.Build(); # app.MapHealthChecks("/health"); # app.MapHealthChecks("/health/ready", new HealthCheckOptions { # Predicate = check => check.Tags.Contains("ready") # }); from dataclasses import dataclass @dataclass class DockerImage: variant: str base_image: str size: str use_case: str images = [ DockerImage("Blazor Server", "mcr.microsoft.com/dotnet/aspnet:8.0", "80-120MB", "Server-side rendering SignalR WebSocket"), DockerImage("Blazor WASM (Nginx)", "nginx:alpine", "20-30MB", "Client-side WASM Static Files"), DockerImage("Blazor United", "mcr.microsoft.com/dotnet/aspnet:8.0", "80-120MB", "Mixed render modes Server + WASM"), DockerImage("SDK (Build Stage)", "mcr.microsoft.com/dotnet/sdk:8.0", "~700MB (build only)", "Compile Publish ไม่อยู่ใน Final"), ] print("=== Docker Images ===") for d in images: print(f" [{d.variant}] {d.base_image}") print(f" Size: {d.size} | Use: {d.use_case}")

เคล็ดลับ

C# Blazor Pod Scheduling — จัดการ Blazor App บน
  • SignalR: ใช้ Redis Backplane สำหรับ Blazor Server Multi-pod
  • Sticky: ตั้ง Cookie Affinity สำหรับ Ingress WebSocket
  • WASM: ใช้ Brotli Compression ลด WASM Download Size 60%
  • Health: ตั้ง Health Check ตรวจ DB Redis External API
  • .NET 8: ใช้ Blazor United เลือก Render Mode ต่อ Component

Blazor คืออะไร

Web Framework C# Microsoft Razor Components Server SignalR WASM WebAssembly United .NET 8 NuGet Entity Framework Interactive UI

เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: CircleCI Orbs Low Code No Code

อ่านเพิ่ม: Container Orchestration นอกจาก Kubernetes มีอะไรอีก? Docker · อ่านเพิ่ม: Kubernetes ขั้นสูง สอน Helm Charts, Operators, Service Mesh · อ่านเพิ่ม: Kubernetes Operators และ CRD คืออะไร? สอนสร้าง Custom Contro

Docker ตั้งค่าอย่างไร

Multi-stage dotnet/sdk dotnet/aspnet nginx:alpine dotnet publish Release Health Check ENTRYPOINT 80-120MB Docker Compose SQL Server Redis

แนะนำเพิ่มเติม — ติดตาม XM Signal

เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง AWS EventBridge DNS Management

Kubernetes Deploy อย่างไร

Deployment Replicas Ingress Cookie Affinity SignalR WebSocket Timeout HPA Service sessionAffinity ConfigMap Secret Liveness Readiness Probe

เนื้อหาเกี่ยวข้อง — Azure Container Apps API Gateway Pattern

Health Check ทำอย่างไร

ASP.NET Core AddHealthChecks DbContext Redis URL Disk MapHealthChecks /health /health/ready Liveness Readiness Startup Probe UI Dashboard

แนะนำเพิ่มเติม — อ่านเพิ่มเติมที่ SiamCafeBook

สรุป

C# Blazor Pod Scheduling Kubernetes Docker SignalR Sticky Session HPA Health Check .NET 8 WASM Redis Backplane Ingress Production

เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ Lit Element Remote Work Setup

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง