← Back to list

.NET Core 7 ve Dapr ile Zamanlanmış API Çağrıları

Mikro hizmetlerin oluşturulması ve yönetilmesi sürekli gelişen bir alan olup, burada devreye Dapr giriyor. Dapr, bulut veya kenar…

Ömür Uçum · 2023-06-15 01:31 · 7 claps · 2.4 min read
#dapr #net-core #cron
Open on Medium ↗
Wiki topics: 🔧 · Data Engineering 🎮 · Gaming

dapr ile .net core

dapr ile .net core

.NET Core 7 ve Dapr ile Zamanlanmış API Çağrıları

Mikro hizmetlerin oluşturulması ve yönetilmesi sürekli gelişen bir alan olup, burada devreye Dapr giriyor. Dapr, bulut veya kenar durumlarında çalışma yeteneğine sahip bir “portable, event-driven, runtime” sunan bir açık kaynaklı proje. Bu makalede, .NET Core 7 ve Dapr’ı kullanarak belirli aralıklarla API çağrılarının nasıl yapılabileceğini inceleyeceğiz.

Dapr’ı Kurma

İlk adımımız tabi ki de Dapr’ı sistemimize kurmak olacaktır. Makalenin konusu kurulum olmadığı için burada buna yer vermeyeceğim. Bunu Dapr’ın resmi dökümantasyonundaki kurulum rehberini takip ederek yapabilirsiniz: https://docs.dapr.io/getting-started/

Uygulamanın Başlatılması

Dapr'ın sisteminiz de kurulu olup olmadığını kontrol etmek için de terminal üzerinden dapr yazıp enter dediğiniz de aşağıdaki gibi bir ekran görmeniz gerekecektir.

terminal dapr 'enter’ sonucu

terminal dapr 'enter’ sonucu

Dapr’ın sistemimiz de kurulu olduğuna emin olduktan sonra ister yeni uygulama olsun ister daha önce çalıştığımız bir uygulama olsun dapr ile çalıştırmak için aşağıdaki kodu terminal üzerinden çalıştırmamız gerekmektedir. Tabi uygulama dizinin de çalıştırmamız gerektiğini de unutmamamız gerekmektedir.

Dapr ile uygulamamızı başlatabilmek için terminali açarak aşağıdaki kodu yazmamız gerekecektir.

dapr run --app-id UygulamaAdiniz --app-port 5000 -- dotnet run

Yukarıda ki kod satırı ile belirtilen parametreleri kısaca şu şekil de açıklayabiliriz;

— app-id => uygulama kimliği

— app-port => uygulamanın çalışacağı port numarası

Event Kaynağı Oluşturma

Dapr, event tabanlı bir çözüm olduğundan, belirli aralıklarla çalıştırılacak bir uygulama için bir event kaynağına ihtiyacımız var. Bu, Dapr’ın desteklediği çeşitli event kaynaklarından biri olabilir. Biz belirli aralıklarla çalışacak bir sistem geliştirmek istediğimizden spec tipini cron olarak oluşturacağız. Örnek timer.yaml dosyası aşağıdaki gibi olacaktır:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: timer
  namespace: default
spec:
  type: bindings.cron
  metadata:
  - name: schedule
    value: "*/1 * * * *"

Yukarıdaki yaml dosyası ile her 1dk’da metadata altında tanımlı olan name alanındaki isme bir post işlemi yapılacaktır. Burada dikkat edilmesi gereken en önemli konu controller dosyamız da post isteklerini kabul edecek ve adı timer olan bir route değerinin tanımlanmış olması gerekmektedir.

API Endpoint Oluşturma

Yaml dosyamızın içinde tanımladığımız ve Dapr’ın çağrılarını işleyeceğimiz endpoint’i oluşturarak işlemimizi tamamlıyoruz. Örnek endpoit aşağıdaki gibi olabilir;

[HttpPost("/timer")]
public IActionResult RunJob()
{
    // Yapılmasını istediğimiz işlemleri yapıyoruz
    return Ok();
}

Uygulamanın Çalıştırılması

Son olarak terminal üzerinden çalıştıracağımız bir kod satırı ile sistemin çalışmasını sağlayacağız.

dapr run --app-id UygulamaAdiniz --app-port 5000 --components-path Components -- dotnet run

İlk yazdığımız örnekden farklı olarak burada yer alan — components-path ile .net core uygulamamız içinde oluşturduğumuz “Components” klasörünün yerini belirtiyoruz. Dapr default ayarlarında kullanılacak olan yaml dosyalarını bu klasör içinde arar.

Artık Dapr, belirlediğiniz her dakika API endpointinize bir POST isteği gönderecektir. Bu özellik, genellikle belirli aralıklarla çalışması gereken bir işi veya düzenli olarak bir API’yi çağırmanız gereken senaryolar için kullanışlıdır.

Bu basit örnekle, .NET Core 7 ve Dapr ile event tabanlı uygulamalar oluşturmanın ne kadar kolay olduğunu gördük. Zamanlamalı API çağrıları gibi daha karmaşık senaryolar için Dapr’ın sağladığı bu çözümleri özelleştirebilir ve genişletebiliriz. Mikro hizmetlerinizi daha da geliştirmek ve etkinleştirmek için Dapr’ın sağladığı diğer özelliklere de göz atmayı unutmayın.

Dapr resmi sitesi için https://dapr.io/ adresini ziyaret edebilir dökümanlara ulaşmak için de https://docs.dapr.io/ adresini ziyaret edebilirsiniz.

Bir sonraki yazım da Kafka topiclerine subscribe olup mesajları okumayı, deadLetterTopic mantığını ve resiliency (dayanıklılık) örneğini yazacağım.

Sabırla okuduğunuz için teşekkür ederim…

Kısa bir düzenleme ekleme;

Github projesine buradan erişebilirsiniz


메타데이터
post_id
c5a8db112d5b
slug
net-core-7-ve-dapr-ile-zamanlanmış-api-çağrıları-c5a8db112d5b
url
https://medium.com/@omurucum/net-core-7-ve-dapr-ile-zamanlanm%C4%B1%C5%9F-api-%C3%A7a%C4%9Fr%C4%B1lar%C4%B1-c5a8db112d5b
canonical_url
https://medium.com/@omurucum/net-core-7-ve-dapr-ile-zamanlanm%C4%B1%C5%9F-api-%C3%A7a%C4%9Fr%C4%B1lar%C4%B1-c5a8db112d5b
author_url
https://medium.com/@omurucum
status
ok
fetched_at
2026-06-29 01:02:39