.Net Core ile Ocelot Api Gateway
Bugün sizlerle .Net Core 2.2 ve Ocelot kullanarak ufak bir örnek yapacağız. Öncelikle API Gateway nedir diyorsanız buradan ilgili posta ulaşabilirsiniz. Bu bana yetmedi biraz daha incelemek istiyorum diyenler burayı inceleyebilir.
Ocelot nedir?
Ocelot open-source bir .Net Core Api Gateway dir. Gatewayler bize kısaca,
Routing — Yönlendirme,
Authorisation — Yetki,
Caching — Önbellekten yararlanarak performans artışı ,
Logging– Loglama mekanizması ile kayıt tutma,
Configuration — Merkezi konfigurasyonlar,
Rate Limiting — Trafik hızının kontrolü,
Centralized Error Management — Merkezi hata yönetimi gibi alanlarda kolaylıklar sağlamaktadır.

Microsoft’un sitesinde de görebileceğiniz gibi eShopOnContainers mimarisinde ilgili mikro servislere yönlendirmeler için Ocelot’dan faydalanılmıştır.
Bugünkü senaryomuzda gelen isteği Ocelot üzerinden (API Gateway) karşılayacak ve ilgili servise yönlendireceğiz. Yani bir noktadan istek yapacağız Gateway arka tarafta ilgili servise yönlendirme yaparak bize response dönecek.
Hadi başlayalım;
Öncelikle Vs Code ve .Net Core Cli kullanacağım. Dosya yapısı aşağıdaki gibi olacak şekilde 3 adet .net core web api projesi oluşturacağım.
Ocelot-Gateway-with-.Net-Core
-TeamApi
-SportApi
-ApiGateway
mkdir Ocelot-Gateway-with-.Net-Core
(Bulunduğum dizinde Ocelot-Gateway-with-.Net-Core adında bir dosya oluşturuyorum. Benim örneğimi kapsayacak ana klasörüm olacak.)
cd Ocelot-Gateway-with-.Net-Core
(Oluşturduğum dosyanın içerisine giriyorum.)
dotnet new webapi -o TeamApi
( Ocelot-Gateway-with-.Net-Core dosyası içerinde TeamAPi adlı bir klasör içerisine aynı isimde bir web api oluşturuyorum. -o parametresi buna yarıyor)
dotnet new webapi -o SportApi
dotnet new webapi -o ApiGateway
Şimdi TeamApi ve SportApi içerisine girerek örnek kayıtlar döndüren endpoint ile beraber uygulamarın çalışcağı portları ayarlayalım.
TeamApi
SportApi
Şimdi ApiGateway projemize geçerek aşağıdaki komut ile ilgili nuget paketini yükleyelim. 13.5.2 versiyonunu kuracağım.
ApiGateway
Install-Package Ocelot
(Vs code için ctrl+shift+p ile Nuget Package Manager (eklenti) add seçeneği de kullanılabilir,. Visual Studio için ise Manage Nuget Package den yararlanılabilir yada “dotnet add package Ocelot” komutu kullanılabilir.)
dotnet restore
ApiGateway projemize ocelot.json dosyasını ekleyelim. Yönlendirmeyi buradaki konfigürasyona göre yapacağız. Konfigürasyon ayarlarını yapmadan önce Program.cs ve Startup.cs değişikliklerini yapalım.
Şimdi sıra geldi ocelot.json dosyamızın konfigürasyonuna…
Burada;
GlobalConfiguration kısmında gatewayin urli,
DownstreamPathTemplate ilgili servisteki route,
DownstreamHostAndPorts ilgili servisin host bilgileri,
UpstreamPathTemplate kullanıcının Gateway üzerinden geleceği route belirtilir.
Evet arkadaşlar örneğimizi tamamladık. Şimdi 3 uygulamamızı da çalıştırarak , postman üzerinden test edelim.
dotnet run
(Uygulamamızı çalıştırmak için kullanıyoruz.)

Umarım herkes için faydalı olmuştur. Hepinize iyi tatiller.
Github URL => https://github.com/EnesAys/Ocelot-Gateway-with-.Net-Core
Ocelot Repo Link => https://github.com/ThreeMammals/Ocelot
Kaynak
https://medium.com/devopsturkiye/net-core-microservice-api-gateway-9c28f988bc52
https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html
https://docs.microsoft.com/tr-tr/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot