เห็นทาง Microsoft แนะนำ YARP มา สำหรับจัดการ API ต่าง ๆ
โดยที่ดูมานั้น เป้าหมายเพื่อสร้าง internal tool ที่ใช้งานภายในองค์กร
เนื่องจากพบว่าหลาย ๆ ทีมมักจะทำงานเดียวกันซ้ำ ๆ
จึงสร้าง YARP ขึ้นมาซึ่งเป็น proxy นั่นเอง
ดังนั้นมาดูกันว่าเป็นอย่างไรบ้าง
โดยที่ YARP นั้นสนับสนุน protocol ต่าง ๆ ดังนี้
- HTTP/ 1.1
- HTTP/ 2 สำหรับ gRPC
- HTTP 3
- WebSocket
สามารถ custom หรือ เพิ่มความสามารถต่าง ๆ
เข้าไปได้ด้วยการเขียน code ด้วย C#
และใช้งานได้กับ .NET 6 ขึ้นไป
มาเป็น dependnency ที่เพิ่มเข้า .NET project ได้เลย
Reverse proxy นั้นทำหน้าที่ forward request จาก client
ไปยัง server ที่เหมาะสม ตามที่กำหนดเอาไว้
ช่วยทำการซ่อน implementation หรือ server ไว้จาก client นั่นเอง
ความสามารถพื้นฐานของ reverse proxy ประกอบไปด้วย
- Load balancing
- Caching
- Security
- SSL termination
แสดงดังรูป
ทำการติดตั้ง dependency หรือ package ได้เลย
[code] $dotnet add package Yarp.ReverseProxy --version 2.1.0 [/code]จากนั้นเขียน code เล็กน้อยสำหรับ reverse proxy
[gist id="00de7da8cf124931da75d9607acb7f53" file="1.cs"]สามารถทำการ config พวก route, transform ในไฟล์ appsettings.json ได้เลยดังนี้
[gist id="00de7da8cf124931da75d9607acb7f53" file="appsettings.json"]เราสามารถเพิ่มความสามารถต่าง ๆ เข้าไปได้อีก
หรือใช้สิ่งที่มีให้ใช้งานได้เลย เช่น
- Request/response transformation
- Distributed tracing + OpenTelemetry
- Authentication
- Rate limit
ลองใช้งานกันดูครับ
Reference Websites