.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.

Image for post
Image for post
eShopOnContainers architecture with API Gateways

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

(Bulunduğum dizinde Ocelot-Gateway-with-.Net-Core adında bir dosya oluşturuyorum. Benim örneğimi kapsayacak ana klasörüm olacak.)

(Oluşturduğum dosyanın içerisine giriyorum.)

( 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)

Ş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

(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.)

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.

(Uygulamamızı çalıştırmak için kullanıyoruz.)

Image for post
Image for post
Ocelot Gateway ve NetCore

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

Software Developer at Sosyopix

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store